@paraswap/dex-lib 2.31.0 → 2.31.1-balancer-restrict-types.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.
Files changed (119) hide show
  1. package/build/dex/balancer-v2/balancer-v2.js +23 -3
  2. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  3. package/build/dex/{ramses-v2 → test-dex}/config.d.ts +1 -1
  4. package/build/dex/test-dex/config.js +15 -0
  5. package/build/dex/test-dex/config.js.map +1 -0
  6. package/build/dex/test-dex/test-dex-pool.d.ts +39 -0
  7. package/build/dex/test-dex/test-dex-pool.js +63 -0
  8. package/build/dex/test-dex/test-dex-pool.js.map +1 -0
  9. package/build/dex/test-dex/test-dex.d.ts +37 -0
  10. package/build/dex/test-dex/test-dex.js +126 -0
  11. package/build/dex/test-dex/test-dex.js.map +1 -0
  12. package/build/dex/test-dex/types.d.ts +6 -0
  13. package/build/dex/{pancakeswap-v3 → test-dex}/types.js.map +1 -1
  14. package/build/dex/woo-fi-v2/woo-fi-math.d.ts +16 -0
  15. package/build/dex/woo-fi-v2/woo-fi-math.js +137 -0
  16. package/build/dex/woo-fi-v2/woo-fi-math.js.map +1 -0
  17. package/package.json +1 -1
  18. package/src/dex/balancer-v2/balancer-v2.ts +24 -3
  19. package/.idea/aws.xml +0 -17
  20. package/.idea/codeStyles/Project.xml +0 -19
  21. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  22. package/.idea/misc.xml +0 -6
  23. package/.idea/modules.xml +0 -8
  24. package/.idea/paraswap-dex-lib.iml +0 -9
  25. package/.idea/vcs.xml +0 -6
  26. package/build/abi/algebra/AlgebraPool.abi.json +0 -727
  27. package/build/abi/curve-v1/StableSwapFRXETH.json +0 -889
  28. package/build/abi/curve-v1/StableSwapWBETH.json +0 -1223
  29. package/build/abi/sushiswap-v3/QuoterV2.json +0 -267
  30. package/build/abi/sushiswap-v3/RouterProcessor3.json +0 -289
  31. package/build/abi/wBETH.json +0 -1527
  32. package/build/dex/algebra/algebra-pool.d.ts +0 -46
  33. package/build/dex/algebra/algebra-pool.js +0 -336
  34. package/build/dex/algebra/algebra-pool.js.map +0 -1
  35. package/build/dex/curve-v1/pools/frxETHpool.d.ts +0 -7
  36. package/build/dex/curve-v1/pools/frxETHpool.js +0 -27
  37. package/build/dex/curve-v1/pools/frxETHpool.js.map +0 -1
  38. package/build/dex/curve-v1/pools/wbETHpool.d.ts +0 -29
  39. package/build/dex/curve-v1/pools/wbETHpool.js +0 -408
  40. package/build/dex/curve-v1/pools/wbETHpool.js.map +0 -1
  41. package/build/dex/pancakeswap-v3/types.d.ts +0 -14
  42. package/build/dex/ramses-v2/config.js +0 -28
  43. package/build/dex/ramses-v2/config.js.map +0 -1
  44. package/build/dex/ramses-v2/constants.d.ts +0 -28
  45. package/build/dex/ramses-v2/constants.js +0 -35
  46. package/build/dex/ramses-v2/constants.js.map +0 -1
  47. package/build/dex/ramses-v2/contract-math/BitMath.d.ts +0 -4
  48. package/build/dex/ramses-v2/contract-math/BitMath.js +0 -93
  49. package/build/dex/ramses-v2/contract-math/BitMath.js.map +0 -1
  50. package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +0 -3
  51. package/build/dex/ramses-v2/contract-math/FixedPoint128.js +0 -8
  52. package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +0 -1
  53. package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +0 -4
  54. package/build/dex/ramses-v2/contract-math/FixedPoint96.js +0 -9
  55. package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +0 -1
  56. package/build/dex/ramses-v2/contract-math/FullMath.d.ts +0 -4
  57. package/build/dex/ramses-v2/contract-math/FullMath.js +0 -19
  58. package/build/dex/ramses-v2/contract-math/FullMath.js.map +0 -1
  59. package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +0 -3
  60. package/build/dex/ramses-v2/contract-math/LiquidityMath.js +0 -22
  61. package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +0 -1
  62. package/build/dex/ramses-v2/contract-math/Oracle.d.ts +0 -10
  63. package/build/dex/ramses-v2/contract-math/Oracle.js +0 -133
  64. package/build/dex/ramses-v2/contract-math/Oracle.js.map +0 -1
  65. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +0 -10
  66. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +0 -91
  67. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +0 -1
  68. package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +0 -8
  69. package/build/dex/ramses-v2/contract-math/SwapMath.js +0 -70
  70. package/build/dex/ramses-v2/contract-math/SwapMath.js.map +0 -1
  71. package/build/dex/ramses-v2/contract-math/Tick.d.ts +0 -7
  72. package/build/dex/ramses-v2/contract-math/Tick.js +0 -45
  73. package/build/dex/ramses-v2/contract-math/Tick.js.map +0 -1
  74. package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +0 -8
  75. package/build/dex/ramses-v2/contract-math/TickBitMap.js +0 -87
  76. package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +0 -1
  77. package/build/dex/ramses-v2/contract-math/TickMath.d.ts +0 -8
  78. package/build/dex/ramses-v2/contract-math/TickMath.js +0 -162
  79. package/build/dex/ramses-v2/contract-math/TickMath.js.map +0 -1
  80. package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +0 -3
  81. package/build/dex/ramses-v2/contract-math/UnsafeMath.js +0 -10
  82. package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +0 -1
  83. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +0 -18
  84. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +0 -392
  85. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +0 -1
  86. package/build/dex/ramses-v2/contract-math/utils.d.ts +0 -3
  87. package/build/dex/ramses-v2/contract-math/utils.js +0 -16
  88. package/build/dex/ramses-v2/contract-math/utils.js.map +0 -1
  89. package/build/dex/ramses-v2/ramses-v2-pool.d.ts +0 -42
  90. package/build/dex/ramses-v2/ramses-v2-pool.js +0 -307
  91. package/build/dex/ramses-v2/ramses-v2-pool.js.map +0 -1
  92. package/build/dex/ramses-v2/ramses-v2.d.ts +0 -61
  93. package/build/dex/ramses-v2/ramses-v2.js +0 -690
  94. package/build/dex/ramses-v2/ramses-v2.js.map +0 -1
  95. package/build/dex/ramses-v2/types.d.ts +0 -154
  96. package/build/dex/ramses-v2/types.js +0 -9
  97. package/build/dex/ramses-v2/types.js.map +0 -1
  98. package/build/dex/ramses-v2/utils.d.ts +0 -6
  99. package/build/dex/ramses-v2/utils.js +0 -71
  100. package/build/dex/ramses-v2/utils.js.map +0 -1
  101. package/build/dex/sushiswap-v3/config.d.ts +0 -4
  102. package/build/dex/sushiswap-v3/config.js +0 -113
  103. package/build/dex/sushiswap-v3/config.js.map +0 -1
  104. package/build/dex/sushiswap-v3/constants.d.ts +0 -4
  105. package/build/dex/sushiswap-v3/constants.js +0 -32
  106. package/build/dex/sushiswap-v3/constants.js.map +0 -1
  107. package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +0 -1
  108. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +0 -6
  109. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +0 -1
  110. package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +0 -56
  111. package/build/dex/sushiswap-v3/sushiswap-v3.js +0 -598
  112. package/build/dex/sushiswap-v3/sushiswap-v3.js.map +0 -1
  113. package/build/dex/sushiswap-v3/token.d.ts +0 -6
  114. package/build/dex/sushiswap-v3/token.js +0 -23
  115. package/build/dex/sushiswap-v3/token.js.map +0 -1
  116. package/build/dex/sushiswap-v3/types.d.ts +0 -15
  117. package/build/dex/sushiswap-v3/types.js +0 -18
  118. package/build/dex/sushiswap-v3/types.js.map +0 -1
  119. /package/build/dex/{pancakeswap-v3 → test-dex}/types.js +0 -0
