@paraswap/dex-lib 4.6.3-pool-tracker-data.0 → 4.6.3-pool-tracker-data.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.
- package/build/abi/algebra-integral/blackhole-cl/Quoter.abi.json +325 -0
- package/build/abi/lite-psm/pot.json +322 -0
- package/build/abi/lite-psm/psm.json +24 -249
- package/build/abi/lite-psm/vat.json +363 -0
- package/build/config.js +0 -2
- package/build/config.js.map +1 -1
- package/build/dex/aave-gsm/aave-gsm.js +1 -1
- package/build/dex/aave-gsm/aave-gsm.js.map +1 -1
- package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.d.ts +52 -0
- package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.js +363 -0
- package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.js.map +1 -0
- package/build/dex/aave-pt-to-usdc/config.d.ts +3 -0
- package/build/dex/aave-pt-to-usdc/config.js +59 -0
- package/build/dex/aave-pt-to-usdc/config.js.map +1 -0
- package/build/dex/aave-pt-to-usdc/constants.d.ts +6 -0
- package/build/dex/aave-pt-to-usdc/constants.js +13 -0
- package/build/dex/aave-pt-to-usdc/constants.js.map +1 -0
- package/build/dex/aave-pt-to-usdc/types.d.ts +34 -0
- package/build/dex/aave-pt-to-usdc/types.js +3 -0
- package/build/dex/aave-pt-to-usdc/types.js.map +1 -0
- package/build/dex/aave-v3/aave-v3.js.map +1 -1
- package/build/dex/algebra-integral/constants.d.ts +3 -0
- package/build/dex/algebra-integral/constants.js +7 -0
- package/build/dex/algebra-integral/constants.js.map +1 -0
- package/build/dex/algebra-integral/forks/blackhole-cl.d.ts +20 -0
- package/build/dex/algebra-integral/forks/blackhole-cl.js +118 -0
- package/build/dex/algebra-integral/forks/blackhole-cl.js.map +1 -0
- package/build/dex/angle-transmuter/angle-transmuter.js +8 -4
- package/build/dex/angle-transmuter/angle-transmuter.js.map +1 -1
- package/build/dex/ekubo/pools/math/sqrt-ratio.d.ts +8 -0
- package/build/dex/ekubo/pools/math/sqrt-ratio.js +113 -0
- package/build/dex/ekubo/pools/math/sqrt-ratio.js.map +1 -0
- package/build/dex/ekubo/pools/mev-resist.d.ts +7 -0
- package/build/dex/ekubo/pools/mev-resist.js +40 -0
- package/build/dex/ekubo/pools/mev-resist.js.map +1 -0
- package/build/dex/ekubo/pools/pool.d.ts +47 -0
- package/build/dex/ekubo/pools/pool.js +76 -0
- package/build/dex/ekubo/pools/pool.js.map +1 -0
- package/build/dex/idle-dao/idle-dao.d.ts +0 -1
- package/build/dex/idle-dao/idle-dao.js +11 -23
- package/build/dex/idle-dao/idle-dao.js.map +1 -1
- package/build/dex/index.js +0 -4
- package/build/dex/index.js.map +1 -1
- package/build/dex/lite-psm/lite-psm-event-pool.js +2 -2
- package/build/dex/lite-psm/lite-psm-event-pool.js.map +1 -1
- package/build/dex/lite-psm/lite-psm.js +4 -3
- package/build/dex/lite-psm/lite-psm.js.map +1 -1
- package/build/dex/maker-psm/maker-psm.d.ts +2 -12
- package/build/dex/maker-psm/maker-psm.js +3 -2
- package/build/dex/maker-psm/maker-psm.js.map +1 -1
- package/build/dex/miro-migrator/miro-migrator-pool.js +4 -6
- package/build/dex/miro-migrator/miro-migrator-pool.js.map +1 -1
- package/build/dex/solidly/forks-override/blackhole.d.ts +23 -0
- package/build/dex/solidly/forks-override/blackhole.js +81 -0
- package/build/dex/solidly/forks-override/blackhole.js.map +1 -0
- package/build/dex/spark/config.js +1 -1
- package/build/dex/spark/config.js.map +1 -1
- package/build/dex/spark/scripts/validate-state.js +1 -1
- package/build/dex/spark/scripts/validate-state.js.map +1 -1
- package/build/types.d.ts +0 -1
- package/package.json +1 -1
|
@@ -0,0 +1,118 @@
|
|
|
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.BlackholeCL = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const constants_1 = require("../../../constants");
|
|
9
|
+
const utils_1 = require("ethers/lib/utils");
|
|
10
|
+
const balancer_fetcher_1 = require("../../../lib/tokens/balancer-fetcher");
|
|
11
|
+
const SwapRouter_abi_json_1 = __importDefault(require("../../../abi/algebra-integral/SwapRouter.abi.json"));
|
|
12
|
+
const Quoter_abi_json_1 = __importDefault(require("../../../abi/algebra-integral/blackhole-cl/Quoter.abi.json"));
|
|
13
|
+
const utils_2 = require("../../../utils");
|
|
14
|
+
const token_transfer_fee_1 = require("../../../lib/token-transfer-fee");
|
|
15
|
+
const config_1 = require("../config");
|
|
16
|
+
const types_1 = require("../../../lib/tokens/types");
|
|
17
|
+
const algebra_integral_1 = require("../algebra-integral");
|
|
18
|
+
const constants_2 = require("../constants");
|
|
19
|
+
const decoders_1 = require("../../../lib/decoders");
|
|
20
|
+
class BlackholeCL extends algebra_integral_1.AlgebraIntegral {
|
|
21
|
+
network;
|
|
22
|
+
dexKey;
|
|
23
|
+
dexHelper;
|
|
24
|
+
routerIface;
|
|
25
|
+
quoterIface;
|
|
26
|
+
config;
|
|
27
|
+
constructor(network, dexKey, dexHelper, routerIface = new utils_1.Interface(SwapRouter_abi_json_1.default), quoterIface = new utils_1.Interface(Quoter_abi_json_1.default), config = config_1.AlgebraIntegralConfig[dexKey][network]) {
|
|
28
|
+
super(network, dexKey, dexHelper, routerIface, quoterIface, config);
|
|
29
|
+
this.network = network;
|
|
30
|
+
this.dexKey = dexKey;
|
|
31
|
+
this.dexHelper = dexHelper;
|
|
32
|
+
this.routerIface = routerIface;
|
|
33
|
+
this.quoterIface = quoterIface;
|
|
34
|
+
this.config = config;
|
|
35
|
+
}
|
|
36
|
+
static dexKeysWithNetwork = (0, utils_2.getDexKeysWithNetwork)(lodash_1.default.pick(config_1.AlgebraIntegralConfig, ['BlackholeCL']));
|
|
37
|
+
async getPricingFromRpc(from, to, amounts, side, pools, transferFees = {
|
|
38
|
+
srcFee: 0,
|
|
39
|
+
destFee: 0,
|
|
40
|
+
srcDexFee: 0,
|
|
41
|
+
destDexFee: 0,
|
|
42
|
+
}) {
|
|
43
|
+
if (pools.length === 0) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
this.logger.warn(`fallback to rpc for ${pools.length} pool(s)`);
|
|
47
|
+
const isSELL = side === constants_1.SwapSide.SELL;
|
|
48
|
+
const requests = pools.map(pool => ({
|
|
49
|
+
owner: pool.poolAddress,
|
|
50
|
+
asset: isSELL ? from.address : to.address,
|
|
51
|
+
assetType: types_1.AssetType.ERC20,
|
|
52
|
+
ids: [{ id: types_1.DEFAULT_ID_ERC20, spenders: [] }],
|
|
53
|
+
}));
|
|
54
|
+
const balances = await (0, balancer_fetcher_1.getBalances)(this.dexHelper.multiWrapper, requests);
|
|
55
|
+
const _isSrcTokenTransferFeeToBeExchanged = (0, utils_2.isSrcTokenTransferFeeToBeExchanged)(transferFees);
|
|
56
|
+
const _isDestTokenTransferFeeToBeExchanged = (0, utils_2.isDestTokenTransferFeeToBeExchanged)(transferFees);
|
|
57
|
+
const unitVolume = (0, utils_2.getBigIntPow)((isSELL ? from : to).decimals);
|
|
58
|
+
const chunks = amounts.length - 1;
|
|
59
|
+
const _width = Math.floor(chunks / this.config.chunksCount);
|
|
60
|
+
const chunkedAmounts = [unitVolume].concat(Array.from(Array(this.config.chunksCount).keys()).map(i => amounts[(i + 1) * _width]));
|
|
61
|
+
const availableAmountsPerPool = pools.map((pool, index) => {
|
|
62
|
+
const balance = balances[index].amounts[types_1.DEFAULT_ID_ERC20_AS_STRING];
|
|
63
|
+
return chunkedAmounts.map(amount => (balance >= amount ? amount : 0n));
|
|
64
|
+
});
|
|
65
|
+
const amountsWithFeePerPool = availableAmountsPerPool.map(poolAmounts => _isSrcTokenTransferFeeToBeExchanged
|
|
66
|
+
? (0, token_transfer_fee_1.applyTransferFee)(poolAmounts, side, transferFees.srcDexFee, constants_1.SRC_TOKEN_DEX_TRANSFERS)
|
|
67
|
+
: poolAmounts);
|
|
68
|
+
const calldata = pools.flatMap((pool, poolIndex) => {
|
|
69
|
+
const amountsForPool = amountsWithFeePerPool[poolIndex];
|
|
70
|
+
return amountsForPool
|
|
71
|
+
.filter(amount => amount !== 0n)
|
|
72
|
+
.map(amount => ({
|
|
73
|
+
target: this.config.quoter,
|
|
74
|
+
gasLimit: constants_2.ALGEBRA_QUOTE_GASLIMIT,
|
|
75
|
+
callData: this.quoterIface.encodeFunctionData(isSELL ? 'quoteExactInputSingle' : 'quoteExactOutputSingle', [[from.address, to.address, pool.deployer, amount.toString(), 0]]),
|
|
76
|
+
decodeFunction: (result) => {
|
|
77
|
+
const parsed = (0, decoders_1.generalDecoder)(result, ['uint256', 'uint256'], // amountOut, amountIn
|
|
78
|
+
[0n, 0n], result => result.map((amount) => amount.toBigInt()));
|
|
79
|
+
return isSELL ? parsed[0] : parsed[1];
|
|
80
|
+
},
|
|
81
|
+
}));
|
|
82
|
+
});
|
|
83
|
+
const data = await this.dexHelper.multiWrapper.tryAggregate(false, calldata);
|
|
84
|
+
let i = 0;
|
|
85
|
+
const result = pools.map((pool, poolIndex) => {
|
|
86
|
+
const amountsForPool = amountsWithFeePerPool[poolIndex];
|
|
87
|
+
const _rates = amountsForPool.map(a => a === 0n ? 0n : data[i++].returnData);
|
|
88
|
+
const _ratesWithFee = _isDestTokenTransferFeeToBeExchanged
|
|
89
|
+
? (0, token_transfer_fee_1.applyTransferFee)(_rates, side, transferFees.destDexFee, constants_1.DEST_TOKEN_DEX_TRANSFERS)
|
|
90
|
+
: _rates;
|
|
91
|
+
const unit = _ratesWithFee[0];
|
|
92
|
+
const prices = (0, utils_2.interpolate)(chunkedAmounts.slice(1), _ratesWithFee.slice(1), amounts, side);
|
|
93
|
+
return {
|
|
94
|
+
prices,
|
|
95
|
+
unit,
|
|
96
|
+
data: {
|
|
97
|
+
feeOnTransfer: _isSrcTokenTransferFeeToBeExchanged,
|
|
98
|
+
path: [
|
|
99
|
+
{
|
|
100
|
+
tokenIn: from.address,
|
|
101
|
+
tokenOut: to.address,
|
|
102
|
+
deployer: pool.deployer,
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
poolIdentifiers: [
|
|
107
|
+
this.getPoolIdentifier(pool.token0, pool.token1, pool.deployer),
|
|
108
|
+
],
|
|
109
|
+
exchange: this.dexKey,
|
|
110
|
+
gasCost: constants_2.ALGEBRA_GAS_COST,
|
|
111
|
+
poolAddresses: [pool.poolAddress],
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.BlackholeCL = BlackholeCL;
|
|
118
|
+
//# sourceMappingURL=blackhole-cl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blackhole-cl.js","sourceRoot":"","sources":["../../../../src/dex/algebra-integral/forks/blackhole-cl.ts"],"names":[],"mappings":"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"}
|
|
@@ -237,15 +237,19 @@ class AngleTransmuter extends simple_exchange_1.SimpleExchange {
|
|
|
237
237
|
const connectorTokens = tokenAddressLower === stableCoinLowercase
|
|
238
238
|
? this.supportedTokens[fiat].filter(token => token.address.toLowerCase() !== stableCoinLowercase)
|
|
239
239
|
: [paramFiat.stablecoin];
|
|
240
|
+
let liquidityUSD;
|
|
241
|
+
if (tokenAddressLower === stableCoinLowercase) {
|
|
242
|
+
liquidityUSD = this.transmuterUSDLiquidity[fiat];
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
liquidityUSD = constants_1.UNLIMITED_USD_LIQUIDITY;
|
|
246
|
+
}
|
|
240
247
|
return [
|
|
241
248
|
{
|
|
242
249
|
exchange: this.dexKey,
|
|
243
250
|
address: paramFiat.transmuter,
|
|
244
251
|
connectorTokens: connectorTokens.slice(0, limit),
|
|
245
|
-
|
|
246
|
-
liquidityUSD: tokenAddressLower === stableCoinLowercase
|
|
247
|
-
? this.transmuterUSDLiquidity[fiat]
|
|
248
|
-
: 1e9,
|
|
252
|
+
liquidityUSD,
|
|
249
253
|
},
|
|
250
254
|
];
|
|
251
255
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angle-transmuter.js","sourceRoot":"","sources":["../../../src/dex/angle-transmuter/angle-transmuter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,+
|
|
1
|
+
{"version":3,"file":"angle-transmuter.js","sourceRoot":"","sources":["../../../src/dex/angle-transmuter/angle-transmuter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BigNumber } from 'ethers';
|
|
2
|
+
export declare const ONE_FLOAT_SQRT_RATIO: bigint;
|
|
3
|
+
export declare function floatSqrtRatioToFixed(sqrtRatioFloat: bigint): bigint;
|
|
4
|
+
export declare function fixedSqrtRatioToFloat(sqrtRatioFixed: bigint): bigint;
|
|
5
|
+
export declare const MAX_SQRT_RATIO_FLOAT: BigNumber;
|
|
6
|
+
export declare const MIN_SQRT_RATIO_FLOAT: BigNumber;
|
|
7
|
+
export declare function nextSqrtRatioFromAmount0(sqrtRatio: bigint, liquidity: bigint, amount0: bigint): bigint | null;
|
|
8
|
+
export declare function nextSqrtRatioFromAmount1(sqrtRatio: bigint, liquidity: bigint, amount1: bigint): bigint | null;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MIN_SQRT_RATIO_FLOAT = exports.MAX_SQRT_RATIO_FLOAT = exports.ONE_FLOAT_SQRT_RATIO = void 0;
|
|
4
|
+
exports.floatSqrtRatioToFixed = floatSqrtRatioToFixed;
|
|
5
|
+
exports.fixedSqrtRatioToFloat = fixedSqrtRatioToFloat;
|
|
6
|
+
exports.nextSqrtRatioFromAmount0 = nextSqrtRatioFromAmount0;
|
|
7
|
+
exports.nextSqrtRatioFromAmount1 = nextSqrtRatioFromAmount1;
|
|
8
|
+
const ethers_1 = require("ethers");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const tick_1 = require("./tick");
|
|
11
|
+
const BIT_MASK = 0xc00000000000000000000000n;
|
|
12
|
+
const NOT_BIT_MASK = 0x3fffffffffffffffffffffffn;
|
|
13
|
+
exports.ONE_FLOAT_SQRT_RATIO = (2n << 94n) | (1n << 62n);
|
|
14
|
+
function floatSqrtRatioToFixed(sqrtRatioFloat) {
|
|
15
|
+
return sqrtRatioFloat === 0n
|
|
16
|
+
? constants_1.TWO_POW_128 // Default value for the case that the passed value comes from an uninitialized pool
|
|
17
|
+
: (sqrtRatioFloat & NOT_BIT_MASK) <<
|
|
18
|
+
(2n + ((sqrtRatioFloat & BIT_MASK) >> 89n));
|
|
19
|
+
}
|
|
20
|
+
function fixedSqrtRatioToFloat(sqrtRatioFixed) {
|
|
21
|
+
if (sqrtRatioFixed >= constants_1.TWO_POW_192) {
|
|
22
|
+
throw new Error('Out of bounds');
|
|
23
|
+
}
|
|
24
|
+
else if (sqrtRatioFixed >= constants_1.TWO_POW_160) {
|
|
25
|
+
return (sqrtRatioFixed >> 98n) + BIT_MASK;
|
|
26
|
+
}
|
|
27
|
+
else if (sqrtRatioFixed >= constants_1.TWO_POW_128) {
|
|
28
|
+
return (sqrtRatioFixed >> 66n) + constants_1.TWO_POW_95;
|
|
29
|
+
}
|
|
30
|
+
else if (sqrtRatioFixed >= constants_1.TWO_POW_96) {
|
|
31
|
+
return (sqrtRatioFixed >> 34n) + constants_1.TWO_POW_94;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return sqrtRatioFixed >> 2n;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.MAX_SQRT_RATIO_FLOAT = ethers_1.BigNumber.from(fixedSqrtRatioToFloat(tick_1.MAX_SQRT_RATIO));
|
|
38
|
+
exports.MIN_SQRT_RATIO_FLOAT = ethers_1.BigNumber.from(fixedSqrtRatioToFloat(tick_1.MIN_SQRT_RATIO));
|
|
39
|
+
function nextSqrtRatioFromAmount0(sqrtRatio, liquidity, amount0) {
|
|
40
|
+
if (amount0 === 0n)
|
|
41
|
+
return sqrtRatio;
|
|
42
|
+
if (liquidity === 0n)
|
|
43
|
+
throw new Error('NO_LIQUIDITY');
|
|
44
|
+
const numerator1 = liquidity << 128n;
|
|
45
|
+
// because quotient is rounded down, this price movement is also rounded towards sqrt_ratio
|
|
46
|
+
if (amount0 < 0n) {
|
|
47
|
+
const product = amount0 * -1n * sqrtRatio;
|
|
48
|
+
if (product >= constants_1.MAX_U256) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const denominator = numerator1 - product;
|
|
52
|
+
if (denominator < 0n) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const num = numerator1 * sqrtRatio;
|
|
56
|
+
const result = num / denominator + (num % denominator === 0n ? 0n : 1n);
|
|
57
|
+
if (result > constants_1.MAX_U256) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const denomP1 = numerator1 / sqrtRatio;
|
|
64
|
+
const denom = denomP1 + amount0;
|
|
65
|
+
const quotient = numerator1 / denom;
|
|
66
|
+
const remainder = numerator1 % denom;
|
|
67
|
+
if (remainder === 0n)
|
|
68
|
+
return quotient;
|
|
69
|
+
const sum = quotient + 1n;
|
|
70
|
+
if (sum > constants_1.MAX_U256)
|
|
71
|
+
return null;
|
|
72
|
+
return sum;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function nextSqrtRatioFromAmount1(sqrtRatio, liquidity, amount1) {
|
|
76
|
+
if (amount1 === 0n)
|
|
77
|
+
return sqrtRatio;
|
|
78
|
+
if (liquidity === 0n)
|
|
79
|
+
throw new Error('NO_LIQUIDITY');
|
|
80
|
+
const amountShifted = amount1 << 128n;
|
|
81
|
+
const quotient = amountShifted / liquidity;
|
|
82
|
+
const remainder = amountShifted % liquidity;
|
|
83
|
+
// because quotient is rounded down, this price movement is also rounded towards sqrt_ratio
|
|
84
|
+
if (amount1 < 0n) {
|
|
85
|
+
// adding amount1, taking out amount0
|
|
86
|
+
const res = sqrtRatio + quotient;
|
|
87
|
+
if (res < 0n) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
if (remainder === 0n) {
|
|
91
|
+
return res;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
if (res != 0n) {
|
|
95
|
+
return res - 1n;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// adding amount1, taking out amount0, price goes up
|
|
104
|
+
const res = sqrtRatio + quotient;
|
|
105
|
+
if (res > constants_1.MAX_U256) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
return res;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=sqrt-ratio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqrt-ratio.js","sourceRoot":"","sources":["../../../../../src/dex/ekubo/pools/math/sqrt-ratio.ts"],"names":[],"mappings":";;;AAiBA,sDAKC;AAED,sDAYC;AASD,4DA8CC;AAED,4DAsCC;AAnID,mCAAmC;AACnC,2CAQqB;AACrB,iCAAwD;AAExD,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAC7C,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAEpC,QAAA,oBAAoB,GAAG,CAAC,EAAK,IAAI,GAAG,CAAC,GAAG,CAAC,EAAI,IAAI,GAAG,CAAC,CAAC;AAEnE,SAAgB,qBAAqB,CAAC,cAAsB;IAC1D,OAAO,cAAc,KAAK,EAAE;QAC1B,CAAC,CAAC,uBAAW,CAAC,oFAAoF;QAClG,CAAC,CAAC,CAAC,cAAc,GAAG,YAAY,CAAC;YAC7B,CAAC,EAAE,GAAG,CAAC,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,qBAAqB,CAAC,cAAsB;IAC1D,IAAI,cAAc,IAAI,uBAAW,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,cAAc,IAAI,uBAAW,EAAE,CAAC;QACzC,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC;IAC5C,CAAC;SAAM,IAAI,cAAc,IAAI,uBAAW,EAAE,CAAC;QACzC,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC,GAAG,sBAAU,CAAC;IAC9C,CAAC;SAAM,IAAI,cAAc,IAAI,sBAAU,EAAE,CAAC;QACxC,OAAO,CAAC,cAAc,IAAI,GAAG,CAAC,GAAG,sBAAU,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,OAAO,cAAc,IAAI,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAEY,QAAA,oBAAoB,GAAG,kBAAS,CAAC,IAAI,CAChD,qBAAqB,CAAC,qBAAc,CAAC,CACtC,CAAC;AACW,QAAA,oBAAoB,GAAG,kBAAS,CAAC,IAAI,CAChD,qBAAqB,CAAC,qBAAc,CAAC,CACtC,CAAC;AAEF,SAAgB,wBAAwB,CACtC,SAAiB,EACjB,SAAiB,EACjB,OAAe;IAEf,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAErC,IAAI,SAAS,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,SAAS,IAAI,IAAI,CAAC;IAErC,2FAA2F;IAC3F,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;QAE1C,IAAI,OAAO,IAAI,oBAAQ,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;QAEzC,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,GAAG,UAAU,GAAG,SAAS,CAAC;QAEnC,MAAM,MAAM,GAAG,GAAG,GAAG,WAAW,GAAG,CAAC,GAAG,GAAG,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAExE,IAAI,MAAM,GAAG,oBAAQ,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;QAEvC,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;QAChC,MAAM,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;QACpC,MAAM,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;QAErC,IAAI,SAAS,KAAK,EAAE;YAAE,OAAO,QAAQ,CAAC;QACtC,MAAM,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC;QAC1B,IAAI,GAAG,GAAG,oBAAQ;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAgB,wBAAwB,CACtC,SAAiB,EACjB,SAAiB,EACjB,OAAe;IAEf,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAErC,IAAI,SAAS,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAEtD,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC;IACtC,MAAM,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAC;IAC3C,MAAM,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;IAE5C,2FAA2F;IAC3F,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACjB,qCAAqC;QACrC,MAAM,GAAG,GAAG,SAAS,GAAG,QAAQ,CAAC;QACjC,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;gBACd,OAAO,GAAG,GAAG,EAAE,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,oDAAoD;QACpD,MAAM,GAAG,GAAG,SAAS,GAAG,QAAQ,CAAC;QACjC,IAAI,GAAG,GAAG,oBAAQ,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DeepReadonly } from 'ts-essentials';
|
|
2
|
+
import { PoolKeyed, Quote } from './pool';
|
|
3
|
+
import { BasePool, BasePoolState } from './base';
|
|
4
|
+
export declare class MevResistPool extends BasePool {
|
|
5
|
+
protected _quote(amount: bigint, isToken1: boolean, state: DeepReadonly<BasePoolState.Object>, sqrtRatioLimit?: bigint): Quote;
|
|
6
|
+
quoteMevResist(this: PoolKeyed, amount: bigint, isToken1: boolean, state: DeepReadonly<BasePoolState.Object>, sqrtRatioLimit?: bigint): Quote<Pick<BasePoolState.Object, 'activeTickIndex' | 'sqrtRatio' | 'liquidity'>>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MevResistPool = void 0;
|
|
4
|
+
const base_1 = require("./base");
|
|
5
|
+
const tick_1 = require("./math/tick");
|
|
6
|
+
const bigint_constants_1 = require("../../../bigint-constants");
|
|
7
|
+
const swap_1 = require("./math/swap");
|
|
8
|
+
const EXTRA_BASE_GAS_COST_OF_ONE_MEV_RESIST_SWAP = 33_500;
|
|
9
|
+
class MevResistPool extends base_1.BasePool {
|
|
10
|
+
_quote(amount, isToken1, state, sqrtRatioLimit) {
|
|
11
|
+
return this.quoteMevResist(amount, isToken1, state, sqrtRatioLimit);
|
|
12
|
+
}
|
|
13
|
+
quoteMevResist(amount, isToken1, state, sqrtRatioLimit) {
|
|
14
|
+
const quote = base_1.BasePool.prototype.quoteBase.call(this, amount, isToken1, state, sqrtRatioLimit);
|
|
15
|
+
const tickAfterSwap = (0, tick_1.approximateSqrtRatioToTick)(quote.stateAfter.sqrtRatio);
|
|
16
|
+
const poolConfig = this.key.config;
|
|
17
|
+
const approximateFeeMultiplier = (Math.abs(tickAfterSwap - state.activeTick) + 1) / poolConfig.tickSpacing;
|
|
18
|
+
let fixedPointAdditionalFee = BigInt(Math.round(approximateFeeMultiplier * Number(poolConfig.fee)));
|
|
19
|
+
if (fixedPointAdditionalFee > bigint_constants_1.BI_MAX_UINT64) {
|
|
20
|
+
fixedPointAdditionalFee = bigint_constants_1.BI_MAX_UINT64;
|
|
21
|
+
}
|
|
22
|
+
let calculatedAmount = quote.calculatedAmount;
|
|
23
|
+
if (amount >= 0n) {
|
|
24
|
+
// Exact input, remove the additional fee from the output
|
|
25
|
+
calculatedAmount -= (0, swap_1.computeFee)(calculatedAmount, fixedPointAdditionalFee);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const inputAmountFee = (0, swap_1.computeFee)(calculatedAmount, poolConfig.fee);
|
|
29
|
+
const inputAmount = calculatedAmount - inputAmountFee;
|
|
30
|
+
const bf = (0, swap_1.amountBeforeFee)(inputAmount, fixedPointAdditionalFee);
|
|
31
|
+
const fee = bf - inputAmount;
|
|
32
|
+
calculatedAmount += fee;
|
|
33
|
+
}
|
|
34
|
+
quote.gasConsumed += EXTRA_BASE_GAS_COST_OF_ONE_MEV_RESIST_SWAP;
|
|
35
|
+
quote.calculatedAmount = calculatedAmount;
|
|
36
|
+
return quote;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.MevResistPool = MevResistPool;
|
|
40
|
+
//# sourceMappingURL=mev-resist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mev-resist.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/mev-resist.ts"],"names":[],"mappings":";;;AAGA,iCAAiD;AACjD,sCAAyD;AACzD,gEAA0D;AAC1D,sCAA0D;AAE1D,MAAM,0CAA0C,GAAG,MAAM,CAAC;AAE1D,MAAa,aAAc,SAAQ,eAAQ;IACtB,MAAM,CACvB,MAAc,EACd,QAAiB,EACjB,KAAyC,EACzC,cAAuB;QAEvB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IACtE,CAAC;IAEM,cAAc,CAEnB,MAAc,EACd,QAAiB,EACjB,KAAyC,EACzC,cAAuB;QAIvB,MAAM,KAAK,GAAG,eAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAC7C,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,KAAK,EACL,cAAc,CACf,CAAC;QAEF,MAAM,aAAa,GAAG,IAAA,iCAA0B,EAC9C,KAAK,CAAC,UAAU,CAAC,SAAS,CAC3B,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,wBAAwB,GAC5B,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC;QAE5E,IAAI,uBAAuB,GAAG,MAAM,CAClC,IAAI,CAAC,KAAK,CAAC,wBAAwB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAC9D,CAAC;QAEF,IAAI,uBAAuB,GAAG,gCAAa,EAAE,CAAC;YAC5C,uBAAuB,GAAG,gCAAa,CAAC;QAC1C,CAAC;QAED,IAAI,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAE9C,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;YACjB,yDAAyD;YACzD,gBAAgB,IAAI,IAAA,iBAAU,EAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,IAAA,iBAAU,EAAC,gBAAgB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;YACpE,MAAM,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC;YAEtD,MAAM,EAAE,GAAG,IAAA,sBAAe,EAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;YACjE,MAAM,GAAG,GAAG,EAAE,GAAG,WAAW,CAAC;YAC7B,gBAAgB,IAAI,GAAG,CAAC;QAC1B,CAAC;QAED,KAAK,CAAC,WAAW,IAAI,0CAA0C,CAAC;QAChE,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAE1C,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA7DD,sCA6DC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Interface, Result } from '@ethersproject/abi';
|
|
2
|
+
import { Logger } from 'log4js';
|
|
3
|
+
import { DeepReadonly } from 'ts-essentials';
|
|
4
|
+
import { IDexHelper } from '../../../dex-helper/idex-helper';
|
|
5
|
+
import { StatefulEventSubscriber } from '../../../stateful-event-subscriber';
|
|
6
|
+
import { BlockHeader, Log } from '../../../types';
|
|
7
|
+
import { PoolKey } from './utils';
|
|
8
|
+
export type Quote<StateAfter = undefined> = {
|
|
9
|
+
consumedAmount: bigint;
|
|
10
|
+
calculatedAmount: bigint;
|
|
11
|
+
gasConsumed: number;
|
|
12
|
+
skipAhead: number;
|
|
13
|
+
} & (StateAfter extends undefined ? {} : {
|
|
14
|
+
stateAfter: StateAfter;
|
|
15
|
+
});
|
|
16
|
+
export interface PoolKeyed {
|
|
17
|
+
key: PoolKey;
|
|
18
|
+
}
|
|
19
|
+
export interface IEkuboPool extends PoolKeyed {
|
|
20
|
+
quote(amount: bigint, token: bigint, blockNumber: number): Quote;
|
|
21
|
+
}
|
|
22
|
+
export type NamedEventHandler<State> = (args: Result, oldState: DeepReadonly<State>, blockHeader: Readonly<BlockHeader>) => DeepReadonly<State> | null;
|
|
23
|
+
export type AnonymousEventHandler<State> = (data: string, oldState: DeepReadonly<State>, blockHeader: Readonly<BlockHeader>) => DeepReadonly<State> | null;
|
|
24
|
+
export declare class NamedEventHandlers<State> {
|
|
25
|
+
private readonly iface;
|
|
26
|
+
private readonly handlers;
|
|
27
|
+
constructor(iface: Interface, handlers: Record<string, NamedEventHandler<State>>);
|
|
28
|
+
parseLog(log: Readonly<Log>, oldState: DeepReadonly<State>, blockHeader: Readonly<BlockHeader>): DeepReadonly<State> | null;
|
|
29
|
+
}
|
|
30
|
+
export declare abstract class EkuboPool<State> extends StatefulEventSubscriber<State> implements IEkuboPool {
|
|
31
|
+
readonly key: PoolKey;
|
|
32
|
+
private readonly namedEventHandlers;
|
|
33
|
+
private readonly anonymousEventHandlers;
|
|
34
|
+
protected constructor(parentName: string, dexHelper: IDexHelper, logger: Logger, key: PoolKey, namedEventHandlers: Record<string, NamedEventHandlers<State>>, anonymousEventHandlers: Record<string, AnonymousEventHandler<State>>);
|
|
35
|
+
/**
|
|
36
|
+
* The function is called every time any of the subscribed
|
|
37
|
+
* addresses release log. The function accepts the current
|
|
38
|
+
* state, updates the state according to the log, and returns
|
|
39
|
+
* the updated state.
|
|
40
|
+
* @param state - Current state of event subscriber
|
|
41
|
+
* @param log - Log released by one of the subscribed addresses
|
|
42
|
+
* @returns Updates state of the event subscriber after the log
|
|
43
|
+
*/
|
|
44
|
+
protected processLog(state: DeepReadonly<State>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): DeepReadonly<State> | null;
|
|
45
|
+
quote(amount: bigint, token: bigint, blockNumber: number): Quote;
|
|
46
|
+
protected abstract _quote(amount: bigint, isToken1: boolean, state: DeepReadonly<State>, sqrtRatioLimit?: bigint): Quote;
|
|
47
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EkuboPool = exports.NamedEventHandlers = void 0;
|
|
4
|
+
const stateful_event_subscriber_1 = require("../../../stateful-event-subscriber");
|
|
5
|
+
class NamedEventHandlers {
|
|
6
|
+
iface;
|
|
7
|
+
handlers;
|
|
8
|
+
constructor(iface, handlers) {
|
|
9
|
+
this.iface = iface;
|
|
10
|
+
this.handlers = handlers;
|
|
11
|
+
}
|
|
12
|
+
parseLog(log, oldState, blockHeader) {
|
|
13
|
+
const event = this.iface.parseLog(log);
|
|
14
|
+
return this.handlers[event.name]?.(event.args, oldState, blockHeader);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.NamedEventHandlers = NamedEventHandlers;
|
|
18
|
+
const BASE_GAS_COST = 11_700;
|
|
19
|
+
class EkuboPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
20
|
+
key;
|
|
21
|
+
namedEventHandlers;
|
|
22
|
+
anonymousEventHandlers;
|
|
23
|
+
constructor(parentName, dexHelper, logger, key, namedEventHandlers, anonymousEventHandlers) {
|
|
24
|
+
super(parentName, key.string_id, dexHelper, logger);
|
|
25
|
+
this.key = key;
|
|
26
|
+
this.namedEventHandlers = namedEventHandlers;
|
|
27
|
+
this.anonymousEventHandlers = anonymousEventHandlers;
|
|
28
|
+
this.addressesSubscribed = [
|
|
29
|
+
...new Set(Object.keys(namedEventHandlers).concat(Object.keys(anonymousEventHandlers))),
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The function is called every time any of the subscribed
|
|
34
|
+
* addresses release log. The function accepts the current
|
|
35
|
+
* state, updates the state according to the log, and returns
|
|
36
|
+
* the updated state.
|
|
37
|
+
* @param state - Current state of event subscriber
|
|
38
|
+
* @param log - Log released by one of the subscribed addresses
|
|
39
|
+
* @returns Updates state of the event subscriber after the log
|
|
40
|
+
*/
|
|
41
|
+
processLog(state, log, blockHeader) {
|
|
42
|
+
const emitter = log.address;
|
|
43
|
+
if (log.topics.length === 0) {
|
|
44
|
+
return this.anonymousEventHandlers[emitter]?.(log.data, state, blockHeader);
|
|
45
|
+
}
|
|
46
|
+
return this.namedEventHandlers[emitter]?.parseLog(log, state, blockHeader);
|
|
47
|
+
}
|
|
48
|
+
quote(amount, token, blockNumber) {
|
|
49
|
+
const isToken1 = token === this.key.token1;
|
|
50
|
+
if (!isToken1 && this.key.token0 !== token) {
|
|
51
|
+
throw new Error('Invalid token');
|
|
52
|
+
}
|
|
53
|
+
if (amount === 0n) {
|
|
54
|
+
return {
|
|
55
|
+
consumedAmount: 0n,
|
|
56
|
+
calculatedAmount: 0n,
|
|
57
|
+
gasConsumed: 0,
|
|
58
|
+
skipAhead: 0,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const state = this.getState(blockNumber);
|
|
62
|
+
if (state === null) {
|
|
63
|
+
throw new Error(`Quote for block number ${blockNumber} requested but state is not recent enough`);
|
|
64
|
+
}
|
|
65
|
+
const quote = this._quote(amount, isToken1, state);
|
|
66
|
+
if (quote.calculatedAmount === 0n) {
|
|
67
|
+
quote.gasConsumed = 0;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
quote.gasConsumed += BASE_GAS_COST;
|
|
71
|
+
}
|
|
72
|
+
return quote;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.EkuboPool = EkuboPool;
|
|
76
|
+
//# sourceMappingURL=pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../../src/dex/ekubo/pools/pool.ts"],"names":[],"mappings":";;;AAIA,kFAA6E;AA8B7E,MAAa,kBAAkB;IAEV;IACA;IAFnB,YACmB,KAAgB,EAChB,QAAkD;QADlD,UAAK,GAAL,KAAK,CAAW;QAChB,aAAQ,GAAR,QAAQ,CAA0C;IAClE,CAAC;IAEG,QAAQ,CACb,GAAkB,EAClB,QAA6B,EAC7B,WAAkC;QAElC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;CACF;AAdD,gDAcC;AAED,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,MAAsB,SACpB,SAAQ,mDAA8B;IAOpB;IACC;IAIA;IATnB,YACE,UAAkB,EAClB,SAAqB,EACrB,MAAc,EACE,GAAY,EACX,kBAGhB,EACgB,sBAGhB;QAED,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAVpC,QAAG,GAAH,GAAG,CAAS;QACX,uBAAkB,GAAlB,kBAAkB,CAGlC;QACgB,2BAAsB,GAAtB,sBAAsB,CAGtC;QAID,IAAI,CAAC,mBAAmB,GAAG;YACzB,GAAG,IAAI,GAAG,CACR,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CACpC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CACpC,CACF;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACgB,UAAU,CAC3B,KAA0B,EAC1B,GAAkB,EAClB,WAAkC;QAElC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAE5B,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAC3C,GAAG,CAAC,IAAI,EACR,KAAK,EACL,WAAW,CACZ,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC7E,CAAC;IAEM,KAAK,CAAC,MAAc,EAAE,KAAa,EAAE,WAAmB;QAC7D,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAE3C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;YAClB,OAAO;gBACL,cAAc,EAAE,EAAE;gBAClB,gBAAgB,EAAE,EAAE;gBACpB,WAAW,EAAE,CAAC;gBACd,SAAS,EAAE,CAAC;aACb,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,2CAA2C,CACjF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEnD,IAAI,KAAK,CAAC,gBAAgB,KAAK,EAAE,EAAE,CAAC;YAClC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,WAAW,IAAI,aAAa,CAAC;QACrC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CAQF;AAhGD,8BAgGC"}
|
|
@@ -38,6 +38,5 @@ export declare class IdleDao extends SimpleExchange implements IDex<IdleDaoData>
|
|
|
38
38
|
getCalldataGasCost(poolPrices: PoolPrices<IdleDaoData>): number | number[];
|
|
39
39
|
getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: IdleDaoData, side: SwapSide): AdapterExchangeParam;
|
|
40
40
|
getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: IdleDaoData, side: SwapSide, _: Context, executorAddress: Address): DexExchangeParam;
|
|
41
|
-
updatePoolState(): Promise<void>;
|
|
42
41
|
getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
|
|
43
42
|
}
|
|
@@ -242,36 +242,25 @@ class IdleDao extends simple_exchange_1.SimpleExchange {
|
|
|
242
242
|
skipApproval: data.fromIdleToken,
|
|
243
243
|
};
|
|
244
244
|
}
|
|
245
|
-
async updatePoolState() {
|
|
246
|
-
await this.initializeTokens();
|
|
247
|
-
}
|
|
248
245
|
async getTopPoolsForToken(tokenAddress, limit) {
|
|
246
|
+
await this.initializeTokens();
|
|
249
247
|
const idleTokens = (0, tokens_1.getPoolsByTokenAddress)(this.network, tokenAddress);
|
|
250
248
|
if (idleTokens.length > 0) {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
liquidityUSD: constants_1.UNLIMITED_USD_LIQUIDITY,
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
if (!poolMap[cdoAddress].connectorTokens.some(t => t.address.toLowerCase() === token.address.toLowerCase())) {
|
|
265
|
-
poolMap[cdoAddress].connectorTokens.push(token);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
});
|
|
269
|
-
return Object.values(poolMap);
|
|
249
|
+
return idleTokens
|
|
250
|
+
.map((idleToken) => ({
|
|
251
|
+
// liquidity is infinite, tokens are minted when swapping for idle tokens
|
|
252
|
+
liquidityUSD: 1e8,
|
|
253
|
+
exchange: this.dexKey,
|
|
254
|
+
address: idleToken.cdoAddress,
|
|
255
|
+
connectorTokens: [(0, tokens_1.getTokenFromIdleToken)(idleToken)],
|
|
256
|
+
}))
|
|
257
|
+
.slice(0, limit);
|
|
270
258
|
}
|
|
271
259
|
const idleToken = (0, tokens_1.getIdleTokenByAddress)(this.network, tokenAddress.toLowerCase());
|
|
272
260
|
if (idleToken) {
|
|
273
261
|
return [
|
|
274
262
|
{
|
|
263
|
+
liquidityUSD: 1e9,
|
|
275
264
|
exchange: this.dexKey,
|
|
276
265
|
address: idleToken.cdoAddress,
|
|
277
266
|
connectorTokens: [
|
|
@@ -280,7 +269,6 @@ class IdleDao extends simple_exchange_1.SimpleExchange {
|
|
|
280
269
|
decimals: idleToken.decimals,
|
|
281
270
|
},
|
|
282
271
|
],
|
|
283
|
-
liquidityUSD: constants_1.UNLIMITED_USD_LIQUIDITY,
|
|
284
272
|
},
|
|
285
273
|
];
|
|
286
274
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idle-dao.js","sourceRoot":"","sources":["../../../src/dex/idle-dao/idle-dao.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"idle-dao.js","sourceRoot":"","sources":["../../../src/dex/idle-dao/idle-dao.ts"],"names":[],"mappings":"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"}
|