@paraswap/dex-lib 2.19.0 → 2.19.1-swaap-v2.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.
Files changed (59) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/build/abi/swaap-v2/vault.json +918 -0
  9. package/build/config.js +4 -2
  10. package/build/config.js.map +1 -1
  11. package/build/dex/aave-v3/tokens/arbitrum.json +50 -0
  12. package/build/dex/aave-v3/tokens/avalanche.json +74 -0
  13. package/build/dex/aave-v3/tokens/fantom.json +62 -0
  14. package/build/dex/aave-v3/tokens/optimism.json +50 -0
  15. package/build/dex/aave-v3/tokens/polygon.json +116 -0
  16. package/build/dex/index.js +2 -0
  17. package/build/dex/index.js.map +1 -1
  18. package/build/dex/pancakeswap-v3/types.d.ts +14 -0
  19. package/build/dex/pancakeswap-v3/types.js +3 -0
  20. package/build/dex/pancakeswap-v3/types.js.map +1 -0
  21. package/build/dex/swaap-v2/config.d.ts +4 -0
  22. package/build/dex/swaap-v2/config.js +19 -0
  23. package/build/dex/swaap-v2/config.js.map +1 -0
  24. package/build/dex/swaap-v2/constants.d.ts +13 -0
  25. package/build/dex/swaap-v2/constants.js +17 -0
  26. package/build/dex/swaap-v2/constants.js.map +1 -0
  27. package/build/dex/swaap-v2/rate-fetcher.d.ts +16 -0
  28. package/build/dex/swaap-v2/rate-fetcher.js +101 -0
  29. package/build/dex/swaap-v2/rate-fetcher.js.map +1 -0
  30. package/build/dex/swaap-v2/swaap-v2.d.ts +61 -0
  31. package/build/dex/swaap-v2/swaap-v2.js +550 -0
  32. package/build/dex/swaap-v2/swaap-v2.js.map +1 -0
  33. package/build/dex/swaap-v2/types.d.ts +76 -0
  34. package/build/dex/swaap-v2/types.js +7 -0
  35. package/build/dex/swaap-v2/types.js.map +1 -0
  36. package/build/dex/swaap-v2/utils.d.ts +7 -0
  37. package/build/dex/swaap-v2/utils.js +34 -0
  38. package/build/dex/swaap-v2/utils.js.map +1 -0
  39. package/build/dex/swaap-v2/validators.d.ts +6 -0
  40. package/build/dex/swaap-v2/validators.js +125 -0
  41. package/build/dex/swaap-v2/validators.js.map +1 -0
  42. package/build/types.d.ts +1 -0
  43. package/package.json +1 -1
  44. package/src/abi/swaap-v2/vault.json +918 -0
  45. package/src/config.ts +5 -2
  46. package/src/dex/index.ts +2 -0
  47. package/src/dex/swaap-v2/config.ts +19 -0
  48. package/src/dex/swaap-v2/constants.ts +25 -0
  49. package/src/dex/swaap-v2/rate-fetcher.ts +165 -0
  50. package/src/dex/swaap-v2/swaap-v2-e2e.test.ts +199 -0
  51. package/src/dex/swaap-v2/swaap-v2-integration.test.ts +145 -0
  52. package/src/dex/swaap-v2/swaap-v2.ts +871 -0
  53. package/src/dex/swaap-v2/types.ts +88 -0
  54. package/src/dex/swaap-v2/utils.ts +44 -0
  55. package/src/dex/swaap-v2/validators.ts +130 -0
  56. package/src/types.ts +1 -0
  57. package/tests/constants-e2e.ts +1 -1
  58. package/tests/utils-e2e.ts +5 -0
  59. package/build/abi/DirectSwap.json +0 -1008
