@paraswap/dex-lib 2.16.3 → 2.16.4-balancer-v2-buy.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/.idea/aws.xml +17 -0
- package/.idea/codeStyles/Project.xml +19 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/paraswap-dex-lib.iml +9 -0
- package/.idea/vcs.xml +6 -0
- package/build/abi/TraderJoeV21Router.json +1489 -0
- package/build/config.js +10 -10
- package/build/dex/balancer-v2/balancer-v2.d.ts +9 -14
- package/build/dex/balancer-v2/balancer-v2.js +19 -16
- package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
- package/build/dex/balancer-v2/config.d.ts +2 -7
- package/build/dex/balancer-v2/config.js +20 -30
- package/build/dex/balancer-v2/config.js.map +1 -1
- package/build/dex/balancer-v2/pools/balancer-v2-pool.d.ts +25 -0
- package/build/dex/balancer-v2/pools/balancer-v2-pool.js +107 -0
- package/build/dex/balancer-v2/pools/balancer-v2-pool.js.map +1 -0
- package/build/dex/balancer-v2/pools/linear/LinearMath.d.ts +20 -0
- package/build/dex/balancer-v2/pools/linear/LinearMath.js +186 -0
- package/build/dex/balancer-v2/pools/linear/LinearMath.js.map +1 -0
- package/build/dex/balancer-v2/pools/linear/LinearPool.d.ts +51 -0
- package/build/dex/balancer-v2/pools/linear/LinearPool.js +477 -0
- package/build/dex/balancer-v2/pools/linear/LinearPool.js.map +1 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.d.ts +10 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js +314 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js.map +1 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.d.ts +50 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js +367 -0
- package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js.map +1 -0
- package/build/dex/balancer-v2/pools/stable/StableMath.d.ts +7 -0
- package/build/dex/balancer-v2/pools/stable/StableMath.js +111 -0
- package/build/dex/balancer-v2/pools/stable/StableMath.js.map +1 -0
- package/build/dex/balancer-v2/pools/stable/StablePool.d.ts +30 -0
- package/build/dex/balancer-v2/pools/stable/StablePool.js +129 -0
- package/build/dex/balancer-v2/pools/stable/StablePool.js.map +1 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedMath.d.ts +6 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedMath.js +61 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedMath.js.map +1 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedPool.d.ts +30 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedPool.js +112 -0
- package/build/dex/balancer-v2/pools/weighted/WeightedPool.js.map +1 -0
- package/build/dex/balancer-v2/types.d.ts +1 -0
- package/build/dex/balancer-v2/types.js.map +1 -1
- package/build/dex/index.js +2 -0
- package/build/dex/index.js.map +1 -1
- package/build/dex/trader-joe-v2.1.d.ts +43 -0
- package/build/dex/trader-joe-v2.1.js +78 -0
- package/build/dex/trader-joe-v2.1.js.map +1 -0
- package/package.json +1 -1
- package/src/abi/TraderJoeV21Router.json +1489 -0
- package/src/config.ts +10 -10
- package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +207 -224
- package/src/dex/balancer-v2/balancer-v2.ts +41 -29
- package/src/dex/balancer-v2/config.ts +23 -35
- package/src/dex/balancer-v2/pools/balancer-v2-pool.ts +274 -0
- package/src/dex/balancer-v2/{LinearMath.ts → pools/linear/LinearMath.ts} +81 -23
- package/src/dex/balancer-v2/{LinearPool.ts → pools/linear/LinearPool.ts} +241 -5
- package/src/dex/balancer-v2/{StableMath.ts → pools/phantom-stable/PhantomStableMath.ts} +101 -21
- package/src/dex/balancer-v2/{PhantomStablePool.ts → pools/phantom-stable/PhantomStablePool.ts} +165 -11
- package/src/dex/balancer-v2/pools/stable/StableMath.ts +204 -0
- package/src/dex/balancer-v2/pools/stable/StablePool.ts +221 -0
- package/src/dex/balancer-v2/pools/weighted/WeightedMath.ts +84 -0
- package/src/dex/balancer-v2/pools/weighted/WeightedPool.ts +189 -0
- package/src/dex/balancer-v2/types.ts +1 -0
- package/src/dex/index.ts +2 -0
- package/src/dex/trader-joe-v2.1.ts +155 -0
- package/tests/constants-e2e.ts +9 -4
- package/build/abi/DirectSwap.json +0 -970
- package/build/dex/test-dex/config.d.ts +0 -4
- package/build/dex/test-dex/config.js +0 -15
- package/build/dex/test-dex/config.js.map +0 -1
- package/build/dex/test-dex/test-dex-pool.d.ts +0 -39
- package/build/dex/test-dex/test-dex-pool.js +0 -63
- package/build/dex/test-dex/test-dex-pool.js.map +0 -1
- package/build/dex/test-dex/test-dex.d.ts +0 -37
- package/build/dex/test-dex/test-dex.js +0 -126
- package/build/dex/test-dex/test-dex.js.map +0 -1
- package/build/dex/test-dex/types.d.ts +0 -6
- package/build/dex/test-dex/types.js +0 -3
- package/build/dex/test-dex/types.js.map +0 -1
- package/build/dex/woo-fi-v2/woo-fi-math.d.ts +0 -16
- package/build/dex/woo-fi-v2/woo-fi-math.js +0 -137
- package/build/dex/woo-fi-v2/woo-fi-math.js.map +0 -1
- package/src/dex/balancer-v2/balancer-v2-pool.ts +0 -744
|
@@ -0,0 +1,129 @@
|
|
|
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.StablePool = void 0;
|
|
7
|
+
const abi_1 = require("@ethersproject/abi");
|
|
8
|
+
const stable_pool_json_1 = __importDefault(require("../../../../abi/balancer-v2/stable-pool.json"));
|
|
9
|
+
const meta_stable_pool_json_1 = __importDefault(require("../../../../abi/balancer-v2/meta-stable-pool.json"));
|
|
10
|
+
const utils_1 = require("../../utils");
|
|
11
|
+
const balancer_v2_pool_1 = require("../balancer-v2-pool");
|
|
12
|
+
const StableMath_1 = require("./StableMath");
|
|
13
|
+
class StablePool extends balancer_v2_pool_1.BaseGeneralPool {
|
|
14
|
+
constructor(vaultAddress, vaultInterface) {
|
|
15
|
+
super();
|
|
16
|
+
this.vaultAddress = vaultAddress;
|
|
17
|
+
this.vaultInterface = vaultInterface;
|
|
18
|
+
this.poolInterface = new abi_1.Interface(stable_pool_json_1.default);
|
|
19
|
+
this.metaPoolInterface = new abi_1.Interface(meta_stable_pool_json_1.default);
|
|
20
|
+
}
|
|
21
|
+
_onSwapGivenOut(tokenAmountsOut, balances, indexIn, indexOut, _amplificationParameter) {
|
|
22
|
+
return StableMath_1.StableMath._calcInGivenOut(_amplificationParameter, balances, indexIn, indexOut, tokenAmountsOut);
|
|
23
|
+
}
|
|
24
|
+
_onSwapGivenIn(tokenAmountsIn, balances, indexIn, indexOut, _amplificationParameter) {
|
|
25
|
+
return StableMath_1.StableMath._calcOutGivenIn(_amplificationParameter, balances, indexIn, indexOut, tokenAmountsIn);
|
|
26
|
+
}
|
|
27
|
+
/*
|
|
28
|
+
Helper function to parse pool data into params for onSell/onBuy functions.
|
|
29
|
+
*/
|
|
30
|
+
parsePoolPairData(pool, poolState, tokenIn, tokenOut) {
|
|
31
|
+
let indexIn = 0, indexOut = 0;
|
|
32
|
+
const scalingFactors = [];
|
|
33
|
+
const balances = poolState.orderedTokens.map((tokenAddress, i) => {
|
|
34
|
+
const t = pool.tokensMap[tokenAddress.toLowerCase()] || poolState.tokens[tokenAddress.toLowerCase()];
|
|
35
|
+
if (t.address.toLowerCase() === tokenIn.toLowerCase()) {
|
|
36
|
+
indexIn = i;
|
|
37
|
+
}
|
|
38
|
+
if (t.address.toLowerCase() === tokenOut.toLowerCase()) {
|
|
39
|
+
indexOut = i;
|
|
40
|
+
}
|
|
41
|
+
if (pool.poolType === 'MetaStable') {
|
|
42
|
+
scalingFactors.push(poolState.tokens[t.address.toLowerCase()].scalingFactor || 0n);
|
|
43
|
+
}
|
|
44
|
+
else
|
|
45
|
+
scalingFactors.push((0, utils_1.getTokenScalingFactor)(t.decimals));
|
|
46
|
+
return poolState.tokens[t.address.toLowerCase()].balance;
|
|
47
|
+
});
|
|
48
|
+
const poolPairData = {
|
|
49
|
+
balances,
|
|
50
|
+
indexIn,
|
|
51
|
+
indexOut,
|
|
52
|
+
scalingFactors,
|
|
53
|
+
swapFee: poolState.swapFee,
|
|
54
|
+
amp: poolState.amp ? poolState.amp : 0n,
|
|
55
|
+
};
|
|
56
|
+
return poolPairData;
|
|
57
|
+
}
|
|
58
|
+
/*
|
|
59
|
+
Helper function to construct onchain multicall data for StablePool.
|
|
60
|
+
*/
|
|
61
|
+
getOnChainCalls(pool) {
|
|
62
|
+
const poolCallData = [
|
|
63
|
+
{
|
|
64
|
+
target: this.vaultAddress,
|
|
65
|
+
callData: this.vaultInterface.encodeFunctionData('getPoolTokens', [
|
|
66
|
+
pool.id,
|
|
67
|
+
]),
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
target: pool.address,
|
|
71
|
+
callData: this.poolInterface.encodeFunctionData('getSwapFeePercentage'),
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
target: pool.address,
|
|
75
|
+
callData: this.poolInterface.encodeFunctionData('getAmplificationParameter'),
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
if (pool.poolType === 'MetaStable') {
|
|
79
|
+
poolCallData.push({
|
|
80
|
+
target: pool.address,
|
|
81
|
+
callData: this.metaPoolInterface.encodeFunctionData('getScalingFactors'),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return poolCallData;
|
|
85
|
+
}
|
|
86
|
+
/*
|
|
87
|
+
Helper function to decodes multicall data for a Stable Pool.
|
|
88
|
+
data must contain returnData
|
|
89
|
+
startIndex is where to start in returnData. Allows this decode function to be called along with other pool types.
|
|
90
|
+
*/
|
|
91
|
+
decodeOnChainCalls(pool, data, startIndex) {
|
|
92
|
+
const pools = {};
|
|
93
|
+
const poolTokens = (0, utils_1.decodeThrowError)(this.vaultInterface, 'getPoolTokens', data[startIndex++], pool.address);
|
|
94
|
+
const swapFee = (0, utils_1.decodeThrowError)(this.poolInterface, 'getSwapFeePercentage', data[startIndex++], pool.address)[0];
|
|
95
|
+
const amp = (0, utils_1.decodeThrowError)(this.poolInterface, 'getAmplificationParameter', data[startIndex++], pool.address);
|
|
96
|
+
let scalingFactors;
|
|
97
|
+
if (pool.poolType === 'MetaStable') {
|
|
98
|
+
scalingFactors = (0, utils_1.decodeThrowError)(this.metaPoolInterface, 'getScalingFactors', data[startIndex++], pool.address)[0];
|
|
99
|
+
}
|
|
100
|
+
const poolState = {
|
|
101
|
+
swapFee: BigInt(swapFee.toString()),
|
|
102
|
+
tokens: poolTokens.tokens.reduce((ptAcc, pt, j) => {
|
|
103
|
+
const tokenState = {
|
|
104
|
+
balance: BigInt(poolTokens.balances[j].toString()),
|
|
105
|
+
};
|
|
106
|
+
if (scalingFactors)
|
|
107
|
+
tokenState.scalingFactor = BigInt(scalingFactors[j].toString());
|
|
108
|
+
ptAcc[pt.toLowerCase()] = tokenState;
|
|
109
|
+
return ptAcc;
|
|
110
|
+
}, {}),
|
|
111
|
+
orderedTokens: poolTokens.tokens,
|
|
112
|
+
};
|
|
113
|
+
if (amp) {
|
|
114
|
+
poolState.amp = BigInt(amp.value.toString());
|
|
115
|
+
}
|
|
116
|
+
pools[pool.address] = poolState;
|
|
117
|
+
return [pools, startIndex];
|
|
118
|
+
}
|
|
119
|
+
/*
|
|
120
|
+
For stable pools there is no Swap limit. As an approx - use almost the total balance of token out as we can add any amount of tokenIn and expect some back.
|
|
121
|
+
*/
|
|
122
|
+
getSwapMaxAmount(poolPairData, side) {
|
|
123
|
+
return ((this._upscale(poolPairData.balances[poolPairData.indexOut], poolPairData.scalingFactors[poolPairData.indexOut]) *
|
|
124
|
+
99n) /
|
|
125
|
+
100n);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.StablePool = StablePool;
|
|
129
|
+
//# sourceMappingURL=StablePool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StablePool.js","sourceRoot":"","sources":["../../../../../src/dex/balancer-v2/pools/stable/StablePool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare class WeightedMath {
|
|
2
|
+
static _MAX_IN_RATIO: bigint;
|
|
3
|
+
static _MAX_OUT_RATIO: bigint;
|
|
4
|
+
static _calcInGivenOut(balanceIn: bigint, weightIn: bigint, balanceOut: bigint, weightOut: bigint, amountsOut: bigint[]): bigint[];
|
|
5
|
+
static _calcOutGivenIn(balanceIn: bigint, weightIn: bigint, balanceOut: bigint, weightOut: bigint, amountsIn: bigint[]): bigint[];
|
|
6
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WeightedMath = void 0;
|
|
4
|
+
const balancer_v2_math_1 = require("../../balancer-v2-math");
|
|
5
|
+
const _require = (b, message) => {
|
|
6
|
+
if (!b)
|
|
7
|
+
throw new Error(message);
|
|
8
|
+
};
|
|
9
|
+
class WeightedMath {
|
|
10
|
+
static _calcInGivenOut(balanceIn, weightIn, balanceOut, weightOut, amountsOut) {
|
|
11
|
+
/* https://docs.balancer.fi/reference/math/weighted-math.html#ingivenout */
|
|
12
|
+
/**********************************************************************************************
|
|
13
|
+
// outGivenOut //
|
|
14
|
+
// aI = amountIn //
|
|
15
|
+
// bI = balanceIn //
|
|
16
|
+
// bO = balanceOut / / bO \ (wO / wI) \ //
|
|
17
|
+
// aO = amountOut aI = bI * | | -------------------------- | ^ - 1 | //
|
|
18
|
+
// wI = weightIn \ \ ( bO - aO ) / / //
|
|
19
|
+
// wO = weightOut //
|
|
20
|
+
*********************************************************************************************/
|
|
21
|
+
const exponent = balancer_v2_math_1.MathSol.divUpFixed(weightOut, weightIn);
|
|
22
|
+
return amountsOut.map(amountOut => {
|
|
23
|
+
_require(amountOut <= balancer_v2_math_1.MathSol.mulDownFixed(balanceOut, this._MAX_OUT_RATIO), 'Errors.MAX_OUT_RATIO');
|
|
24
|
+
const denominator = balanceOut - amountOut;
|
|
25
|
+
const base = balancer_v2_math_1.MathSol.divUpFixed(balanceOut, denominator);
|
|
26
|
+
const power = balancer_v2_math_1.MathSol.powUpFixed(base, exponent);
|
|
27
|
+
const ratio = balancer_v2_math_1.MathSol.sub(power, balancer_v2_math_1.MathSol.ONE);
|
|
28
|
+
return balancer_v2_math_1.MathSol.mulUpFixed(balanceIn, ratio);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
// Computes how many tokens can be taken out of a pool if `amountIn` are sent, given the
|
|
32
|
+
// current balances and weights.
|
|
33
|
+
static _calcOutGivenIn(balanceIn, weightIn, balanceOut, weightOut, amountsIn) {
|
|
34
|
+
/* https://docs.balancer.fi/reference/math/weighted-math.html#outgivenin */
|
|
35
|
+
/**********************************************************************************************
|
|
36
|
+
// outGivenIn //
|
|
37
|
+
// aO = amountOut //
|
|
38
|
+
// bO = balanceOut //
|
|
39
|
+
// bI = balanceIn / / bI \ (wI / wO) \ //
|
|
40
|
+
// aI = amountIn aO = bO * | 1 - | -------------------------- | ^ | //
|
|
41
|
+
// wI = weightIn \ \ ( bI + aI ) / / //
|
|
42
|
+
// wO = weightOut //
|
|
43
|
+
**********************************************************************************************/
|
|
44
|
+
// Amount out, so we round down overall.
|
|
45
|
+
// The multiplication rounds down, and the subtrahend (power) rounds up (so the base rounds up too).
|
|
46
|
+
// Because bI / (bI + aI) <= 1, the exponent rounds down.
|
|
47
|
+
// Cannot exceed maximum in ratio
|
|
48
|
+
const exponent = balancer_v2_math_1.MathSol.divDownFixed(weightIn, weightOut);
|
|
49
|
+
return amountsIn.map(amountIn => {
|
|
50
|
+
_require(amountIn <= balancer_v2_math_1.MathSol.mulDownFixed(balanceIn, this._MAX_IN_RATIO), 'Errors.MAX_IN_RATIO');
|
|
51
|
+
const denominator = balanceIn + amountIn;
|
|
52
|
+
const base = balancer_v2_math_1.MathSol.divUpFixed(balanceIn, denominator);
|
|
53
|
+
const power = balancer_v2_math_1.MathSol.powUpFixed(base, exponent);
|
|
54
|
+
return balancer_v2_math_1.MathSol.mulDownFixed(balanceOut, balancer_v2_math_1.MathSol.complementFixed(power));
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.WeightedMath = WeightedMath;
|
|
59
|
+
WeightedMath._MAX_IN_RATIO = 300000000000000000n;
|
|
60
|
+
WeightedMath._MAX_OUT_RATIO = 300000000000000000n;
|
|
61
|
+
//# sourceMappingURL=WeightedMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WeightedMath.js","sourceRoot":"","sources":["../../../../../src/dex/balancer-v2/pools/weighted/WeightedMath.ts"],"names":[],"mappings":";;;AAAA,6DAAiD;AAEjD,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAE,OAAe,EAAE,EAAE;IAC/C,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAa,YAAY;IAIvB,MAAM,CAAC,eAAe,CACpB,SAAiB,EACjB,QAAgB,EAChB,UAAkB,EAClB,SAAiB,EACjB,UAAoB;QAEpB,2EAA2E;QAC3E;;;;;;;;sGAQ8F;QAC9F,MAAM,QAAQ,GAAG,0BAAO,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzD,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAChC,QAAQ,CACN,SAAS,IAAI,0BAAO,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,EAClE,sBAAsB,CACvB,CAAC;YAEF,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;YAC3C,MAAM,IAAI,GAAG,0BAAO,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACzD,MAAM,KAAK,GAAG,0BAAO,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,0BAAO,CAAC,GAAG,CAAC,KAAK,EAAE,0BAAO,CAAC,GAAG,CAAC,CAAC;YAE9C,OAAO,0BAAO,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,wFAAwF;IACxF,gCAAgC;IAChC,MAAM,CAAC,eAAe,CACpB,SAAiB,EACjB,QAAgB,EAChB,UAAkB,EAClB,SAAiB,EACjB,SAAmB;QAEnB,2EAA2E;QAC3E;;;;;;;;sGAQ8F;QAE9F,wCAAwC;QAExC,oGAAoG;QACpG,yDAAyD;QAEzD,iCAAiC;QAEjC,MAAM,QAAQ,GAAG,0BAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3D,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC9B,QAAQ,CACN,QAAQ,IAAI,0BAAO,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,EAC/D,qBAAqB,CACtB,CAAC;YACF,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;YACzC,MAAM,IAAI,GAAG,0BAAO,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,0BAAO,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAEjD,OAAO,0BAAO,CAAC,YAAY,CAAC,UAAU,EAAE,0BAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;;AA5EH,oCA6EC;AA5EQ,0BAAa,GAAG,mBAAmB,CAAC;AACpC,2BAAc,GAAG,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Interface } from '@ethersproject/abi';
|
|
2
|
+
import { callData, PoolState, SubgraphPoolBase } from '../../types';
|
|
3
|
+
import { SwapSide } from '../../../../constants';
|
|
4
|
+
import { BaseMinimalSwapInfoPool } from '../balancer-v2-pool';
|
|
5
|
+
export declare type WeightedPoolPairData = {
|
|
6
|
+
tokenInBalance: bigint;
|
|
7
|
+
tokenOutBalance: bigint;
|
|
8
|
+
tokenInScalingFactor: bigint;
|
|
9
|
+
tokenOutScalingFactor: bigint;
|
|
10
|
+
tokenInWeight: bigint;
|
|
11
|
+
tokenOutWeight: bigint;
|
|
12
|
+
swapFee: bigint;
|
|
13
|
+
};
|
|
14
|
+
export declare class WeightedPool extends BaseMinimalSwapInfoPool {
|
|
15
|
+
vaultAddress: string;
|
|
16
|
+
vaultInterface: Interface;
|
|
17
|
+
poolInterface: Interface;
|
|
18
|
+
constructor(vaultAddress: string, vaultInterface: Interface);
|
|
19
|
+
_onSwapGivenOut(tokenAmountsOut: bigint[], currentBalanceTokenIn: bigint, currentBalanceTokenOut: bigint, _weightIn: bigint, _weightOut: bigint): bigint[];
|
|
20
|
+
_onSwapGivenIn(tokenAmountsIn: bigint[], currentBalanceTokenIn: bigint, currentBalanceTokenOut: bigint, _weightIn: bigint, _weightOut: bigint): bigint[];
|
|
21
|
+
parsePoolPairData(pool: SubgraphPoolBase, poolState: PoolState, tokenIn: string, tokenOut: string): WeightedPoolPairData;
|
|
22
|
+
getOnChainCalls(pool: SubgraphPoolBase): callData[];
|
|
23
|
+
decodeOnChainCalls(pool: SubgraphPoolBase, data: {
|
|
24
|
+
success: boolean;
|
|
25
|
+
returnData: any;
|
|
26
|
+
}[], startIndex: number): [{
|
|
27
|
+
[address: string]: PoolState;
|
|
28
|
+
}, number];
|
|
29
|
+
getSwapMaxAmount(poolPairData: WeightedPoolPairData, side: SwapSide): bigint;
|
|
30
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
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.WeightedPool = void 0;
|
|
7
|
+
const abi_1 = require("@ethersproject/abi");
|
|
8
|
+
const weighted_pool_json_1 = __importDefault(require("../../../../abi/balancer-v2/weighted-pool.json"));
|
|
9
|
+
const utils_1 = require("../../utils");
|
|
10
|
+
const constants_1 = require("../../../../constants");
|
|
11
|
+
const balancer_v2_pool_1 = require("../balancer-v2-pool");
|
|
12
|
+
const WeightedMath_1 = require("./WeightedMath");
|
|
13
|
+
class WeightedPool extends balancer_v2_pool_1.BaseMinimalSwapInfoPool {
|
|
14
|
+
constructor(vaultAddress, vaultInterface) {
|
|
15
|
+
super();
|
|
16
|
+
this.vaultAddress = vaultAddress;
|
|
17
|
+
this.vaultInterface = vaultInterface;
|
|
18
|
+
this.poolInterface = new abi_1.Interface(weighted_pool_json_1.default);
|
|
19
|
+
}
|
|
20
|
+
_onSwapGivenOut(tokenAmountsOut, currentBalanceTokenIn, currentBalanceTokenOut, _weightIn, _weightOut) {
|
|
21
|
+
return WeightedMath_1.WeightedMath._calcInGivenOut(currentBalanceTokenIn, _weightIn, currentBalanceTokenOut, _weightOut, tokenAmountsOut);
|
|
22
|
+
}
|
|
23
|
+
_onSwapGivenIn(tokenAmountsIn, currentBalanceTokenIn, currentBalanceTokenOut, _weightIn, _weightOut) {
|
|
24
|
+
return WeightedMath_1.WeightedMath._calcOutGivenIn(currentBalanceTokenIn, _weightIn, currentBalanceTokenOut, _weightOut, tokenAmountsIn);
|
|
25
|
+
}
|
|
26
|
+
/*
|
|
27
|
+
Helper function to parse pool data into params for onSell function.
|
|
28
|
+
*/
|
|
29
|
+
parsePoolPairData(pool, poolState, tokenIn, tokenOut) {
|
|
30
|
+
const inAddress = tokenIn.toLowerCase();
|
|
31
|
+
const outAddress = tokenOut.toLowerCase();
|
|
32
|
+
const tIn = pool.tokens.find(t => t.address.toLowerCase() === inAddress);
|
|
33
|
+
const tOut = pool.tokens.find(t => t.address.toLowerCase() === outAddress);
|
|
34
|
+
if (!tIn || !tOut)
|
|
35
|
+
return {};
|
|
36
|
+
const tokenInBalance = poolState.tokens[inAddress].balance;
|
|
37
|
+
const tokenOutBalance = poolState.tokens[outAddress].balance;
|
|
38
|
+
const tokenInWeight = poolState.tokens[inAddress].weight || 0n;
|
|
39
|
+
const tokenOutWeight = poolState.tokens[outAddress].weight || 0n;
|
|
40
|
+
const tokenInScalingFactor = (0, utils_1.getTokenScalingFactor)(tIn.decimals);
|
|
41
|
+
const tokenOutScalingFactor = (0, utils_1.getTokenScalingFactor)(tOut.decimals);
|
|
42
|
+
const poolPairData = {
|
|
43
|
+
tokenInBalance,
|
|
44
|
+
tokenOutBalance,
|
|
45
|
+
tokenInScalingFactor,
|
|
46
|
+
tokenOutScalingFactor,
|
|
47
|
+
tokenInWeight,
|
|
48
|
+
tokenOutWeight,
|
|
49
|
+
swapFee: poolState.swapFee,
|
|
50
|
+
};
|
|
51
|
+
return poolPairData;
|
|
52
|
+
}
|
|
53
|
+
/*
|
|
54
|
+
Helper function to construct onchain multicall data for WeightedPool (also 'LiquidityBootstrapping' and 'Investment' pool types).
|
|
55
|
+
*/
|
|
56
|
+
getOnChainCalls(pool) {
|
|
57
|
+
return [
|
|
58
|
+
{
|
|
59
|
+
target: this.vaultAddress,
|
|
60
|
+
callData: this.vaultInterface.encodeFunctionData('getPoolTokens', [
|
|
61
|
+
pool.id,
|
|
62
|
+
]),
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
target: pool.address,
|
|
66
|
+
callData: this.poolInterface.encodeFunctionData('getSwapFeePercentage'),
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
target: pool.address,
|
|
70
|
+
callData: this.poolInterface.encodeFunctionData('getNormalizedWeights'),
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
}
|
|
74
|
+
/*
|
|
75
|
+
Helper function to decodes multicall data for a Weighted Pool.
|
|
76
|
+
data must contain returnData
|
|
77
|
+
startIndex is where to start in returnData. Allows this decode function to be called along with other pool types.
|
|
78
|
+
*/
|
|
79
|
+
decodeOnChainCalls(pool, data, startIndex) {
|
|
80
|
+
const pools = {};
|
|
81
|
+
const poolTokens = (0, utils_1.decodeThrowError)(this.vaultInterface, 'getPoolTokens', data[startIndex++], pool.address);
|
|
82
|
+
const swapFee = (0, utils_1.decodeThrowError)(this.poolInterface, 'getSwapFeePercentage', data[startIndex++], pool.address)[0];
|
|
83
|
+
const normalisedWeights = (0, utils_1.decodeThrowError)(this.poolInterface, 'getNormalizedWeights', data[startIndex++], pool.address)[0];
|
|
84
|
+
const poolState = {
|
|
85
|
+
swapFee: BigInt(swapFee.toString()),
|
|
86
|
+
tokens: poolTokens.tokens.reduce((ptAcc, pt, j) => {
|
|
87
|
+
const tokenState = {
|
|
88
|
+
balance: BigInt(poolTokens.balances[j].toString()),
|
|
89
|
+
};
|
|
90
|
+
if (normalisedWeights)
|
|
91
|
+
tokenState.weight = BigInt(normalisedWeights[j].toString());
|
|
92
|
+
ptAcc[pt.toLowerCase()] = tokenState;
|
|
93
|
+
return ptAcc;
|
|
94
|
+
}, {}),
|
|
95
|
+
orderedTokens: poolTokens.tokens,
|
|
96
|
+
};
|
|
97
|
+
pools[pool.address] = poolState;
|
|
98
|
+
return [pools, startIndex];
|
|
99
|
+
}
|
|
100
|
+
/*
|
|
101
|
+
For weighted pools there is a Swap limit of 30%: amounts swapped may not be larger than this percentage of total balance.
|
|
102
|
+
*/
|
|
103
|
+
getSwapMaxAmount(poolPairData, side) {
|
|
104
|
+
return (((side === constants_1.SwapSide.SELL
|
|
105
|
+
? poolPairData.tokenInBalance
|
|
106
|
+
: poolPairData.tokenOutBalance) *
|
|
107
|
+
3n) /
|
|
108
|
+
10n);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.WeightedPool = WeightedPool;
|
|
112
|
+
//# sourceMappingURL=WeightedPool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WeightedPool.js","sourceRoot":"","sources":["../../../../../src/dex/balancer-v2/pools/weighted/WeightedPool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/types.ts"],"names":[],"mappings":";;;AAEA,mEAAmE;AACnE,IAAY,iBAkBX;AAlBD,WAAY,iBAAiB;IAC3B,0CAAqB,CAAA;IACrB,sCAAiB,CAAA;IACjB,8CAAyB,CAAA;IACzB,sEAAiD,CAAA;IACjD,8CAAyB,CAAA;IACzB,oDAA+B,CAAA;IAC/B,0DAAqC,CAAA;IACrC,sCAAiB,CAAA;IACjB,8CAAyB,CAAA;IACzB,oDAA+B,CAAA;IAC/B,gDAA2B,CAAA;IAC3B,oDAA+B,CAAA;IAC/B,gDAA2B,CAAA;IAC3B,kDAA6B,CAAA;IAC7B,8CAAyB,CAAA;IACzB,8CAAyB,CAAA;IACzB,gDAA2B,CAAA;AAC7B,CAAC,EAlBW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAkB5B;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/types.ts"],"names":[],"mappings":";;;AAEA,mEAAmE;AACnE,IAAY,iBAkBX;AAlBD,WAAY,iBAAiB;IAC3B,0CAAqB,CAAA;IACrB,sCAAiB,CAAA;IACjB,8CAAyB,CAAA;IACzB,sEAAiD,CAAA;IACjD,8CAAyB,CAAA;IACzB,oDAA+B,CAAA;IAC/B,0DAAqC,CAAA;IACrC,sCAAiB,CAAA;IACjB,8CAAyB,CAAA;IACzB,oDAA+B,CAAA;IAC/B,gDAA2B,CAAA;IAC3B,oDAA+B,CAAA;IAC/B,gDAA2B,CAAA;IAC3B,kDAA6B,CAAA;IAC7B,8CAAyB,CAAA;IACzB,8CAAyB,CAAA;IACzB,gDAA2B,CAAA;AAC7B,CAAC,EAlBW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAkB5B;AAoFD,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,uDAAW,CAAA;IACX,yDAAY,CAAA;AACd,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB"}
|
package/build/dex/index.js
CHANGED
|
@@ -64,6 +64,7 @@ const zyberswap_v3_1 = require("./quickswap/zyberswap-v3");
|
|
|
64
64
|
const trader_joe_v2_1 = require("./trader-joe-v2");
|
|
65
65
|
const spiritswap_v3_1 = require("./quickswap/spiritswap-v3");
|
|
66
66
|
const pancakeswap_v3_1 = require("./uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3");
|
|
67
|
+
const trader_joe_v2_1_1 = require("./trader-joe-v2.1");
|
|
67
68
|
const LegacyDexes = [
|
|
68
69
|
curve_v2_1.CurveV2,
|
|
69
70
|
stable_pool_1.StablePool,
|
|
@@ -82,6 +83,7 @@ const LegacyDexes = [
|
|
|
82
83
|
zyberswap_v3_1.ZyberSwapV3,
|
|
83
84
|
spiritswap_v3_1.SpiritSwapV3,
|
|
84
85
|
trader_joe_v2_1.TraderJoeV2,
|
|
86
|
+
trader_joe_v2_1_1.TraderJoeV21,
|
|
85
87
|
jarvis_1.Jarvis,
|
|
86
88
|
lido_1.Lido,
|
|
87
89
|
augustus_rfq_1.AugustusRFQOrder,
|
package/build/dex/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dex/index.ts"],"names":[],"mappings":";;;AACA,yCAAqC;AAErC,qCAAkC;AAClC,qDAAiD;AACjD,+CAA2C;AAC3C,sCAAmC;AACnC,mCAAgC;AAChC,wDAAoD;AACpD,2DAAuD;AACvD,uDAA0D;AAC1D,wDAAoD;AACpD,sDAAwD;AACxD,sDAAsD;AACtD,gDAA6C;AAC7C,4CAAyC;AACzC,4CAAyC;AACzC,qCAAkC;AAClC,2CAAwC;AACxC,uCAAoC;AACpC,mCAAgC;AAChC,qCAAkC;AAClC,yCAAsC;AACtC,+CAA2C;AAC3C,+CAA2C;AAC3C,+CAA2C;AAC3C,2CAAwC;AACxC,uCAAmC;AACnC,uCAAmC;AACnC,uCAAoC;AACpC,yCAAsC;AAEtC,4CAAwC;AAExC,iCAA8B;AAC9B,sDAAmD;AACnD,qDAAiD;AACjD,kDAA+C;AAC/C,kDAA+C;AAC/C,mCAAgC;AAChC,qDAAgD;AAChD,yFAAoF;AACpF,iDAAkD;AAClD,+CAA4C;AAC5C,kEAA+D;AAC/D,wEAAqE;AACrE,qDAAkD;AAClD,wDAAqD;AACrD,gEAA6D;AAC7D,2DAAuD;AACvD,uDAA0D;AAC1D,kDAA8C;AAC9C,0EAAqE;AACrE,2DAAwD;AACxD,0EAAqE;AACrE,2DAAuD;AACvD,kDAA8C;AAC9C,4CAAyC;AACzC,+CAA4C;AAC5C,kDAA+C;AAC/C,iEAA6D;AAC7D,2DAAuD;AACvD,2DAAuD;AACvD,2DAAuD;AACvD,mDAA8C;AAC9C,6DAAyD;AACzD,qFAAiF;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dex/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { SwapSide } from '../constants';
|
|
2
|
+
import { AdapterExchangeParam, Address, SimpleExchangeParam } from '../types';
|
|
3
|
+
import { IDexTxBuilder } from './idex';
|
|
4
|
+
import { IDexHelper } from '../dex-helper';
|
|
5
|
+
import { SimpleExchange } from './simple-exchange';
|
|
6
|
+
import { NumberAsString } from '@paraswap/core';
|
|
7
|
+
import { AsyncOrSync } from 'ts-essentials';
|
|
8
|
+
import { Interface } from '@ethersproject/abi';
|
|
9
|
+
declare type RouterPath = [
|
|
10
|
+
pairBinSteps: NumberAsString[],
|
|
11
|
+
versions: NumberAsString[],
|
|
12
|
+
tokenPath: Address[]
|
|
13
|
+
];
|
|
14
|
+
declare type TraderJoeV2RouterSellParams = [
|
|
15
|
+
_amountIn: NumberAsString,
|
|
16
|
+
_amountOutMin: NumberAsString,
|
|
17
|
+
_routerPath: RouterPath,
|
|
18
|
+
to: Address,
|
|
19
|
+
_deadline: string
|
|
20
|
+
];
|
|
21
|
+
declare type TraderJoeV2RouterBuyParams = [
|
|
22
|
+
_amountOut: NumberAsString,
|
|
23
|
+
_amountInMax: NumberAsString,
|
|
24
|
+
_routerPath: RouterPath,
|
|
25
|
+
to: Address,
|
|
26
|
+
_deadline: string
|
|
27
|
+
];
|
|
28
|
+
declare type TraderJoeV2RouterParam = TraderJoeV2RouterSellParams | TraderJoeV2RouterBuyParams;
|
|
29
|
+
export declare type TraderJoeV2Data = {
|
|
30
|
+
tokenIn: string;
|
|
31
|
+
tokenOut: string;
|
|
32
|
+
binStep: string;
|
|
33
|
+
};
|
|
34
|
+
export declare class TraderJoeV21 extends SimpleExchange implements IDexTxBuilder<TraderJoeV2Data, TraderJoeV2RouterParam> {
|
|
35
|
+
static dexKeys: string[];
|
|
36
|
+
protected routerAddress: string;
|
|
37
|
+
exchangeRouterInterface: Interface;
|
|
38
|
+
needWrapNative: boolean;
|
|
39
|
+
constructor(dexHelper: IDexHelper);
|
|
40
|
+
getAdapterParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, data: TraderJoeV2Data, side: SwapSide): AdapterExchangeParam;
|
|
41
|
+
getSimpleParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, data: TraderJoeV2Data, side: SwapSide): AsyncOrSync<SimpleExchangeParam>;
|
|
42
|
+
}
|
|
43
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
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.TraderJoeV21 = void 0;
|
|
7
|
+
const constants_1 = require("../constants");
|
|
8
|
+
const simple_exchange_1 = require("./simple-exchange");
|
|
9
|
+
const abi_1 = require("@ethersproject/abi");
|
|
10
|
+
const TraderJoeV21Router_json_1 = __importDefault(require("../abi/TraderJoeV21Router.json"));
|
|
11
|
+
const TRADERJOE_V2_1_ROUTER_ADDRESS = {
|
|
12
|
+
[constants_1.Network.AVALANCHE]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
|
|
13
|
+
[constants_1.Network.ARBITRUM]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
|
|
14
|
+
[constants_1.Network.BSC]: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
|
|
15
|
+
};
|
|
16
|
+
var TraderJoeV2RouterFunctions;
|
|
17
|
+
(function (TraderJoeV2RouterFunctions) {
|
|
18
|
+
TraderJoeV2RouterFunctions["swapExactTokensForTokens"] = "swapExactTokensForTokens";
|
|
19
|
+
TraderJoeV2RouterFunctions["swapTokensForExactTokens"] = "swapTokensForExactTokens";
|
|
20
|
+
})(TraderJoeV2RouterFunctions || (TraderJoeV2RouterFunctions = {}));
|
|
21
|
+
class TraderJoeV21 extends simple_exchange_1.SimpleExchange {
|
|
22
|
+
constructor(dexHelper) {
|
|
23
|
+
super(dexHelper, 'traderjoev2.1');
|
|
24
|
+
this.needWrapNative = true;
|
|
25
|
+
this.routerAddress =
|
|
26
|
+
TRADERJOE_V2_1_ROUTER_ADDRESS[dexHelper.config.data.network];
|
|
27
|
+
this.exchangeRouterInterface = new abi_1.Interface(TraderJoeV21Router_json_1.default);
|
|
28
|
+
}
|
|
29
|
+
getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
|
|
30
|
+
let payload = this.abiCoder.encodeParameters(['tuple(tuple(uint256[],uint8[],address[]),uint256)'], [
|
|
31
|
+
[
|
|
32
|
+
[
|
|
33
|
+
[
|
|
34
|
+
data.binStep, // _pairBinSteps: uint256[]
|
|
35
|
+
],
|
|
36
|
+
[
|
|
37
|
+
2, // _versions: uint8[]
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
data.tokenIn,
|
|
41
|
+
data.tokenOut, // _tokenPath: address[]
|
|
42
|
+
],
|
|
43
|
+
],
|
|
44
|
+
(0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(), // _deadline: uint256
|
|
45
|
+
],
|
|
46
|
+
]);
|
|
47
|
+
return {
|
|
48
|
+
targetExchange: this.routerAddress,
|
|
49
|
+
payload,
|
|
50
|
+
networkFee: '0',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
|
|
54
|
+
const swapFunction = side === constants_1.SwapSide.SELL
|
|
55
|
+
? TraderJoeV2RouterFunctions.swapExactTokensForTokens
|
|
56
|
+
: TraderJoeV2RouterFunctions.swapTokensForExactTokens;
|
|
57
|
+
const swapFunctionParams = side === constants_1.SwapSide.SELL
|
|
58
|
+
? [
|
|
59
|
+
srcAmount,
|
|
60
|
+
destAmount,
|
|
61
|
+
[[data.binStep], ['2'], [srcToken, destToken]],
|
|
62
|
+
this.augustusAddress,
|
|
63
|
+
(0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
|
|
64
|
+
]
|
|
65
|
+
: [
|
|
66
|
+
destAmount,
|
|
67
|
+
srcAmount,
|
|
68
|
+
[[data.binStep], ['2'], [srcToken, destToken]],
|
|
69
|
+
this.augustusAddress,
|
|
70
|
+
(0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
|
|
71
|
+
];
|
|
72
|
+
const swapData = this.exchangeRouterInterface.encodeFunctionData(swapFunction, swapFunctionParams);
|
|
73
|
+
return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, this.routerAddress);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.TraderJoeV21 = TraderJoeV21;
|
|
77
|
+
TraderJoeV21.dexKeys = ['traderjoev2.1'];
|
|
78
|
+
//# sourceMappingURL=trader-joe-v2.1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trader-joe-v2.1.js","sourceRoot":"","sources":["../../src/dex/trader-joe-v2.1.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAiD;AAIjD,uDAG2B;AAG3B,4CAA6D;AAC7D,6FAAmE;AAEnE,MAAM,6BAA6B,GAAmC;IACpE,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE,4CAA4C;IACjE,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE,4CAA4C;IAChE,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE,4CAA4C;CAC5D,CAAC;AAiCF,IAAK,0BAGJ;AAHD,WAAK,0BAA0B;IAC7B,mFAAqD,CAAA;IACrD,mFAAqD,CAAA;AACvD,CAAC,EAHI,0BAA0B,KAA1B,0BAA0B,QAG9B;AACD,MAAa,YACX,SAAQ,gCAAc;IAQtB,YAAY,SAAqB;QAC/B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAHpC,mBAAc,GAAG,IAAI,CAAC;QAKpB,IAAI,CAAC,aAAa;YAChB,6BAA6B,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/D,IAAI,CAAC,uBAAuB,GAAG,IAAI,eAAS,CAC1C,iCAAuC,CACxC,CAAC;IACJ,CAAC;IAED,eAAe,CACb,QAAiB,EACjB,SAAkB,EAClB,SAAyB,EACzB,UAA0B,EAC1B,IAAqB,EACrB,IAAc;QAEd,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAC1C,CAAC,mDAAmD,CAAC,EACrD;YACE;gBACE;oBACE;wBACE,IAAI,CAAC,OAAO,EAAE,2BAA2B;qBAC1C;oBACD;wBACE,CAAC,EAAE,qBAAqB;qBACzB;oBACD;wBACE,IAAI,CAAC,OAAO;wBACZ,IAAI,CAAC,QAAQ,EAAE,wBAAwB;qBACxC;iBACF;gBACD,IAAA,uDAAqC,GAAE,EAAE,qBAAqB;aAC/D;SACF,CACF,CAAC;QAEF,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,aAAa;YAClC,OAAO;YACP,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAED,cAAc,CACZ,QAAiB,EACjB,SAAkB,EAClB,SAAyB,EACzB,UAA0B,EAC1B,IAAqB,EACrB,IAAc;QAEd,MAAM,YAAY,GAChB,IAAI,KAAK,oBAAQ,CAAC,IAAI;YACpB,CAAC,CAAC,0BAA0B,CAAC,wBAAwB;YACrD,CAAC,CAAC,0BAA0B,CAAC,wBAAwB,CAAC;QAE1D,MAAM,kBAAkB,GACtB,IAAI,KAAK,oBAAQ,CAAC,IAAI;YACpB,CAAC,CAAC;gBACE,SAAS;gBACT,UAAU;gBACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC9C,IAAI,CAAC,eAAe;gBACpB,IAAA,uDAAqC,GAAE;aACxC;YACH,CAAC,CAAC;gBACE,UAAU;gBACV,SAAS;gBACT,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC9C,IAAI,CAAC,eAAe;gBACpB,IAAA,uDAAqC,GAAE;aACxC,CAAC;QAER,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAC9D,YAAY,EACZ,kBAAkB,CACnB,CAAC;QAEF,OAAO,IAAI,CAAC,qCAAqC,CAC/C,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,QAAQ,EACR,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;;AAnGH,oCAoGC;AAhGQ,oBAAO,GAAG,CAAC,eAAe,CAAC,CAAC"}
|