@@ -1,598 +0,0 @@
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.SushiswapV3 = 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 simple_exchange_1 = require("../simple-exchange");
34
- const config_1 = require("./config");
35
- const sushiswap_v3_pool_1 = require("./sushiswap-v3-pool");
36
- const utils_2 = require("ethers/lib/utils");
37
- const solidity_1 = require("@ethersproject/solidity");
38
- const constants_2 = require("./constants");
39
- const uniswap_v3_math_1 = require("../uniswap-v3/contract-math/uniswap-v3-math");
40
- const balancer_fetcher_1 = require("../../lib/tokens/balancer-fetcher");
41
- const types_1 = require("../../lib/tokens/types");
42
- const router_1 = require("@sushiswap/router");
43
- const viem_1 = require("viem");
44
- const RouterProcessor3_json_1 = __importDefault(require("../../abi/sushiswap-v3/RouterProcessor3.json"));
45
- const QuoterV2_json_1 = __importDefault(require("../../abi/sushiswap-v3/QuoterV2.json"));
46
- const UniswapMulti_abi_json_1 = __importDefault(require("../../abi/uniswap-v3/UniswapMulti.abi.json"));
47
- const UniswapV3StateMulticall_abi_json_1 = __importDefault(require("../../abi/uniswap-v3/UniswapV3StateMulticall.abi.json"));
48
- const config_2 = require("../../config");
49
- const ethers_1 = require("ethers");
50
- const token_1 = require("./token");
51
- const lodash_1 = __importDefault(require("lodash"));
52
- const config_3 = require("../uniswap-v3/config");
53
- const UNISWAPV3_CLEAN_NOT_EXISTING_POOL_TTL_MS = 60 * 60 * 24 * 1000; // 24 hours
54
- const UNISWAPV3_CLEAN_NOT_EXISTING_POOL_INTERVAL_MS = 30 * 60 * 1000; // Once in 30 minutes
55
- const UNISWAPV3_QUOTE_GASLIMIT = 200000;
56
- class SushiswapV3 extends simple_exchange_1.SimpleExchange {
57
- constructor(network, dexKey, dexHelper, adapters = config_1.Adapters[network] || {}, routerIface = new utils_2.Interface(RouterProcessor3_json_1.default), quoterIface = new utils_2.Interface(QuoterV2_json_1.default), config = config_1.SushiswapV3Config[dexKey][network]) {
58
- super(dexHelper, dexKey);
59
- this.network = network;
60
- this.dexKey = dexKey;
61
- this.dexHelper = dexHelper;
62
- this.adapters = adapters;
63
- this.routerIface = routerIface;
64
- this.quoterIface = quoterIface;
65
- this.config = config;
66
- this.eventPools = {};
67
- this.hasConstantPriceLargeAmounts = false;
68
- this.needWrapNative = true;
69
- this.isFeeOnTransferSupported = false;
70
- this.logger = dexHelper.getLogger(dexKey + '-' + network);
71
- this.uniswapMulti = new this.dexHelper.web3Provider.eth.Contract(UniswapMulti_abi_json_1.default, this.config.uniswapMulticall);
72
- this.stateMultiContract = new this.dexHelper.web3Provider.eth.Contract(UniswapV3StateMulticall_abi_json_1.default, this.config.stateMulticall);
73
- // To receive revert reasons
74
- this.dexHelper.web3Provider.eth.handleRevert = false;
75
- // Normalise once all config addresses and use across all scenarios
76
- this.config = this._toLowerForAllConfigAddresses();
77
- this.notExistingPoolSetKey =
78
- `${constants_1.CACHE_PREFIX}_${network}_${dexKey}_not_existings_pool_set`.toLowerCase();
79
- }
80
- // Initialize pricing is called once in the start of
81
- // pricing service. It is intended to setup the integration
82
- // for pricing requests. It is optional for a DEX to
83
- // implement this function
84
- async initializePricing(blockNumber) {
85
- if (!this.dexHelper.config.isSlave) {
86
- const cleanExpiredNotExistingPoolsKeys = async () => {
87
- const maxTimestamp = Date.now() - UNISWAPV3_CLEAN_NOT_EXISTING_POOL_TTL_MS;
88
- await this.dexHelper.cache.zremrangebyscore(this.notExistingPoolSetKey, 0, maxTimestamp);
89
- };
90
- this.intervalTask = setInterval(cleanExpiredNotExistingPoolsKeys.bind(this), UNISWAPV3_CLEAN_NOT_EXISTING_POOL_INTERVAL_MS);
91
- }
92
- }
93
- get supportedFees() {
94
- return this.config.supportedFees;
95
- }
96
- // Returns the list of contract adapters (name and index)
97
- // for a buy/sell. Return null if there are no adapters.
98
- getAdapters(side) {
99
- return this.adapters[side] ? this.adapters[side] : null;
100
- }
101
- getPoolIdentifier(srcAddress, destAddress, fee) {
102
- const tokenAddresses = this._sortTokens(srcAddress, destAddress).join('_');
103
- return `${this.dexKey}_${tokenAddresses}_${fee}`;
104
- }
105
- // Returns pool prices for amounts.
106
- // If limitPools is defined only pools in limitPools
107
- // should be used. If limitPools is undefined then
108
- // any pools can be used.
109
- async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
110
- try {
111
- const _srcToken = this.dexHelper.config.wrapETH(srcToken);
112
- const _destToken = this.dexHelper.config.wrapETH(destToken);
113
- const [_srcAddress, _destAddress] = this._getLoweredAddresses(_srcToken, _destToken);
114
- if (_srcAddress === _destAddress)
115
- return null;
116
- let selectedPools = [];
117
- if (!limitPools) {
118
- selectedPools = (await Promise.all(this.supportedFees.map(async (fee) => {
119
- const locallyFoundPool = this.eventPools[this.getPoolIdentifier(_srcAddress, _destAddress, fee)];
120
- if (locallyFoundPool)
121
- return locallyFoundPool;
122
- const newlyFetchedPool = await this.getPool(_srcAddress, _destAddress, fee, blockNumber);
123
- return newlyFetchedPool;
124
- }))).filter(utils_1.isTruthy);
125
- }
126
- else {
127
- const pairIdentifierWithoutFee = this.getPoolIdentifier(_srcAddress, _destAddress, 0n).slice(0, -1);
128
- const poolIdentifiers = limitPools.filter(identifier => identifier.startsWith(pairIdentifierWithoutFee));
129
- selectedPools = (await Promise.all(poolIdentifiers.map(async (identifier) => {
130
- let locallyFoundPool = this.eventPools[identifier];
131
- if (locallyFoundPool)
132
- return locallyFoundPool;
133
- const [, srcAddress, destAddress, fee] = identifier.split('_');
134
- const newlyFetchedPool = await this.getPool(srcAddress, destAddress, BigInt(fee), blockNumber);
135
- return newlyFetchedPool;
136
- }))).filter(utils_1.isTruthy);
137
- }
138
- if (selectedPools.length === 0)
139
- return null;
140
- const poolsToUse = selectedPools.reduce((acc, pool) => {
141
- let state = pool.getState(blockNumber);
142
- if (state === null) {
143
- this.logger.trace(`${this.dexKey}: State === null. Fallback to rpc ${pool.name}`);
144
- acc.poolWithoutState.push(pool);
145
- }
146
- else {
147
- acc.poolWithState.push(pool);
148
- }
149
- return acc;
150
- }, {
151
- poolWithState: [],
152
- poolWithoutState: [],
153
- });
154
- const rpcResultsPromise = this.getPricingFromRpc(_srcToken, _destToken, amounts, side, poolsToUse.poolWithoutState);
155
- const states = poolsToUse.poolWithState.map(p => p.getState(blockNumber));
156
- const unitAmount = (0, utils_1.getBigIntPow)(side == constants_1.SwapSide.SELL ? _srcToken.decimals : _destToken.decimals);
157
- const _amounts = [...amounts.slice(1)];
158
- const [token0] = this._sortTokens(_srcAddress, _destAddress);
159
- const zeroForOne = token0 === _srcAddress ? true : false;
160
- const result = await Promise.all(poolsToUse.poolWithState.map(async (pool, i) => {
161
- const state = states[i];
162
- if (state.liquidity <= 0n) {
163
- this.logger.trace(`pool have 0 liquidity`);
164
- return null;
165
- }
166
- const balanceDestToken = _destAddress === pool.token0 ? state.balance0 : state.balance1;
167
- const unitResult = this._getOutputs(state, [unitAmount], zeroForOne, side, balanceDestToken);
168
- const pricesResult = this._getOutputs(state, _amounts, zeroForOne, side, balanceDestToken);
169
- if (!unitResult || !pricesResult) {
170
- this.logger.debug('Prices or unit is not calculated');
171
- return null;
172
- }
173
- const prices = [0n, ...pricesResult.outputs];
174
- const gasCost = [
175
- 0,
176
- ...pricesResult.outputs.map((p, index) => {
177
- if (p == 0n) {
178
- return 0;
179
- }
180
- else {
181
- return (constants_2.UNISWAPV3_POOL_SEARCH_OVERHEAD +
182
- constants_2.UNISWAPV3_TICK_BASE_OVERHEAD +
183
- pricesResult.tickCounts[index] * constants_2.UNISWAPV3_TICK_GAS_COST);
184
- }
185
- }),
186
- ];
187
- return {
188
- unit: unitResult.outputs[0],
189
- prices,
190
- data: {
191
- path: [
192
- {
193
- tokenIn: _srcAddress,
194
- tokenOut: _destAddress,
195
- fee: pool.feeCode.toString(),
196
- },
197
- ],
198
- },
199
- poolIdentifier: this.getPoolIdentifier(pool.token0, pool.token1, pool.feeCode),
200
- exchange: this.dexKey,
201
- gasCost: gasCost,
202
- poolAddresses: [pool.poolAddress],
203
- };
204
- }));
205
- const rpcResults = await rpcResultsPromise;
206
- const notNullResult = result.filter(res => res !== null);
207
- if (rpcResults) {
208
- rpcResults.forEach(r => {
209
- if (r) {
210
- notNullResult.push(r);
211
- }
212
- });
213
- }
214
- return notNullResult;
215
- }
216
- catch (e) {
217
- this.logger.error(`Error_getPricesVolume ${srcToken.symbol || srcToken.address}, ${destToken.symbol || destToken.address}, ${side}:`, e);
218
- return null;
219
- }
220
- }
221
- getQuoterV2CallData(funcName, tokenIn, tokenOut, amount, fee) {
222
- return funcName === 'quoteExactInputSingle'
223
- ? { tokenIn, tokenOut, fee, sqrtPriceLimitX96: 0n, amountIn: amount }
224
- : { tokenIn, tokenOut, fee, sqrtPriceLimitX96: 0n, amount };
225
- }
226
- async getPricingFromRpc(from, to, amounts, side, pools) {
227
- if (pools.length === 0) {
228
- return null;
229
- }
230
- this.logger.warn(`fallback to rpc for ${pools.length} pool(s)`);
231
- const requests = pools.map(pool => ({
232
- owner: pool.poolAddress,
233
- asset: side == constants_1.SwapSide.SELL ? from.address : to.address,
234
- assetType: types_1.AssetType.ERC20,
235
- ids: [
236
- {
237
- id: types_1.DEFAULT_ID_ERC20,
238
- spenders: [],
239
- },
240
- ],
241
- }), []);
242
- const balances = await (0, balancer_fetcher_1.getBalances)(this.dexHelper.multiWrapper, requests);
243
- pools = pools.filter((pool, index) => {
244
- const balance = balances[index].amounts[types_1.DEFAULT_ID_ERC20_AS_STRING];
245
- if (balance >= amounts[amounts.length - 1]) {
246
- return true;
247
- }
248
- this.logger.warn(`[${this.network}][${pool.parentName}] have no balance ${pool.poolAddress} ${from.address} ${to.address}. (Balance: ${balance})`);
249
- return false;
250
- });
251
- pools.forEach(pool => {
252
- this.logger.warn(`[${this.network}][${pool.parentName}] fallback to rpc for ${pool.name}`);
253
- });
254
- const unitVolume = (0, utils_1.getBigIntPow)((side === constants_1.SwapSide.SELL ? from : to).decimals);
255
- const chunks = amounts.length - 1;
256
- const _width = Math.floor(chunks / this.config.chunksCount);
257
- const _amounts = [unitVolume].concat(Array.from(Array(this.config.chunksCount).keys()).map(i => amounts[(i + 1) * _width]));
258
- const funcName = side === constants_1.SwapSide.SELL
259
- ? 'quoteExactInputSingle'
260
- : 'quoteExactOutputSingle';
261
- const calldata = pools.map(pool => _amounts.map(_amount => ({
262
- target: this.config.quoter,
263
- gasLimit: UNISWAPV3_QUOTE_GASLIMIT,
264
- callData: this.quoterIface.encodeFunctionData(funcName, [
265
- this.getQuoterV2CallData(funcName, from.address, to.address, _amount, pool.feeCode),
266
- ]),
267
- })));
268
- const data = await new this.dexHelper.web3Provider.eth.Contract(UniswapMulti_abi_json_1.default, this.config.uniswapMulticall).methods
269
- .multicall(calldata.flat())
270
- .call();
271
- const decode = (j) => {
272
- if (!data.returnData[j].success) {
273
- return 0n;
274
- }
275
- const decoded = utils_2.defaultAbiCoder.decode(['uint256'], data.returnData[j].returnData);
276
- return BigInt(decoded[0].toString());
277
- };
278
- let i = 0;
279
- const result = pools.map(pool => {
280
- const _rates = _amounts.map(() => decode(i++));
281
- const unit = _rates[0];
282
- const prices = (0, utils_1.interpolate)(_amounts.slice(1), _rates.slice(1), amounts, side);
283
- return {
284
- prices,
285
- unit,
286
- data: {
287
- path: [
288
- {
289
- tokenIn: from.address,
290
- tokenOut: to.address,
291
- fee: pool.feeCodeAsString,
292
- },
293
- ],
294
- },
295
- poolIdentifier: this.getPoolIdentifier(pool.token0, pool.token1, pool.feeCode),
296
- exchange: this.dexKey,
297
- gasCost: prices.map(p => (p === 0n ? 0 : UNISWAPV3_QUOTE_GASLIMIT)),
298
- poolAddresses: [pool.poolAddress],
299
- };
300
- });
301
- return result;
302
- }
303
- // Returns estimated gas cost of calldata for this DEX in multiSwap
304
- getCalldataGasCost(poolPrices) {
305
- const gasCost = CALLDATA_GAS_COST.DEX_OVERHEAD +
306
- CALLDATA_GAS_COST.LENGTH_SMALL +
307
- // ParentStruct header
308
- CALLDATA_GAS_COST.OFFSET_SMALL +
309
- // ParentStruct -> path header
310
- CALLDATA_GAS_COST.OFFSET_SMALL +
311
- // ParentStruct -> deadline
312
- CALLDATA_GAS_COST.TIMESTAMP +
313
- // ParentStruct -> path (20+3+20 = 43 = 32+11 bytes)
314
- CALLDATA_GAS_COST.LENGTH_SMALL +
315
- CALLDATA_GAS_COST.FULL_WORD +
316
- CALLDATA_GAS_COST.wordNonZeroBytes(11);
317
- const arr = new Array(poolPrices.prices.length);
318
- poolPrices.prices.forEach((p, index) => {
319
- if (p == 0n) {
320
- arr[index] = 0;
321
- }
322
- else {
323
- arr[index] = gasCost;
324
- }
325
- });
326
- return arr;
327
- }
328
- // Encode params required by the exchange adapter
329
- // Used for multiSwap, buy & megaSwap
330
- getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
331
- const { path: rawPath } = data;
332
- const path = this._encodePath(rawPath, side);
333
- const payload = this.abiCoder.encodeParameter({
334
- ParentStruct: {
335
- path: 'bytes',
336
- deadline: 'uint256',
337
- },
338
- }, {
339
- path,
340
- deadline: (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(), // FIXME: more gas efficient to pass block.timestamp in adapter
341
- });
342
- return {
343
- targetExchange: config_3.UniswapV3Config['UniswapV3'][this.network].router,
344
- payload,
345
- networkFee: '0',
346
- };
347
- }
348
- // Encode call data used by simpleSwap like routers
349
- // Used for simpleSwap & simpleBuy
350
- async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data) {
351
- const web3Client = (0, viem_1.createPublicClient)({
352
- chain: constants_2.ViemChain[this.network],
353
- transport: (0, viem_1.http)((0, config_2.generateConfig)(this.network).privateHttpProvider),
354
- });
355
- const dataFetcher = new router_1.DataFetcher(web3Client.chain.id, web3Client);
356
- dataFetcher.startDataFetching([router_1.LiquidityProviders.SushiSwapV3]);
357
- const fromToken = await (0, token_1.getToken)({ web3Client, address: srcToken });
358
- const toToken = await (0, token_1.getToken)({ web3Client, address: destToken });
359
- await dataFetcher.fetchPoolsForToken(fromToken, toToken);
360
- const pcMap = dataFetcher.getCurrentPoolCodeMap(fromToken, toToken);
361
- const route = router_1.Router.findBestRoute(pcMap, this.network, fromToken, ethers_1.BigNumber.from(srcAmount), toToken, 50e9, [router_1.LiquidityProviders.SushiSwapV3]);
362
- const rpParams = router_1.Router.routeProcessor2Params(pcMap, route, fromToken, toToken, this.augustusAddress, this.config.router);
363
- const swapData = this.routerIface.encodeFunctionData('processRoute', [
364
- rpParams.tokenIn,
365
- rpParams.amountIn,
366
- rpParams.tokenOut,
367
- rpParams.amountOutMin,
368
- rpParams.to,
369
- rpParams.routeCode,
370
- ]);
371
- dataFetcher.stopDataFetching();
372
- return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, this.config.router);
373
- }
374
- async getTopPoolsForToken(tokenAddress, limit) {
375
- const _tokenAddress = tokenAddress.toLowerCase();
376
- const res = await this._querySubgraph(`query ($token: Bytes!, $count: Int) {
377
- pools0: pools(first: $count, orderBy: totalValueLockedUSD, orderDirection: desc, where: {token0: $token}) {
378
- id
379
- token0 {
380
- id
381
- decimals
382
- }
383
- token1 {
384
- id
385
- decimals
386
- }
387
- totalValueLockedUSD
388
- }
389
- pools1: pools(first: $count, orderBy: totalValueLockedUSD, orderDirection: desc, where: {token1: $token}) {
390
- id
391
- token0 {
392
- id
393
- decimals
394
- }
395
- token1 {
396
- id
397
- decimals
398
- }
399
- totalValueLockedUSD
400
- }
401
- }`, {
402
- token: _tokenAddress,
403
- count: limit,
404
- });
405
- if (!(res && res.pools0 && res.pools1)) {
406
- this.logger.error(`Error_${this.dexKey}_Subgraph: couldn't fetch the pools from the subgraph`);
407
- return [];
408
- }
409
- const pools0 = lodash_1.default.map(res.pools0, pool => ({
410
- exchange: this.dexKey,
411
- address: pool.id.toLowerCase(),
412
- connectorTokens: [
413
- {
414
- address: pool.token1.id.toLowerCase(),
415
- decimals: parseInt(pool.token1.decimals),
416
- },
417
- ],
418
- liquidityUSD: parseFloat(pool.totalValueLockedUSD) * constants_2.UNISWAPV3_EFFICIENCY_FACTOR,
419
- }));
420
- const pools1 = lodash_1.default.map(res.pools1, pool => ({
421
- exchange: this.dexKey,
422
- address: pool.id.toLowerCase(),
423
- connectorTokens: [
424
- {
425
- address: pool.token0.id.toLowerCase(),
426
- decimals: parseInt(pool.token0.decimals),
427
- },
428
- ],
429
- liquidityUSD: parseFloat(pool.totalValueLockedUSD) * constants_2.UNISWAPV3_EFFICIENCY_FACTOR,
430
- }));
431
- const pools = lodash_1.default.slice(lodash_1.default.sortBy(lodash_1.default.concat(pools0, pools1), [pool => -1 * pool.liquidityUSD]), 0, limit);
432
- return pools;
433
- }
434
- _encodePath(path, side) {
435
- if (path.length === 0) {
436
- this.logger.error(`${this.dexKey}: Received invalid path=${path} for side=${side} to encode`);
437
- return '0x';
438
- }
439
- const { _path, types } = path.reduce(({ _path, types }, curr, index) => {
440
- if (index === 0) {
441
- return {
442
- types: ['address', 'uint24', 'address'],
443
- _path: [curr.tokenIn, curr.fee, curr.tokenOut],
444
- };
445
- }
446
- else {
447
- return {
448
- types: [...types, 'uint24', 'address'],
449
- _path: [..._path, curr.fee, curr.tokenOut],
450
- };
451
- }
452
- }, { _path: [], types: [] });
453
- return side === constants_1.SwapSide.BUY
454
- ? (0, solidity_1.pack)(types.reverse(), _path.reverse())
455
- : (0, solidity_1.pack)(types, _path);
456
- }
457
- async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
458
- const _srcToken = this.dexHelper.config.wrapETH(srcToken);
459
- const _destToken = this.dexHelper.config.wrapETH(destToken);
460
- const [_srcAddress, _destAddress] = this._getLoweredAddresses(_srcToken, _destToken);
461
- if (_srcAddress === _destAddress)
462
- return [];
463
- const pools = (await Promise.all(this.supportedFees.map(async (fee) => this.getPool(_srcAddress, _destAddress, fee, blockNumber)))).filter(pool => pool);
464
- if (pools.length === 0)
465
- return [];
466
- return pools.map(pool => this.getPoolIdentifier(_srcAddress, _destAddress, pool.feeCode));
467
- }
468
- async getPool(srcAddress, destAddress, fee, blockNumber) {
469
- let pool = this.eventPools[this.getPoolIdentifier(srcAddress, destAddress, fee)];
470
- if (pool === undefined) {
471
- const [token0, token1] = this._sortTokens(srcAddress, destAddress);
472
- const key = `${token0}_${token1}_${fee}`.toLowerCase();
473
- const notExistingPoolScore = await this.dexHelper.cache.zscore(this.notExistingPoolSetKey, key);
474
- const poolDoesNotExist = notExistingPoolScore !== null;
475
- if (poolDoesNotExist) {
476
- this.eventPools[this.getPoolIdentifier(srcAddress, destAddress, fee)] =
477
- null;
478
- return null;
479
- }
480
- await this.dexHelper.cache.hset(this.dexmapKey, key, JSON.stringify({
481
- token0,
482
- token1,
483
- fee: fee.toString(),
484
- }));
485
- this.logger.trace(`starting to listen to new pool: ${key}`);
486
- pool = new sushiswap_v3_pool_1.SushiswapV3EventPool(this.dexHelper, this.dexKey, this.stateMultiContract, this.erc20Interface, this.config.factory, fee, token0, token1, this.logger, this.cacheStateKey, this.config.initHash);
487
- try {
488
- await pool.initialize(blockNumber, {
489
- initCallback: (state) => {
490
- //really hacky, we need to push poolAddress so that we subscribeToLogs in StatefulEventSubscriber
491
- pool.addressesSubscribed[0] = state.pool;
492
- pool.poolAddress = state.pool;
493
- },
494
- });
495
- }
496
- catch (e) {
497
- if (e instanceof Error && e.message.endsWith('Pool does not exist')) {
498
- // no need to await we want the set to have the pool key but it's not blocking
499
- this.dexHelper.cache.zadd(this.notExistingPoolSetKey, [Date.now(), key], 'NX');
500
- // Pool does not exist for this feeCode, so we can set it to null
501
- // to prevent more requests for this pool
502
- pool = null;
503
- this.logger.trace(`${this.dexHelper}: Pool: srcAddress=${srcAddress}, destAddress=${destAddress}, fee=${fee} not found`, e);
504
- }
505
- else {
506
- // Unexpected Error. Break execution. Do not save the pool in this.eventPools
507
- this.logger.error(`${this.dexKey}: Can not generate pool state for srcAddress=${srcAddress}, destAddress=${destAddress}, fee=${fee} pool`, e);
508
- throw new Error('Cannot generate pool state');
509
- }
510
- }
511
- if (pool !== null) {
512
- const allEventPools = Object.values(this.eventPools);
513
- this.logger.info(`starting to listen to new non-null pool: ${key}. Already following ${allEventPools
514
- // Not that I like this reduce, but since it is done only on initialization, expect this to be ok
515
- .reduce((acc, curr) => (curr !== null ? ++acc : acc), 0)} non-null pools or ${allEventPools.length} total pools`);
516
- }
517
- this.eventPools[this.getPoolIdentifier(srcAddress, destAddress, fee)] =
518
- pool;
519
- }
520
- return pool;
521
- }
522
- _getLoweredAddresses(srcToken, destToken) {
523
- return [srcToken.address.toLowerCase(), destToken.address.toLowerCase()];
524
- }
525
- _sortTokens(srcAddress, destAddress) {
526
- return [srcAddress, destAddress].sort((a, b) => (a < b ? -1 : 1));
527
- }
528
- _toLowerForAllConfigAddresses() {
529
- // If new config property will be added, the TS will throw compile error
530
- const newConfig = {
531
- router: this.config.router.toLowerCase(),
532
- quoter: this.config.quoter.toLowerCase(),
533
- factory: this.config.factory.toLowerCase(),
534
- supportedFees: this.config.supportedFees,
535
- stateMulticall: this.config.stateMulticall.toLowerCase(),
536
- chunksCount: this.config.chunksCount,
537
- uniswapMulticall: this.config.uniswapMulticall,
538
- deployer: this.config.deployer?.toLowerCase(),
539
- initHash: this.config.initHash,
540
- subgraphURL: this.config.subgraphURL,
541
- };
542
- return newConfig;
543
- }
544
- async _querySubgraph(query, variables, timeout = 30000) {
545
- try {
546
- const res = await this.dexHelper.httpRequest.post(this.config.subgraphURL, { query, variables }, undefined, { timeout: timeout });
547
- return res.data;
548
- }
549
- catch (e) {
550
- this.logger.error(`${this.dexKey}: can not query subgraph: `, e);
551
- return {};
552
- }
553
- }
554
- _getOutputs(state, amounts, zeroForOne, side, destTokenBalance) {
555
- try {
556
- const outputsResult = uniswap_v3_math_1.uniswapV3Math.queryOutputs(state, amounts, zeroForOne, side);
557
- if (side === constants_1.SwapSide.SELL) {
558
- if (outputsResult.outputs[0] > destTokenBalance) {
559
- return null;
560
- }
561
- for (let i = 0; i < outputsResult.outputs.length; i++) {
562
- if (outputsResult.outputs[i] > destTokenBalance) {
563
- outputsResult.outputs[i] = 0n;
564
- outputsResult.tickCounts[i] = 0;
565
- }
566
- }
567
- }
568
- else {
569
- if (amounts[0] > destTokenBalance) {
570
- return null;
571
- }
572
- // This may be improved by first checking outputs and requesting outputs
573
- // only for amounts that makes more sense, but I don't think this is really
574
- // important now
575
- for (let i = 0; i < amounts.length; i++) {
576
- if (amounts[i] > destTokenBalance) {
577
- outputsResult.outputs[i] = 0n;
578
- outputsResult.tickCounts[i] = 0;
579
- }
580
- }
581
- }
582
- return outputsResult;
583
- }
584
- catch (e) {
585
- this.logger.debug(`${this.dexKey}: received error in _getOutputs while calculating outputs`, e);
586
- return null;
587
- }
588
- }
589
- releaseResources() {
590
- if (this.intervalTask !== undefined) {
591
- clearInterval(this.intervalTask);
592
- this.intervalTask = undefined;
593
- }
594
- }
595
- }
596
- exports.SushiswapV3 = SushiswapV3;
597
- SushiswapV3.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.SushiswapV3Config);
598
- //# sourceMappingURL=sushiswap-v3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sushiswap-v3.js","sourceRoot":"","sources":["../../../src/dex/sushiswap-v3/sushiswap-v3.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { PublicClient, Transport, Chain } from 'viem';
2
- import { Token } from '@sushiswap/currency';
3
- export declare function getToken({ web3Client, address, }: {
4
- web3Client: PublicClient<Transport, Chain>;
5
- address: string;
6
- }): Promise<Token>;