@@ -0,0 +1,550 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.SwaapV2 = void 0;
30
+ const constants_1 = require("../../constants");
31
+ const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
32
+ const utils_1 = require("../../utils");
33
+ const types_1 = require("./types");
34
+ const simple_exchange_1 = require("../simple-exchange");
35
+ const config_1 = require("./config");
36
+ const rate_fetcher_1 = require("./rate-fetcher");
37
+ const vault_json_1 = __importDefault(require("../../abi/swaap-v2/vault.json"));
38
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
39
+ const bignumber_constants_1 = require("../../bignumber-constants");
40
+ const utils_2 = require("ethers/lib/utils");
41
+ const ts_essentials_1 = require("ts-essentials");
42
+ const constants_2 = require("./constants");
43
+ const utils_3 = require("./utils");
44
+ const validators_1 = require("../../lib/validators");
45
+ const validators_2 = require("./validators");
46
+ const types_2 = require("../generic-rfq/types");
47
+ const BLACKLISTED = 'blacklisted';
48
+ class SwaapV2 extends simple_exchange_1.SimpleExchange {
49
+ constructor(network, dexKey, dexHelper, adapters = config_1.Adapters[network] || {}, routerInterface = new utils_2.Interface(vault_json_1.default)) {
50
+ super(dexHelper, dexKey);
51
+ this.network = network;
52
+ this.dexKey = dexKey;
53
+ this.dexHelper = dexHelper;
54
+ this.adapters = adapters;
55
+ this.routerInterface = routerInterface;
56
+ this.isStatePollingDex = true;
57
+ this.hasConstantPriceLargeAmounts = false;
58
+ this.needWrapNative = false;
59
+ this.isFeeOnTransferSupported = false;
60
+ this.tokensMap = {};
61
+ this.computeMaxLiquidity = (levels, tokenAddress) => {
62
+ if (tokenAddress === levels.base) {
63
+ return ((levels.asks[levels.asks.length - 1]?.level ?? 0) *
64
+ levels.asks[0]?.price);
65
+ }
66
+ return ((levels.asks[levels.bids.length - 1]?.level ?? 0) * levels.asks[0]?.price);
67
+ };
68
+ this.logger = dexHelper.getLogger(dexKey);
69
+ const token = dexHelper.config.data.swaapV2AuthToken;
70
+ (0, ts_essentials_1.assert)(token !== undefined, 'SwaapV2 auth token is not specified with env variable');
71
+ this.swaapV2AuthToken = token;
72
+ this.rateFetcher = new rate_fetcher_1.RateFetcher(this.dexHelper, this.dexKey, this.logger, {
73
+ rateConfig: {
74
+ pricesIntervalMs: constants_2.SWAAP_RFQ_API_PRICES_POLLING_INTERVAL_MS,
75
+ pricesReqParams: this.getPriceLevelsReqParams(),
76
+ pricesCacheTTLSecs: constants_2.SWAAP_RFQ_PRICES_CACHES_TTL_S,
77
+ },
78
+ });
79
+ }
80
+ async initializePricing(blockNumber) {
81
+ const { data } = await this.dexHelper.httpRequest.request(this.getTokensReqParams());
82
+ const tokensResp = (0, validators_1.validateAndCast)(data, validators_2.getTokensResponseValidator);
83
+ this.tokensMap = Object.keys(tokensResp.tokens).reduce((acc, key) => {
84
+ acc[key.toLowerCase()] = tokensResp.tokens[key];
85
+ return acc;
86
+ }, {});
87
+ if (!this.dexHelper.config.isSlave) {
88
+ await this.rateFetcher.start();
89
+ }
90
+ return;
91
+ }
92
+ getAdapters(side) {
93
+ return this.adapters[side] ? this.adapters[side] : null;
94
+ }
95
+ async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
96
+ const normalizedSrcToken = this.normalizeToken(srcToken);
97
+ const normalizedDestToken = this.normalizeToken(destToken);
98
+ if (normalizedSrcToken.address === normalizedDestToken.address) {
99
+ return [];
100
+ }
101
+ const poolIdentifier = (0, utils_3.getPoolIdentifier)(this.dexKey, normalizedSrcToken.address, normalizedDestToken.address);
102
+ const levels = await this.getCachedLevels();
103
+ if (levels === null) {
104
+ return [];
105
+ }
106
+ return Object.keys(levels)
107
+ .map((pair) => {
108
+ return (0, utils_3.getPoolIdentifier)(this.dexKey, levels[pair].base, levels[pair].quote);
109
+ })
110
+ .filter((pi) => pi === poolIdentifier);
111
+ }
112
+ computePricesFromLevelsBids(amounts, asksAndBids, srcToken, destToken, side) {
113
+ let levels = [];
114
+ if (side === constants_1.SwapSide.BUY) {
115
+ if (destToken.address === asksAndBids.base) {
116
+ levels = asksAndBids.asks;
117
+ }
118
+ else {
119
+ levels = this.invertPrices(asksAndBids.bids);
120
+ }
121
+ }
122
+ else {
123
+ if (srcToken.address === asksAndBids.base) {
124
+ levels = asksAndBids.bids;
125
+ }
126
+ else {
127
+ levels = this.invertPrices(asksAndBids.asks);
128
+ }
129
+ }
130
+ return this.computeLevelsQuote(amounts, levels, srcToken, destToken, side);
131
+ }
132
+ inversePrice(priceLevel) {
133
+ return {
134
+ level: priceLevel.level * priceLevel.price,
135
+ price: 1 / priceLevel.price,
136
+ };
137
+ }
138
+ invertPrices(levels) {
139
+ return levels.map(pl => this.inversePrice(pl));
140
+ }
141
+ computeLevelsQuote(amounts, levels, srcToken, destToken, side) {
142
+ const size = levels.length;
143
+ if (size === 0) {
144
+ return amounts.map(_ => BigInt(0));
145
+ }
146
+ return amounts.map((amount) => {
147
+ if (amount.isZero() || amount.lt((0, bignumber_js_1.default)(levels[0].level))) {
148
+ return BigInt(0);
149
+ }
150
+ let i = 0;
151
+ let output = bignumber_constants_1.BN_0;
152
+ let previousLevel = bignumber_constants_1.BN_0;
153
+ let remaininig = (0, bignumber_js_1.default)(amount);
154
+ let enoughLiquidity = false;
155
+ while (i < size) {
156
+ const levelDelta = (0, bignumber_js_1.default)(levels[i].level).minus(previousLevel);
157
+ if (levelDelta.lte(remaininig)) {
158
+ output = output.plus(levelDelta.times(levels[i].price));
159
+ remaininig = remaininig.minus(levelDelta);
160
+ previousLevel = (0, bignumber_js_1.default)(levels[i].level);
161
+ i += 1;
162
+ }
163
+ else {
164
+ output = output.plus(remaininig.times(levels[i].price));
165
+ enoughLiquidity = true;
166
+ break;
167
+ }
168
+ }
169
+ if (enoughLiquidity) {
170
+ return BigInt(output
171
+ .multipliedBy((0, bignumber_constants_1.getBigNumberPow)(side === constants_1.SwapSide.BUY ? srcToken.decimals : destToken.decimals))
172
+ .toFixed(0));
173
+ }
174
+ return BigInt(0); // not enough liquidity
175
+ });
176
+ }
177
+ async getCachedLevels() {
178
+ const cachedLevels = await this.dexHelper.cache.get(this.dexKey, this.network, (0, utils_3.getPriceLevelsCacheKey)(this.dexKey));
179
+ if (cachedLevels) {
180
+ return JSON.parse(cachedLevels);
181
+ }
182
+ return null;
183
+ }
184
+ normalizeToken(token) {
185
+ return {
186
+ address: (0, utils_3.normalizeTokenAddress)(token.address),
187
+ decimals: token.decimals,
188
+ };
189
+ }
190
+ async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
191
+ try {
192
+ if (await this.isRestricted()) {
193
+ return null;
194
+ }
195
+ const normalizedSrcToken = this.normalizeToken(srcToken);
196
+ const normalizedDestToken = this.normalizeToken(destToken);
197
+ const requestedPoolIdentifier = (0, utils_3.getPoolIdentifier)(this.dexKey, normalizedSrcToken.address, normalizedDestToken.address);
198
+ if (normalizedSrcToken.address === normalizedDestToken.address) {
199
+ return null;
200
+ }
201
+ const pools = limitPools ??
202
+ (await this.getPoolIdentifiers(srcToken, destToken, side, blockNumber));
203
+ const levels = await this.getCachedLevels();
204
+ if (levels === null) {
205
+ return null;
206
+ }
207
+ const poolIdentifier = (0, utils_3.getPoolIdentifier)(this.dexKey, normalizedSrcToken.address, normalizedDestToken.address);
208
+ const levelEntries = Object.keys(levels)
209
+ .map((pair) => {
210
+ if (pools.includes(poolIdentifier)) {
211
+ return levels[pair];
212
+ }
213
+ return undefined;
214
+ })
215
+ .filter((o) => o !== undefined);
216
+ const unitVolume = (0, bignumber_constants_1.getBigNumberPow)((side === constants_1.SwapSide.SELL ? normalizedSrcToken : normalizedDestToken)
217
+ .decimals);
218
+ const amountsFloat = amounts.map(a => new bignumber_js_1.default(a.toString()).dividedBy(unitVolume));
219
+ const prices = levelEntries.map((askAndBids) => {
220
+ const unitPrice = this.computePricesFromLevelsBids([unitVolume], askAndBids, normalizedSrcToken, normalizedDestToken, side)[0];
221
+ const prices = this.computePricesFromLevelsBids(amountsFloat, askAndBids, normalizedSrcToken, normalizedDestToken, side);
222
+ return {
223
+ gasCost: constants_2.GAS_COST_ESTIMATION,
224
+ exchange: this.dexKey,
225
+ data: {},
226
+ prices,
227
+ unit: unitPrice,
228
+ poolIdentifier: requestedPoolIdentifier,
229
+ };
230
+ });
231
+ return prices;
232
+ }
233
+ catch (e) {
234
+ this.logger.error(`Error_getPrices ${srcToken}, ${destToken}, ${side}:`, e);
235
+ return null;
236
+ }
237
+ }
238
+ getBaseToken(poolIdentifier) {
239
+ return poolIdentifier.split('_')[1];
240
+ }
241
+ getLevels(askAndBids, side, poolIdentifier) {
242
+ const baseToken = this.getBaseToken(poolIdentifier);
243
+ if (side === constants_1.SwapSide.SELL) {
244
+ return askAndBids.asks;
245
+ }
246
+ return askAndBids.asks;
247
+ }
248
+ async preProcessTransaction(optimalSwapExchange, srcToken, destToken, side, options) {
249
+ if (await this.isRestricted()) {
250
+ this.logger.warn(`${this.dexKey}-${this.network}: protocol is restricted.`);
251
+ throw new Error(`${this.dexKey}-${this.network}: protocol is restricted`);
252
+ }
253
+ if (await this.isBlacklisted(options.txOrigin)) {
254
+ this.logger.warn(`${this.dexKey}-${this.network}: blacklisted TX Origin address '${options.txOrigin}' trying to build a transaction. Bailing...`);
255
+ throw new Error(`${this.dexKey}-${this.network}: user=${options.txOrigin.toLowerCase()} is blacklisted`);
256
+ }
257
+ const isSell = side === constants_1.SwapSide.SELL;
258
+ const normalizedSrcToken = this.normalizeToken(srcToken);
259
+ const normalizedDestToken = this.normalizeToken(destToken);
260
+ const tolerance = (options.slippageFactor > bignumber_constants_1.BN_1
261
+ ? options.slippageFactor.minus(bignumber_constants_1.BN_1)
262
+ : bignumber_constants_1.BN_1.minus(options.slippageFactor)).toNumber();
263
+ try {
264
+ const quote = await this.rateFetcher.getQuote(this.network, normalizedSrcToken, normalizedDestToken, isSell ? optimalSwapExchange.srcAmount : optimalSwapExchange.destAmount, isSell ? 1 : 2, options.txOrigin, this.augustusAddress, tolerance, this.getQuoteReqParams());
265
+ if (!quote.success) {
266
+ const message = `${this.dexKey}-${this.network}: Failed to fetch RFQ for ${(0, utils_3.getPairName)(normalizedSrcToken.address, normalizedDestToken.address)}: ${JSON.stringify(quote)}`;
267
+ this.logger.warn(message);
268
+ throw new types_1.SwaapV2QuoteError(message);
269
+ }
270
+ else if (!quote.calldata) {
271
+ const message = `${this.dexKey}-${this.network}: Failed to fetch RFQ for ${(0, utils_3.getPairName)(normalizedSrcToken.address, normalizedDestToken.address)}. Missing quote data`;
272
+ this.logger.warn(message);
273
+ throw new types_1.SwaapV2QuoteError(message);
274
+ }
275
+ else if (!quote.router) {
276
+ const message = `${this.dexKey}-${this.network}: Failed to fetch RFQ for ${(0, utils_3.getPairName)(normalizedSrcToken.address, normalizedDestToken.address)}. Missing router address`;
277
+ this.logger.warn(message);
278
+ throw new types_1.SwaapV2QuoteError(message);
279
+ }
280
+ const srcAmount = BigInt(optimalSwapExchange.srcAmount);
281
+ const destAmount = BigInt(optimalSwapExchange.destAmount);
282
+ const quoteTokenAmount = BigInt(quote.amount);
283
+ const slippageFactor = options.slippageFactor;
284
+ if (side === constants_1.SwapSide.SELL) {
285
+ if (quoteTokenAmount <
286
+ BigInt(new bignumber_js_1.default(destAmount.toString())
287
+ .times(slippageFactor)
288
+ .toFixed(0))) {
289
+ const message = `${this.dexKey}-${this.network}: too much slippage on quote ${side} quoteTokenAmount ${quoteTokenAmount} / destAmount ${destAmount} < ${slippageFactor}`;
290
+ this.logger.warn(message);
291
+ throw new types_2.SlippageCheckError(message);
292
+ }
293
+ }
294
+ else {
295
+ if (quoteTokenAmount >
296
+ BigInt(slippageFactor.times(srcAmount.toString()).toFixed(0))) {
297
+ const message = `${this.dexKey}-${this.network}: too much slippage on quote ${side} baseTokenAmount ${srcAmount} / srcAmount ${srcAmount} > ${slippageFactor.toFixed()}`;
298
+ this.logger.warn(message);
299
+ throw new types_2.SlippageCheckError(message);
300
+ }
301
+ }
302
+ return [
303
+ {
304
+ ...optimalSwapExchange,
305
+ data: {
306
+ router: quote.router,
307
+ callData: quote.calldata,
308
+ },
309
+ },
310
+ { deadline: BigInt((0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)()) },
311
+ ];
312
+ }
313
+ catch (e) {
314
+ if (e instanceof Error &&
315
+ e.message.endsWith('Request failed with status code 403')) {
316
+ await this.setBlacklist(options.txOrigin);
317
+ this.logger.warn(`${this.dexKey}-${this.network}: Encountered restricted user=${options.txOrigin}. Adding to local blacklist cache`);
318
+ }
319
+ else {
320
+ await this.restrict();
321
+ }
322
+ throw e;
323
+ }
324
+ }
325
+ async restrict(ttl = constants_2.SWAAP_RESTRICT_TTL_S) {
326
+ await this.dexHelper.cache.setex(this.dexKey, this.network, constants_2.SWAAP_RESTRICTED_CACHE_KEY, ttl, 'true');
327
+ return true;
328
+ }
329
+ async isRestricted() {
330
+ const result = await this.dexHelper.cache.get(this.dexKey, this.network, constants_2.SWAAP_RESTRICTED_CACHE_KEY);
331
+ return result === 'true';
332
+ }
333
+ async isBlacklisted(txOrigin) {
334
+ const result = await this.dexHelper.cache.get(this.dexKey, this.network, this.getBlackListKey(txOrigin));
335
+ return result === BLACKLISTED;
336
+ }
337
+ getBlackListKey(address) {
338
+ return `blacklist_${address}`.toLowerCase();
339
+ }
340
+ async setBlacklist(txOrigin, ttl = constants_2.SWAAP_BLACKLIST_TTL_S) {
341
+ await this.dexHelper.cache.setex(this.dexKey, this.network, this.getBlackListKey(txOrigin), ttl, BLACKLISTED);
342
+ return true;
343
+ }
344
+ // Returns estimated gas cost of calldata for this DEX in multiSwap
345
+ getCalldataGasCost(poolPrices) {
346
+ return (CALLDATA_GAS_COST.DEX_OVERHEAD +
347
+ CALLDATA_GAS_COST.LENGTH_LARGE +
348
+ // ParentStruct header
349
+ CALLDATA_GAS_COST.OFFSET_SMALL +
350
+ // ParentStruct -> swaps[] header
351
+ CALLDATA_GAS_COST.OFFSET_LARGE +
352
+ // ParentStruct -> assets[] header
353
+ CALLDATA_GAS_COST.OFFSET_LARGE +
354
+ // ParentStruct -> funds
355
+ CALLDATA_GAS_COST.ADDRESS +
356
+ CALLDATA_GAS_COST.BOOL +
357
+ CALLDATA_GAS_COST.ADDRESS +
358
+ CALLDATA_GAS_COST.BOOL +
359
+ // ParentStruct -> limits[] header
360
+ CALLDATA_GAS_COST.OFFSET_LARGE +
361
+ // ParentStruct -> deadline
362
+ CALLDATA_GAS_COST.TIMESTAMP +
363
+ // ParentStruct -> swaps[]
364
+ CALLDATA_GAS_COST.LENGTH_SMALL +
365
+ // ParentStruct -> swaps[0] header
366
+ CALLDATA_GAS_COST.OFFSET_SMALL +
367
+ // ParentStruct -> swaps[0] -> poolId
368
+ CALLDATA_GAS_COST.FULL_WORD +
369
+ // ParentStruct -> swaps[0] -> assetInIndex
370
+ CALLDATA_GAS_COST.INDEX +
371
+ // ParentStruct -> swaps[0] -> assetOutIndex
372
+ CALLDATA_GAS_COST.INDEX +
373
+ // ParentStruct -> swaps[0] -> amount
374
+ CALLDATA_GAS_COST.AMOUNT +
375
+ // ParentStruct -> swaps[0] -> userData header
376
+ CALLDATA_GAS_COST.OFFSET_SMALL +
377
+ // ParentStruct -> swaps[0] -> userData
378
+ CALLDATA_GAS_COST.ZERO +
379
+ // ParentStruct -> assets[]
380
+ CALLDATA_GAS_COST.LENGTH_SMALL +
381
+ // ParentStruct -> assets[0:2]
382
+ CALLDATA_GAS_COST.ADDRESS * 2 +
383
+ // ParentStruct -> limits[]
384
+ CALLDATA_GAS_COST.LENGTH_SMALL +
385
+ // ParentStruct -> limits[0:2]
386
+ CALLDATA_GAS_COST.FULL_WORD * 2 +
387
+ // Bool -> IsBatchSwap
388
+ CALLDATA_GAS_COST.BOOL);
389
+ }
390
+ getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
391
+ const { router, callData } = data;
392
+ (0, ts_essentials_1.assert)(router !== undefined, `${this.dexKey}-${this.network}: router undefined`);
393
+ (0, ts_essentials_1.assert)(callData !== undefined, `${this.dexKey}-${this.network}: callData undefined`);
394
+ let payload;
395
+ const truncatedCalldata = '0x' + callData.slice(10); // droping the function selector
396
+ const isBatchSwap = callData.slice(0, 10) === constants_2.BATCH_SWAP_SELECTOR;
397
+ if (isBatchSwap) {
398
+ const batchswapAbi = vault_json_1.default.filter(abi => abi.name === 'batchSwap');
399
+ const callDataStruct = this.abiCoder.decodeParameters(batchswapAbi[0].inputs, truncatedCalldata);
400
+ const callerSlots = Array(callDataStruct.swaps.length).fill(160);
401
+ payload = this.abiCoder.encodeParameters([
402
+ 'bool',
403
+ 'uint256[]',
404
+ {
405
+ ParentStruct: {
406
+ 'swaps[]': {
407
+ poolId: 'bytes32',
408
+ assetInIndex: 'uint256',
409
+ assetOutIndex: 'uint256',
410
+ amount: 'uint256',
411
+ userData: 'bytes',
412
+ },
413
+ assets: 'address[]',
414
+ funds: {
415
+ sender: 'address',
416
+ fromInternalBalance: 'bool',
417
+ recipient: 'address',
418
+ toInternalBalance: 'bool',
419
+ },
420
+ limits: 'int256[]',
421
+ },
422
+ },
423
+ ], [
424
+ isBatchSwap,
425
+ callerSlots,
426
+ {
427
+ swaps: callDataStruct.swaps,
428
+ assets: callDataStruct.assets,
429
+ funds: callDataStruct.funds,
430
+ limits: callDataStruct.limits.map((_) => constants_1.MAX_INT),
431
+ },
432
+ ]);
433
+ }
434
+ else {
435
+ const swapAbi = vault_json_1.default.filter(abi => abi.name === 'swap');
436
+ const callDataStruct = this.abiCoder.decodeParameters(swapAbi[0].inputs, truncatedCalldata);
437
+ const callerSlot = constants_2.CALLER_SLOT;
438
+ payload = this.abiCoder.encodeParameters([
439
+ 'bool',
440
+ 'uint256',
441
+ {
442
+ ParentStruct: {
443
+ swap: {
444
+ poolId: 'bytes32',
445
+ kind: 'uint8',
446
+ assetIn: 'address',
447
+ assetOut: 'address',
448
+ amount: 'uint256',
449
+ userData: 'bytes',
450
+ },
451
+ funds: {
452
+ sender: 'address',
453
+ fromInternalBalance: 'bool',
454
+ recipient: 'address',
455
+ toInternalBalance: 'bool',
456
+ },
457
+ limit: 'uint256',
458
+ },
459
+ },
460
+ ], [
461
+ isBatchSwap,
462
+ callerSlot,
463
+ {
464
+ swap: {
465
+ poolId: callDataStruct.singleSwap.poolId,
466
+ kind: callDataStruct.singleSwap.kind,
467
+ assetIn: callDataStruct.singleSwap.assetIn,
468
+ assetOut: callDataStruct.singleSwap.assetOut,
469
+ amount: callDataStruct.singleSwap.amount,
470
+ userData: callDataStruct.singleSwap.userData,
471
+ },
472
+ funds: {
473
+ sender: callDataStruct.funds.sender,
474
+ fromInternalBalance: callDataStruct.funds.fromInternalBalance,
475
+ recipient: callDataStruct.funds.recipient,
476
+ toInternalBalance: callDataStruct.funds.toInternalBalance,
477
+ },
478
+ limit: side === constants_1.SwapSide.BUY ? constants_1.MAX_UINT : '0',
479
+ },
480
+ ]);
481
+ }
482
+ return {
483
+ targetExchange: router,
484
+ payload: payload,
485
+ networkFee: '0',
486
+ };
487
+ }
488
+ async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
489
+ const { router, callData } = data;
490
+ (0, ts_essentials_1.assert)(router !== undefined, `${this.dexKey}-${this.network}: router undefined`);
491
+ (0, ts_essentials_1.assert)(callData !== undefined, `${this.dexKey}-${this.network}: callData undefined`);
492
+ return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, callData, router);
493
+ }
494
+ async getTopPoolsForToken(tokenAddress, limit) {
495
+ if (await this.isRestricted()) {
496
+ return [];
497
+ }
498
+ const normalizedTokenAddress = (0, utils_3.normalizeTokenAddress)(tokenAddress);
499
+ const pLevels = await this.getCachedLevels();
500
+ if (pLevels === null) {
501
+ return [];
502
+ }
503
+ return Object.keys(pLevels)
504
+ .filter((pair) => {
505
+ return (normalizedTokenAddress === pLevels[pair].base ||
506
+ normalizedTokenAddress === pLevels[pair].quote);
507
+ })
508
+ .map((pair) => {
509
+ return {
510
+ exchange: this.dexKey,
511
+ connectorTokens: [this.getTokenFromAddress(normalizedTokenAddress === pLevels[pair].base ? pLevels[pair].quote : pLevels[pair].base)],
512
+ liquidityUSD: this.computeMaxLiquidity(pLevels[pair], tokenAddress),
513
+ };
514
+ })
515
+ .sort((pl) => {
516
+ return -pl.liquidityUSD;
517
+ })
518
+ .slice(0, limit);
519
+ }
520
+ getTokenFromAddress(address) {
521
+ return this.tokensMap[address];
522
+ }
523
+ releaseResources() {
524
+ if (this.rateFetcher) {
525
+ this.rateFetcher.stop();
526
+ }
527
+ }
528
+ getPriceLevelsReqParams() {
529
+ return this.getAPIReqParams(constants_2.SWAAP_RFQ_PRICES_ENDPOINT, 'GET');
530
+ }
531
+ getQuoteReqParams() {
532
+ return this.getAPIReqParams(constants_2.SWAAP_RFQ_QUOTE_ENDPOINT, 'POST');
533
+ }
534
+ getTokensReqParams() {
535
+ return this.getAPIReqParams(constants_2.SWAAP_RFQ_TOKENS_ENDPOINT, 'GET');
536
+ }
537
+ getAPIReqParams(endpoint, method) {
538
+ return {
539
+ url: `${constants_2.SWAAP_RFQ_API_URL}/${endpoint}`,
540
+ params: {
541
+ networkId: this.network,
542
+ },
543
+ headers: { 'x-api-key': this.swaapV2AuthToken },
544
+ method: method,
545
+ };
546
+ }
547
+ }
548
+ exports.SwaapV2 = SwaapV2;
549
+ SwaapV2.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.SwaapV2Config);
550
+ //# sourceMappingURL=swaap-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swaap-v2.js","sourceRoot":"","sources":["../../../src/dex/swaap-v2/swaap-v2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { RequestHeaders } from '../../dex-helper';
2
+ import { Method } from '../../dex-helper/irequest-wrapper';
3
+ import { Token } from '../../types';
4
+ export declare type SwaapV2Data = {
5
+ router: string;
6
+ callData: string;
7
+ };
8
+ export declare type DexParams = {};
9
+ export declare class SwaapV2QuoteError extends Error {
10
+ }
11
+ export interface SwaapV2PriceLevel {
12
+ level: number;
13
+ price: number;
14
+ }
15
+ export declare type SwaapV2PriceLevels = {
16
+ bids: Array<SwaapV2PriceLevel>;
17
+ asks: Array<SwaapV2PriceLevel>;
18
+ quote: string;
19
+ base: string;
20
+ };
21
+ export declare type SwaapV2PriceLevelsResponse = {
22
+ levels: Record<string, SwaapV2PriceLevels>;
23
+ success: boolean;
24
+ };
25
+ export declare type SwaapV2RateFetcherConfig = {
26
+ rateConfig: {
27
+ pricesReqParams: SwaapV2APIParameters;
28
+ pricesIntervalMs: number;
29
+ pricesCacheTTLSecs: number;
30
+ };
31
+ };
32
+ export declare type SwaapV2TokensResponse = {
33
+ tokens: {
34
+ [address: string]: {
35
+ symbol: string;
36
+ address: string;
37
+ decimals: number;
38
+ };
39
+ };
40
+ success: boolean;
41
+ };
42
+ export declare type SwaapV2QuoteResponse = {
43
+ id: string;
44
+ calldata: string;
45
+ router: string;
46
+ expiration: number;
47
+ amount: string;
48
+ recipient: string;
49
+ guaranteed_price: number;
50
+ success: boolean;
51
+ };
52
+ export declare enum SwaapV2OrderType {
53
+ SELL = 1,
54
+ BUY = 2
55
+ }
56
+ export declare type SwaapV2QuoteRequest = {
57
+ network_id: number;
58
+ origin: string;
59
+ sender: string;
60
+ recipient: string;
61
+ timestamp: number;
62
+ order_type: SwaapV2OrderType;
63
+ token_in: string;
64
+ token_out: string;
65
+ amount: string;
66
+ tolerance: number;
67
+ };
68
+ export declare type SwaapV2APIParameters = {
69
+ url: string;
70
+ headers?: RequestHeaders;
71
+ params?: any;
72
+ method?: Method;
73
+ };
74
+ export declare type TokensMap = {
75
+ [address: string]: Token;
76
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwaapV2QuoteError = void 0;
4
+ class SwaapV2QuoteError extends Error {
5
+ }
6
+ exports.SwaapV2QuoteError = SwaapV2QuoteError;
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/swaap-v2/types.ts"],"names":[],"mappings":";;;AAWA,MAAa,iBAAkB,SAAQ,KAAK;CAAG;AAA/C,8CAA+C"}