@paraswap/dex-lib 3.8.16 → 3.8.17-insert-amount-solidly-v3.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 (152) hide show
  1. package/.vscode/launch.json +53 -0
  2. package/.vscode/settings.json +2 -0
  3. package/.vscode/tasks.json +15 -0
  4. package/build/abi/maverick-v2/MaverickV2Router.json +778 -0
  5. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  6. package/build/abi/wombat/pool.json +1289 -0
  7. package/build/dex/aave-v1/aave-v1.js +1 -0
  8. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  9. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  10. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  11. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  12. package/build/dex/bProtocol.d.ts +18 -0
  13. package/build/dex/bProtocol.js +39 -0
  14. package/build/dex/bProtocol.js.map +1 -0
  15. package/build/dex/bancor.d.ts +26 -0
  16. package/build/dex/bancor.js +58 -0
  17. package/build/dex/bancor.js.map +1 -0
  18. package/build/dex/compound.d.ts +18 -0
  19. package/build/dex/compound.js +46 -0
  20. package/build/dex/compound.js.map +1 -0
  21. package/build/dex/curve-v2.d.ts +58 -0
  22. package/build/dex/curve-v2.js +180 -0
  23. package/build/dex/curve-v2.js.map +1 -0
  24. package/build/dex/dodo-v1.d.ts +33 -0
  25. package/build/dex/dodo-v1.js +63 -0
  26. package/build/dex/dodo-v1.js.map +1 -0
  27. package/build/dex/lido.d.ts +19 -0
  28. package/build/dex/lido.js +42 -0
  29. package/build/dex/lido.js.map +1 -0
  30. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  31. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  32. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  33. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  34. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  35. package/build/dex/onebit.d.ts +25 -0
  36. package/build/dex/onebit.js +42 -0
  37. package/build/dex/onebit.js.map +1 -0
  38. package/build/dex/platypus/platypus.js +17 -3
  39. package/build/dex/platypus/platypus.js.map +1 -1
  40. package/build/dex/smoothy.d.ts +26 -0
  41. package/build/dex/smoothy.js +48 -0
  42. package/build/dex/smoothy.js.map +1 -0
  43. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +1 -0
  44. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  45. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  46. package/build/dex/solidly-v3/solidly-v3.js +7 -0
  47. package/build/dex/solidly-v3/solidly-v3.js.map +1 -1
  48. package/build/dex/stable-pool.d.ts +28 -0
  49. package/build/dex/stable-pool.js +55 -0
  50. package/build/dex/stable-pool.js.map +1 -0
  51. package/build/dex/swaap-v1/swaap-v1.js +4 -0
  52. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  53. package/build/dex/trader-joe-v2.1/base.d.ts +18 -0
  54. package/build/dex/trader-joe-v2.1/base.js +99 -0
  55. package/build/dex/trader-joe-v2.1/base.js.map +1 -0
  56. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.d.ts +7 -0
  57. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.js +20 -0
  58. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.js.map +1 -0
  59. package/build/dex/trader-joe-v2.1/trader-joe-v2.2.d.ts +7 -0
  60. package/build/dex/trader-joe-v2.1/trader-joe-v2.2.js +20 -0
  61. package/build/dex/trader-joe-v2.1/trader-joe-v2.2.js.map +1 -0
  62. package/build/dex/trader-joe-v2.1.d.ts +43 -0
  63. package/build/dex/trader-joe-v2.1.js +79 -0
  64. package/build/dex/trader-joe-v2.1.js.map +1 -0
  65. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  66. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  67. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  68. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  69. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  70. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  71. package/build/executor/types.d.ts +2 -1
  72. package/build/executor/types.js +1 -0
  73. package/build/executor/types.js.map +1 -1
  74. package/build/generic-swap-transaction-builder.js +8 -3
  75. package/build/generic-swap-transaction-builder.js.map +1 -1
  76. package/config.ts +1946 -0
  77. package/package.json +1 -1
  78. package/src/dex/dexs.txt +58 -0
  79. package/src/dex/solidly-v3/solidly-v3.ts +7 -0
  80. package/src/executor/types.ts +1 -0
  81. package/src/generic-swap-transaction-builder.ts +14 -3
  82. package/build/abi/inception/inception-ineth-pool.json +0 -1062
  83. package/build/abi/inception/inception-ineth.json +0 -609
  84. package/build/abi/inception/inception-ratio-feed.json +0 -93
  85. package/build/abi/inception/inception-vault.json +0 -991
  86. package/build/abi/infusion/InfusionFactory.json +0 -147
  87. package/build/abi/infusion/InfusionPair.json +0 -658
  88. package/build/abi/infusion/InfusionRouter.json +0 -442
  89. package/build/abi/oswap/oswap.abi.json +0 -452
  90. package/build/dex/idle-dao/idle-dao-pool.d.ts +0 -56
  91. package/build/dex/idle-dao/idle-dao-pool.js +0 -176
  92. package/build/dex/idle-dao/idle-dao-pool.js.map +0 -1
  93. package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +0 -16
  94. package/build/dex/idle-dao/idle-dao-pooling-pool.js +0 -57
  95. package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +0 -1
  96. package/build/dex/idle-dao/scripts.d.ts +0 -9
  97. package/build/dex/idle-dao/scripts.js +0 -552
  98. package/build/dex/idle-dao/scripts.js.map +0 -1
  99. package/build/dex/inception/config.d.ts +0 -5
  100. package/build/dex/inception/config.js +0 -112
  101. package/build/dex/inception/config.js.map +0 -1
  102. package/build/dex/inception/inception-event-pool.d.ts +0 -23
  103. package/build/dex/inception/inception-event-pool.js +0 -34
  104. package/build/dex/inception/inception-event-pool.js.map +0 -1
  105. package/build/dex/inception/inception-native.d.ts +0 -43
  106. package/build/dex/inception/inception-native.js +0 -131
  107. package/build/dex/inception/inception-native.js.map +0 -1
  108. package/build/dex/inception/inception-pool.d.ts +0 -18
  109. package/build/dex/inception/inception-pool.js +0 -32
  110. package/build/dex/inception/inception-pool.js.map +0 -1
  111. package/build/dex/inception/inception-price-feed.d.ts +0 -19
  112. package/build/dex/inception/inception-price-feed.js +0 -51
  113. package/build/dex/inception/inception-price-feed.js.map +0 -1
  114. package/build/dex/inception/inception.d.ts +0 -44
  115. package/build/dex/inception/inception.js +0 -162
  116. package/build/dex/inception/inception.js.map +0 -1
  117. package/build/dex/inception/tokens.d.ts +0 -9
  118. package/build/dex/inception/tokens.js +0 -28
  119. package/build/dex/inception/tokens.js.map +0 -1
  120. package/build/dex/inception/types.d.ts +0 -22
  121. package/build/dex/inception/types.js +0 -3
  122. package/build/dex/inception/types.js.map +0 -1
  123. package/build/dex/inception/utils.d.ts +0 -7
  124. package/build/dex/inception/utils.js +0 -58
  125. package/build/dex/inception/utils.js.map +0 -1
  126. package/build/dex/infusion/config.d.ts +0 -4
  127. package/build/dex/infusion/config.js +0 -25
  128. package/build/dex/infusion/config.js.map +0 -1
  129. package/build/dex/infusion/infusion-stable-pool.d.ts +0 -4
  130. package/build/dex/infusion/infusion-stable-pool.js +0 -74
  131. package/build/dex/infusion/infusion-stable-pool.js.map +0 -1
  132. package/build/dex/infusion/infusion.d.ts +0 -54
  133. package/build/dex/infusion/infusion.js +0 -510
  134. package/build/dex/infusion/infusion.js.map +0 -1
  135. package/build/dex/infusion/types.d.ts +0 -47
  136. package/build/dex/infusion/types.js +0 -3
  137. package/build/dex/infusion/types.js.map +0 -1
  138. package/build/dex/infusion/utils/isStablePair.d.ts +0 -2
  139. package/build/dex/infusion/utils/isStablePair.js +0 -18
  140. package/build/dex/infusion/utils/isStablePair.js.map +0 -1
  141. package/build/dex/oswap/config.d.ts +0 -5
  142. package/build/dex/oswap/config.js +0 -31
  143. package/build/dex/oswap/config.js.map +0 -1
  144. package/build/dex/oswap/oswap-pool.d.ts +0 -51
  145. package/build/dex/oswap/oswap-pool.js +0 -150
  146. package/build/dex/oswap/oswap-pool.js.map +0 -1
  147. package/build/dex/oswap/oswap.d.ts +0 -46
  148. package/build/dex/oswap/oswap.js +0 -263
  149. package/build/dex/oswap/oswap.js.map +0 -1
  150. package/build/dex/oswap/types.d.ts +0 -20
  151. package/build/dex/oswap/types.js +0 -3
  152. package/build/dex/oswap/types.js.map +0 -1
@@ -1,510 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Infusion = exports.InfusionRouterFunctions = void 0;
7
- const uniswap_v2_1 = require("../uniswap-v2/uniswap-v2");
8
- const constants_1 = require("../../constants");
9
- const erc20_json_1 = __importDefault(require("../../abi/erc20.json"));
10
- const utils_1 = require("../../utils");
11
- const InfusionFactory_json_1 = __importDefault(require("../../abi/infusion/InfusionFactory.json"));
12
- const InfusionPair_json_1 = __importDefault(require("../../abi/infusion/InfusionPair.json"));
13
- const InfusionRouter_json_1 = __importDefault(require("../../abi/infusion/InfusionRouter.json"));
14
- const lodash_1 = __importDefault(require("lodash"));
15
- const core_1 = require("@paraswap/core");
16
- const abi_1 = require("@ethersproject/abi");
17
- const infusion_stable_pool_1 = require("./infusion-stable-pool");
18
- const uniswap_v2_constant_product_pool_1 = require("../uniswap-v2/uniswap-v2-constant-product-pool");
19
- const config_1 = require("./config");
20
- const token_transfer_fee_1 = require("../../lib/token-transfer-fee");
21
- const isStablePair_1 = require("./utils/isStablePair");
22
- var InfusionRouterFunctions;
23
- (function (InfusionRouterFunctions) {
24
- InfusionRouterFunctions["sellExactEth"] = "swapExactETHForTokens";
25
- InfusionRouterFunctions["sellExactToken"] = "swapExactTokensForETH";
26
- InfusionRouterFunctions["swapExactIn"] = "swapExactTokensForTokens";
27
- })(InfusionRouterFunctions = exports.InfusionRouterFunctions || (exports.InfusionRouterFunctions = {}));
28
- const VelodromeFactoryABI = [
29
- {
30
- inputs: [{ internalType: 'bool', name: '_stable', type: 'bool' }],
31
- name: 'getFee',
32
- outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
33
- stateMutability: 'view',
34
- type: 'function',
35
- },
36
- ];
37
- const velodromeFactoryIface = new abi_1.Interface(VelodromeFactoryABI);
38
- const erc20Iface = new abi_1.Interface(erc20_json_1.default);
39
- const infusionPairIface = new abi_1.Interface(InfusionPair_json_1.default);
40
- const defaultAbiCoder = new abi_1.AbiCoder();
41
- class Infusion extends uniswap_v2_1.UniswapV2 {
42
- constructor(network, dexKey, dexHelper, isDynamicFees = true, factoryAddress, subgraphURL, initCode, feeCode, poolGasCost, routerAddress) {
43
- super(network, dexKey, dexHelper, isDynamicFees, factoryAddress !== undefined
44
- ? factoryAddress
45
- : config_1.InfusionConfig[dexKey][network].factoryAddress, subgraphURL === ''
46
- ? undefined
47
- : subgraphURL !== undefined
48
- ? subgraphURL
49
- : config_1.InfusionConfig[dexKey][network].subgraphURL, initCode !== undefined
50
- ? initCode
51
- : config_1.InfusionConfig[dexKey][network].initCode, feeCode !== undefined ? feeCode : config_1.InfusionConfig[dexKey][network].feeCode, poolGasCost !== undefined
52
- ? poolGasCost
53
- : config_1.InfusionConfig[dexKey][network].poolGasCost, infusionPairIface, config_1.Adapters[network] || undefined);
54
- this.network = network;
55
- this.dexHelper = dexHelper;
56
- this.pairs = {};
57
- this.isFeeOnTransferSupported = true;
58
- this.SRC_TOKEN_DEX_TRANSFERS = 1;
59
- this.DEST_TOKEN_DEX_TRANSFERS = 1;
60
- this.stableFee = config_1.InfusionConfig[dexKey][network].stableFee;
61
- this.volatileFee = config_1.InfusionConfig[dexKey][network].volatileFee;
62
- this.factory = new dexHelper.web3Provider.eth.Contract(InfusionFactory_json_1.default, factoryAddress !== undefined
63
- ? factoryAddress
64
- : config_1.InfusionConfig[dexKey][network].factoryAddress);
65
- this.router =
66
- routerAddress !== undefined
67
- ? routerAddress
68
- : config_1.InfusionConfig[dexKey][network].router || '';
69
- this.feeFactor =
70
- config_1.InfusionConfig[dexKey][network].feeFactor || this.feeFactor;
71
- // this.exchangeRouterInterface = new Interface(infusionRouterABI);
72
- }
73
- async findInfusionPair(from, to, stable) {
74
- if (from.address.toLowerCase() === to.address.toLowerCase())
75
- return null;
76
- const [token0, token1] = from.address.toLowerCase() < to.address.toLowerCase()
77
- ? [from, to]
78
- : [to, from];
79
- const typePostfix = this.poolPostfix(stable);
80
- const key = `${token0.address.toLowerCase()}-${token1.address.toLowerCase()}-${typePostfix}`;
81
- let pair = this.pairs[key];
82
- if (pair)
83
- return pair;
84
- let exchange = await this.factory.methods
85
- // Infusion has additional boolean parameter "StablePool"
86
- // At first we look for uniswap-like volatile pool
87
- .getPair(token0.address, token1.address, stable)
88
- .call();
89
- if (exchange === constants_1.NULL_ADDRESS) {
90
- pair = { token0, token1, stable };
91
- }
92
- else {
93
- pair = { token0, token1, exchange, stable };
94
- }
95
- this.pairs[key] = pair;
96
- return pair;
97
- }
98
- async batchCatchUpPairs(pairs, blockNumber) {
99
- if (!blockNumber)
100
- return;
101
- const pairsToFetch = [];
102
- for (const _pair of pairs) {
103
- for (const stable of [false, true]) {
104
- const pair = await this.findInfusionPair(_pair[0], _pair[1], stable);
105
- if (!(pair && pair.exchange))
106
- continue;
107
- if (!pair.pool) {
108
- pairsToFetch.push(pair);
109
- }
110
- else if (!pair.pool.getState(blockNumber)) {
111
- pairsToFetch.push(pair);
112
- }
113
- }
114
- }
115
- if (!pairsToFetch.length)
116
- return;
117
- const reserves = await this.getManyPoolReserves(pairsToFetch, blockNumber);
118
- if (reserves.length !== pairsToFetch.length) {
119
- this.logger.error(`Error_getManyPoolReserves didn't get any pool reserves`);
120
- }
121
- for (let i = 0; i < pairsToFetch.length; i++) {
122
- const pairState = reserves[i];
123
- const pair = pairsToFetch[i];
124
- if (!pair.pool) {
125
- await this.addPool(pair, pairState.reserves0, pairState.reserves1, pairState.feeCode, blockNumber);
126
- }
127
- else
128
- pair.pool.setState(pairState, blockNumber);
129
- }
130
- }
131
- async getManyPoolReserves(pairs, blockNumber) {
132
- try {
133
- const multiCallFeeData = pairs.map(pair => this.getFeesMultiCallData(pair));
134
- const calldata = pairs
135
- .map((pair, i) => {
136
- let calldata = [
137
- {
138
- target: pair.token0.address,
139
- callData: erc20Iface.encodeFunctionData('balanceOf', [
140
- pair.exchange,
141
- ]),
142
- },
143
- {
144
- target: pair.token1.address,
145
- callData: erc20Iface.encodeFunctionData('balanceOf', [
146
- pair.exchange,
147
- ]),
148
- },
149
- ];
150
- if (this.isDynamicFees)
151
- calldata.push(multiCallFeeData[i].callEntry);
152
- return calldata;
153
- })
154
- .flat();
155
- const data = await this.dexHelper.multiContract.methods
156
- .aggregate(calldata)
157
- .call({}, blockNumber);
158
- const returnData = lodash_1.default.chunk(data.returnData, this.isDynamicFees ? 3 : 2);
159
- return pairs.map((pair, i) => ({
160
- reserves0: defaultAbiCoder
161
- .decode(['uint256'], returnData[i][0])[0]
162
- .toString(),
163
- reserves1: defaultAbiCoder
164
- .decode(['uint256'], returnData[i][1])[0]
165
- .toString(),
166
- feeCode: this.isDynamicFees
167
- ? multiCallFeeData[i].callDecoder(returnData[i][2])
168
- : (pair.stable ? this.stableFee : this.volatileFee) || this.feeCode,
169
- }));
170
- }
171
- catch (e) {
172
- this.logger.error(`Error_getManyPoolReserves could not get reserves with error:`, e);
173
- return [];
174
- }
175
- }
176
- async getSellPrice(priceParams, srcAmount) {
177
- return priceParams.stable
178
- ? infusion_stable_pool_1.InfusionStablePool.getSellPrice(priceParams, srcAmount, this.feeFactor)
179
- : uniswap_v2_constant_product_pool_1.Uniswapv2ConstantProductPool.getSellPrice(priceParams, srcAmount, this.feeFactor);
180
- }
181
- async getBuyPrice(priceParams, srcAmount) {
182
- if (priceParams.stable)
183
- throw new Error(`Buy not supported`);
184
- return uniswap_v2_constant_product_pool_1.Uniswapv2ConstantProductPool.getBuyPrice(priceParams, srcAmount, this.feeFactor);
185
- }
186
- async getPricesVolume(_from, _to, amounts, side, blockNumber,
187
- // list of pool identifiers to use for pricing, if undefined use all pools
188
- limitPools, transferFees = {
189
- srcFee: 0,
190
- destFee: 0,
191
- srcDexFee: 0,
192
- destDexFee: 0,
193
- }) {
194
- try {
195
- if (side === core_1.SwapSide.BUY)
196
- return null; // Buy side not implemented yet
197
- const from = this.dexHelper.config.wrapETH(_from);
198
- const to = this.dexHelper.config.wrapETH(_to);
199
- if (from.address.toLowerCase() === to.address.toLowerCase()) {
200
- return null;
201
- }
202
- const tokenAddress = [
203
- from.address.toLowerCase(),
204
- to.address.toLowerCase(),
205
- ]
206
- .sort((a, b) => (a > b ? 1 : -1))
207
- .join('_');
208
- await this.batchCatchUpPairs([[from, to]], blockNumber);
209
- const resultPromises = [false, true].map(async (stable) => {
210
- // We don't support fee on transfer for stable pools yet
211
- if (stable &&
212
- (transferFees.srcFee !== 0 || transferFees.srcDexFee !== 0)) {
213
- return null;
214
- }
215
- const poolIdentifier = `${this.dexKey}_${tokenAddress}` + this.poolPostfix(stable);
216
- if (limitPools && limitPools.every(p => p !== poolIdentifier))
217
- return null;
218
- const isSell = side === core_1.SwapSide.SELL;
219
- const pairParam = await this.getInfusionPairOrderedParams(from, to, blockNumber, stable, transferFees.srcDexFee);
220
- if (!pairParam)
221
- return null;
222
- const unitAmount = (0, utils_1.getBigIntPow)(
223
- // @ts-expect-error Buy side is not implemented yet
224
- side === core_1.SwapSide.BUY ? to.decimals : from.decimals);
225
- const [unitVolumeWithFee, ...amountsWithFee] = (0, token_transfer_fee_1.applyTransferFee)([unitAmount, ...amounts], side, isSell ? transferFees.srcFee : transferFees.destFee, isSell ? constants_1.SRC_TOKEN_PARASWAP_TRANSFERS : constants_1.DEST_TOKEN_PARASWAP_TRANSFERS);
226
- const unit =
227
- // @ts-expect-error Buy side is not implemented yet
228
- side === core_1.SwapSide.BUY
229
- ? await this.getBuyPricePath(unitVolumeWithFee, [pairParam])
230
- : await this.getSellPricePath(unitVolumeWithFee, [pairParam]);
231
- const prices =
232
- // @ts-expect-error Buy side is not implemented yet
233
- side === core_1.SwapSide.BUY
234
- ? await Promise.all(amountsWithFee.map(amount => amount === 0n
235
- ? 0n
236
- : this.getBuyPricePath(amount, [pairParam])))
237
- : await Promise.all(amountsWithFee.map(amount => amount === 0n
238
- ? 0n
239
- : this.getSellPricePath(amount, [pairParam])));
240
- const [unitOutWithFee, ...outputsWithFee] = (0, token_transfer_fee_1.applyTransferFee)([unit, ...prices], side,
241
- // This part is confusing, because we treat differently SELL and BUY fees
242
- // If Buy, we should apply transfer fee on srcToken on top of dexFee applied earlier
243
- // But for Sell we should apply only one dexFee
244
- isSell ? transferFees.destDexFee : transferFees.srcFee, isSell ? this.DEST_TOKEN_DEX_TRANSFERS : constants_1.SRC_TOKEN_PARASWAP_TRANSFERS);
245
- return {
246
- prices: outputsWithFee,
247
- unit: unitOutWithFee,
248
- data: {
249
- router: this.router,
250
- path: [from.address.toLowerCase(), to.address.toLowerCase()],
251
- factory: this.factoryAddress,
252
- initCode: this.initCode,
253
- feeFactor: this.feeFactor,
254
- isFeeTokenInRoute: Object.values(transferFees).some(f => f !== 0),
255
- pools: [
256
- {
257
- address: pairParam.exchange,
258
- fee: parseInt(pairParam.fee),
259
- direction: pairParam.direction,
260
- },
261
- ],
262
- },
263
- exchange: this.dexKey,
264
- poolIdentifier,
265
- gasCost: this.poolGasCost,
266
- poolAddresses: [pairParam.exchange],
267
- };
268
- });
269
- const resultPools = (await Promise.all(resultPromises));
270
- const resultPoolsFiltered = resultPools.filter(item => !!item); // filter null elements
271
- return resultPoolsFiltered.length > 0 ? resultPoolsFiltered : null;
272
- }
273
- catch (e) {
274
- if (blockNumber === 0)
275
- this.logger.error(`Error_getPricesVolume: Aurelius block manager not yet instantiated`);
276
- this.logger.error(`Error_getPrices:`, e);
277
- return null;
278
- }
279
- }
280
- async getTopPoolsForToken(tokenAddress, count) {
281
- if (!this.subgraphURL)
282
- return [];
283
- let stableFieldKey = 'isStable';
284
- // if (this.dexKey.toLowerCase() === 'infusion') {
285
- // stableFieldKey = 'stable';
286
- // } else if (this.dexKey.toLowerCase() !== 'infusionv2') {
287
- // stableFieldKey = 'isStable';
288
- // }
289
- const query = `query ($token: Bytes!, $count: Int) {
290
- pools0: pairs(first: $count, orderBy: reserveUSD, orderDirection: desc, where: {token0: $token, reserve0_gt: 1, reserve1_gt: 1}) {
291
- id
292
- ${stableFieldKey}
293
- token0 {
294
- id
295
- decimals
296
- }
297
- token1 {
298
- id
299
- decimals
300
- }
301
- reserveUSD
302
- }
303
- pools1: pairs(first: $count, orderBy: reserveUSD, orderDirection: desc, where: {token1: $token, reserve0_gt: 1, reserve1_gt: 1}) {
304
- id
305
- ${stableFieldKey}
306
- token0 {
307
- id
308
- decimals
309
- }
310
- token1 {
311
- id
312
- decimals
313
- }
314
- reserveUSD
315
- }
316
- }`;
317
- const { data } = await this.dexHelper.httpRequest.post(this.subgraphURL, {
318
- query,
319
- variables: { token: tokenAddress.toLowerCase(), count },
320
- }, constants_1.SUBGRAPH_TIMEOUT);
321
- if (!(data && data.pools0 && data.pools1))
322
- throw new Error("Couldn't fetch the pools from the subgraph");
323
- const pools0 = lodash_1.default.map(data.pools0, pool => ({
324
- exchange: this.dexKey,
325
- stable: pool[stableFieldKey],
326
- address: pool.id.toLowerCase(),
327
- connectorTokens: [
328
- {
329
- address: pool.token1.id.toLowerCase(),
330
- decimals: parseInt(pool.token1.decimals),
331
- },
332
- ],
333
- liquidityUSD: parseFloat(pool.reserveUSD),
334
- }));
335
- const pools1 = lodash_1.default.map(data.pools1, pool => ({
336
- exchange: this.dexKey,
337
- stable: pool[stableFieldKey],
338
- address: pool.id.toLowerCase(),
339
- connectorTokens: [
340
- {
341
- address: pool.token0.id.toLowerCase(),
342
- decimals: parseInt(pool.token0.decimals),
343
- },
344
- ],
345
- liquidityUSD: parseFloat(pool.reserveUSD),
346
- }));
347
- return lodash_1.default.slice(lodash_1.default.sortBy(lodash_1.default.concat(pools0, pools1), [pool => -1 * pool.liquidityUSD]), 0, count);
348
- }
349
- // Same as at uniswap-v2-pool.json, but extended with decimals and stable
350
- async getInfusionPairOrderedParams(from, to, blockNumber, stable, tokenDexTransferFee) {
351
- const pair = await this.findInfusionPair(from, to, stable);
352
- if (!(pair && pair.pool && pair.exchange))
353
- return null;
354
- const pairState = pair?.pool.getState(blockNumber);
355
- if (!pairState) {
356
- this.logger.error(`Error_orderPairParams expected reserves, got none (maybe the pool doesn't exist) ${from.symbol || from.address} ${to.symbol || to.address}`);
357
- return null;
358
- }
359
- const fee = (pairState.feeCode + tokenDexTransferFee).toString();
360
- const pairReversed = pair.token1.address.toLowerCase() === from.address.toLowerCase();
361
- if (pairReversed) {
362
- return {
363
- tokenIn: from.address,
364
- tokenOut: to.address,
365
- reservesIn: pairState.reserves1,
366
- reservesOut: pairState.reserves0,
367
- fee,
368
- direction: false,
369
- exchange: pair.exchange,
370
- decimalsIn: from.decimals,
371
- decimalsOut: to.decimals,
372
- stable,
373
- };
374
- }
375
- return {
376
- tokenIn: from.address,
377
- tokenOut: to.address,
378
- reservesIn: pairState.reserves0,
379
- reservesOut: pairState.reserves1,
380
- fee,
381
- direction: true,
382
- exchange: pair.exchange,
383
- decimalsIn: from.decimals,
384
- decimalsOut: to.decimals,
385
- stable,
386
- };
387
- }
388
- async getPoolIdentifiers(_from, _to, side, blockNumber) {
389
- if (side === core_1.SwapSide.BUY)
390
- return [];
391
- const from = this.dexHelper.config.wrapETH(_from);
392
- const to = this.dexHelper.config.wrapETH(_to);
393
- if (from.address.toLowerCase() === to.address.toLowerCase()) {
394
- return [];
395
- }
396
- const tokenAddress = [from.address.toLowerCase(), to.address.toLowerCase()]
397
- .sort((a, b) => (a > b ? 1 : -1))
398
- .join('_');
399
- const poolIdentifier = `${this.dexKey}_${tokenAddress}`;
400
- const poolIdentifierUniswap = poolIdentifier + this.poolPostfix(false);
401
- const poolIdentifierStable = poolIdentifier + this.poolPostfix(true);
402
- return [poolIdentifierUniswap, poolIdentifierStable];
403
- }
404
- poolPostfix(stable) {
405
- return stable ? 'S' : 'V';
406
- }
407
- async getSimpleParam(src, dest, srcAmount, destAmount, data, side) {
408
- if (side === core_1.SwapSide.BUY)
409
- throw new Error(`Buy not supported`);
410
- let routerMethod;
411
- let routerArgs;
412
- const stable = (0, isStablePair_1.isStablePair)(this.network, src, dest);
413
- const from = (0, utils_1.isETHAddress)(src)
414
- ? this.dexHelper.config.data.wrappedNativeTokenAddress
415
- : src;
416
- const to = (0, utils_1.isETHAddress)(dest)
417
- ? this.dexHelper.config.data.wrappedNativeTokenAddress
418
- : dest;
419
- routerMethod = (0, utils_1.isETHAddress)(src)
420
- ? InfusionRouterFunctions.sellExactEth
421
- : InfusionRouterFunctions.swapExactIn;
422
- routerMethod = (0, utils_1.isETHAddress)(dest)
423
- ? InfusionRouterFunctions.sellExactToken
424
- : routerMethod;
425
- routerArgs = (0, utils_1.isETHAddress)(src)
426
- ? [
427
- destAmount,
428
- [{ from, to, stable }],
429
- this.augustusAddress,
430
- Math.floor(new Date().getTime()) + 120,
431
- ]
432
- : [
433
- srcAmount,
434
- destAmount,
435
- [{ from, to, stable }],
436
- this.augustusAddress,
437
- Math.floor(new Date().getTime()) + 120,
438
- ];
439
- // console.log('routerMethod', routerMethod, 'routerArgs', routerArgs);
440
- const swapData = new abi_1.Interface(InfusionRouter_json_1.default).encodeFunctionData(routerMethod, routerArgs);
441
- return this.buildSimpleParamWithoutWETHConversion(src, srcAmount, dest, destAmount, swapData, data.router);
442
- }
443
- getAdapterParam(srcToken, destToken, srcAmount, toAmount, // required for buy case
444
- data, side) {
445
- return {
446
- targetExchange: data.router,
447
- payload: '',
448
- networkFee: '0',
449
- };
450
- }
451
- getDexParam(src, dest, srcAmount, destAmount, recipient, data, side) {
452
- if (side === core_1.SwapSide.BUY)
453
- throw new Error(`Buy not supported`);
454
- let routerMethod;
455
- let routerArgs;
456
- const stable = (0, isStablePair_1.isStablePair)(this.network, src, dest);
457
- const from = (0, utils_1.isETHAddress)(src)
458
- ? this.dexHelper.config.data.wrappedNativeTokenAddress
459
- : src;
460
- const to = (0, utils_1.isETHAddress)(dest)
461
- ? this.dexHelper.config.data.wrappedNativeTokenAddress
462
- : dest;
463
- routerMethod = (0, utils_1.isETHAddress)(src)
464
- ? InfusionRouterFunctions.sellExactEth
465
- : InfusionRouterFunctions.swapExactIn;
466
- routerMethod = (0, utils_1.isETHAddress)(dest)
467
- ? InfusionRouterFunctions.sellExactToken
468
- : routerMethod;
469
- routerArgs = (0, utils_1.isETHAddress)(src)
470
- ? [
471
- destAmount,
472
- [{ from, to, stable }],
473
- recipient,
474
- Math.floor(new Date().getTime()) + 120,
475
- ]
476
- : [
477
- srcAmount,
478
- destAmount,
479
- [{ from, to, stable }],
480
- recipient,
481
- Math.floor(new Date().getTime()) + 120,
482
- ];
483
- const exchangeData = new abi_1.Interface(InfusionRouter_json_1.default).encodeFunctionData(routerMethod, routerArgs);
484
- return {
485
- needWrapNative: this.needWrapNative,
486
- dexFuncHasRecipient: true,
487
- exchangeData,
488
- targetExchange: data.router,
489
- returnAmountPos: undefined,
490
- };
491
- }
492
- getFeesMultiCallData(pair) {
493
- const callEntry = {
494
- target: this.factoryAddress,
495
- callData: velodromeFactoryIface.encodeFunctionData('getFee', [
496
- pair.stable,
497
- ]),
498
- };
499
- const callDecoder = (values) => parseInt(velodromeFactoryIface
500
- .decodeFunctionResult('getFee', values)[0]
501
- .toString());
502
- return {
503
- callEntry,
504
- callDecoder,
505
- };
506
- }
507
- }
508
- exports.Infusion = Infusion;
509
- Infusion.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(lodash_1.default.pick(config_1.InfusionConfig, ['Infusion']));
510
- //# sourceMappingURL=infusion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"infusion.js","sourceRoot":"","sources":["../../../src/dex/infusion/infusion.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import { UniswapV2Data, UniswapV2PoolOrderedParams, DexParams as UniswapV2DexParams, UniswapPool } from '../uniswap-v2/types';
2
- import { UniswapV2Pair } from '../uniswap-v2/uniswap-v2';
3
- export declare type PoolState = {
4
- reserves0: string;
5
- reserves1: string;
6
- feeCode: number;
7
- };
8
- export interface InfusionPoolOrderedParams extends UniswapV2PoolOrderedParams {
9
- decimalsIn: number;
10
- decimalsOut: number;
11
- stable: boolean;
12
- }
13
- export declare type InfusionData = UniswapV2Data & {
14
- isFeeTokenInRoute: boolean;
15
- };
16
- export declare type InfusionPool = UniswapPool;
17
- export interface DexParams extends Omit<UniswapV2DexParams, 'feeCode'> {
18
- feeCode: number;
19
- stableFee?: number;
20
- volatileFee?: number;
21
- feeFactor?: number;
22
- }
23
- export interface InfusionPair extends UniswapV2Pair {
24
- stable: boolean;
25
- }
26
- export declare type InfusionParam = SellOnInfusionParam | SellETHOnInfusionParam;
27
- export declare type SellOnInfusionParam = [
28
- amountIn: string,
29
- amountOutMin: string,
30
- routes: {
31
- from: string;
32
- to: string;
33
- stable: boolean;
34
- }[],
35
- to: string,
36
- deadline: number
37
- ];
38
- export declare type SellETHOnInfusionParam = [
39
- amountOutMin: string,
40
- routes: {
41
- from: string;
42
- to: string;
43
- stable: boolean;
44
- }[],
45
- to: string,
46
- deadline: number
47
- ];
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/infusion/types.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export declare const stablecoins: Record<number, string[]>;
2
- export declare function isStablePair(chainId: number, tokenA: string, tokenB: string): boolean;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isStablePair = exports.stablecoins = void 0;
4
- const constants_1 = require("../../../constants");
5
- exports.stablecoins = {
6
- [constants_1.Network.BASE]: [
7
- '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'.toLowerCase(),
8
- '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA'.toLowerCase(),
9
- '0xEB466342C4d449BC9f53A865D5Cb90586f405215'.toLowerCase(), // axelar usdc
10
- ],
11
- };
12
- function isStablePair(chainId, tokenA, tokenB) {
13
- const stables = exports.stablecoins[chainId];
14
- return (stables.includes(tokenA.toLocaleLowerCase()) &&
15
- stables.includes(tokenB.toLocaleLowerCase()));
16
- }
17
- exports.isStablePair = isStablePair;
18
- //# sourceMappingURL=isStablePair.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isStablePair.js","sourceRoot":"","sources":["../../../../src/dex/infusion/utils/isStablePair.ts"],"names":[],"mappings":";;;AAAA,kDAA6C;AAEhC,QAAA,WAAW,GAA6B;IACnD,CAAC,mBAAO,CAAC,IAAI,CAAC,EAAE;QACd,4CAA4C,CAAC,WAAW,EAAE;QAC1D,4CAA4C,CAAC,WAAW,EAAE;QAC1D,4CAA4C,CAAC,WAAW,EAAE,EAAE,cAAc;KAC3E;CACF,CAAC;AAEF,SAAgB,YAAY,CAAC,OAAe,EAAE,MAAc,EAAE,MAAc;IAC1E,MAAM,OAAO,GAAG,mBAAW,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAC7C,CAAC;AACJ,CAAC;AAPD,oCAOC"}
@@ -1,5 +0,0 @@
1
- import { DexParams } from './types';
2
- import { DexConfigMap, AdapterMappings } from '../../types';
3
- export declare const OSWAP_GAS_COST = 80000;
4
- export declare const OSwapConfig: DexConfigMap<DexParams>;
5
- export declare const Adapters: Record<number, AdapterMappings>;
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Adapters = exports.OSwapConfig = exports.OSWAP_GAS_COST = void 0;
4
- const constants_1 = require("../../constants");
5
- exports.OSWAP_GAS_COST = 80000;
6
- // Important:
7
- // - All addresses should be lower case.
8
- // - Only tokens with 18 decimals are supported.
9
- exports.OSwapConfig = {
10
- OSwap: {
11
- [constants_1.Network.MAINNET]: {
12
- pools: [
13
- {
14
- id: 'OSwap_0x85b78aca6deae198fbf201c82daf6ca21942acc6',
15
- address: '0x85b78aca6deae198fbf201c82daf6ca21942acc6',
16
- token0: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
17
- token1: '0xae7ab96520de3a18e5e111b5eaab095312d7fe84', // STETH
18
- },
19
- ],
20
- },
21
- },
22
- };
23
- exports.Adapters = {
24
- [constants_1.Network.MAINNET]: {
25
- // Note: We re-use the SmarDex adapters since it implements
26
- // an Uniswap V2 router compatible interface, which OSwap supports.
27
- [constants_1.SwapSide.SELL]: [{ name: 'Adapter04', index: 6 }],
28
- [constants_1.SwapSide.BUY]: [{ name: 'BuyAdapter02', index: 2 }],
29
- },
30
- };
31
- //# sourceMappingURL=config.js.map