@paraswap/dex-lib 2.16.3 → 2.16.4-balancer-v2-buy

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 (77) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  5. package/.idea/misc.xml +6 -0
  6. package/.idea/modules.xml +8 -0
  7. package/.idea/paraswap-dex-lib.iml +9 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/build/config.js +5 -5
  10. package/build/dex/balancer-v2/balancer-v2.d.ts +9 -14
  11. package/build/dex/balancer-v2/balancer-v2.js +19 -16
  12. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  13. package/build/dex/balancer-v2/config.d.ts +2 -7
  14. package/build/dex/balancer-v2/config.js +20 -30
  15. package/build/dex/balancer-v2/config.js.map +1 -1
  16. package/build/dex/balancer-v2/pools/balancer-v2-pool.d.ts +25 -0
  17. package/build/dex/balancer-v2/pools/balancer-v2-pool.js +107 -0
  18. package/build/dex/balancer-v2/pools/balancer-v2-pool.js.map +1 -0
  19. package/build/dex/balancer-v2/pools/linear/LinearMath.d.ts +20 -0
  20. package/build/dex/balancer-v2/pools/linear/LinearMath.js +186 -0
  21. package/build/dex/balancer-v2/pools/linear/LinearMath.js.map +1 -0
  22. package/build/dex/balancer-v2/pools/linear/LinearPool.d.ts +51 -0
  23. package/build/dex/balancer-v2/pools/linear/LinearPool.js +477 -0
  24. package/build/dex/balancer-v2/pools/linear/LinearPool.js.map +1 -0
  25. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.d.ts +10 -0
  26. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js +314 -0
  27. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStableMath.js.map +1 -0
  28. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.d.ts +50 -0
  29. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js +367 -0
  30. package/build/dex/balancer-v2/pools/phantom-stable/PhantomStablePool.js.map +1 -0
  31. package/build/dex/balancer-v2/pools/stable/StableMath.d.ts +7 -0
  32. package/build/dex/balancer-v2/pools/stable/StableMath.js +111 -0
  33. package/build/dex/balancer-v2/pools/stable/StableMath.js.map +1 -0
  34. package/build/dex/balancer-v2/pools/stable/StablePool.d.ts +30 -0
  35. package/build/dex/balancer-v2/pools/stable/StablePool.js +129 -0
  36. package/build/dex/balancer-v2/pools/stable/StablePool.js.map +1 -0
  37. package/build/dex/balancer-v2/pools/weighted/WeightedMath.d.ts +6 -0
  38. package/build/dex/balancer-v2/pools/weighted/WeightedMath.js +61 -0
  39. package/build/dex/balancer-v2/pools/weighted/WeightedMath.js.map +1 -0
  40. package/build/dex/balancer-v2/pools/weighted/WeightedPool.d.ts +30 -0
  41. package/build/dex/balancer-v2/pools/weighted/WeightedPool.js +112 -0
  42. package/build/dex/balancer-v2/pools/weighted/WeightedPool.js.map +1 -0
  43. package/build/dex/balancer-v2/types.d.ts +1 -0
  44. package/build/dex/balancer-v2/types.js.map +1 -1
  45. package/package.json +1 -1
  46. package/src/config.ts +5 -5
  47. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +204 -224
  48. package/src/dex/balancer-v2/balancer-v2.ts +41 -29
  49. package/src/dex/balancer-v2/config.ts +23 -35
  50. package/src/dex/balancer-v2/pools/balancer-v2-pool.ts +274 -0
  51. package/src/dex/balancer-v2/{LinearMath.ts → pools/linear/LinearMath.ts} +81 -23
  52. package/src/dex/balancer-v2/{LinearPool.ts → pools/linear/LinearPool.ts} +241 -5
  53. package/src/dex/balancer-v2/{StableMath.ts → pools/phantom-stable/PhantomStableMath.ts} +101 -21
  54. package/src/dex/balancer-v2/{PhantomStablePool.ts → pools/phantom-stable/PhantomStablePool.ts} +165 -11
  55. package/src/dex/balancer-v2/pools/stable/StableMath.ts +204 -0
  56. package/src/dex/balancer-v2/pools/stable/StablePool.ts +221 -0
  57. package/src/dex/balancer-v2/pools/weighted/WeightedMath.ts +84 -0
  58. package/src/dex/balancer-v2/pools/weighted/WeightedPool.ts +189 -0
  59. package/src/dex/balancer-v2/types.ts +1 -0
  60. package/tests/constants-e2e.ts +9 -4
  61. package/build/abi/DirectSwap.json +0 -970
  62. package/build/dex/test-dex/config.d.ts +0 -4
  63. package/build/dex/test-dex/config.js +0 -15
  64. package/build/dex/test-dex/config.js.map +0 -1
  65. package/build/dex/test-dex/test-dex-pool.d.ts +0 -39
  66. package/build/dex/test-dex/test-dex-pool.js +0 -63
  67. package/build/dex/test-dex/test-dex-pool.js.map +0 -1
  68. package/build/dex/test-dex/test-dex.d.ts +0 -37
  69. package/build/dex/test-dex/test-dex.js +0 -126
  70. package/build/dex/test-dex/test-dex.js.map +0 -1
  71. package/build/dex/test-dex/types.d.ts +0 -6
  72. package/build/dex/test-dex/types.js +0 -3
  73. package/build/dex/test-dex/types.js.map +0 -1
  74. package/build/dex/woo-fi-v2/woo-fi-math.d.ts +0 -16
  75. package/build/dex/woo-fi-v2/woo-fi-math.js +0 -137
  76. package/build/dex/woo-fi-v2/woo-fi-math.js.map +0 -1
  77. 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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"}
@@ -29,6 +29,7 @@ export declare type PoolState = {
29
29
  };
30
30
  swapFee: bigint;
31
31
  orderedTokens: string[];
32
+ rate?: bigint;
32
33
  amp?: bigint;
33
34
  mainIndex?: number;
34
35
  wrappedIndex?: number;
@@ -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;AAmFD,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,uDAAW,CAAA;IACX,yDAAY,CAAA;AACd,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB"}
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "2.16.3",
3
+ "version": "2.16.4-balancer-v2-buy",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
package/src/config.ts CHANGED
@@ -50,7 +50,7 @@ const baseConfigs: { [network: number]: BaseConfig } = {
50
50
  Adapter02: '0xFC2Ba6E830a04C25e207B8214b26d8C713F6881F',
51
51
  Adapter03: '0x7c7f62e5ba00783f57b39df0530e32c195696a57',
52
52
  Adapter04: '0x21ab8aeb35bfc0b3fd84ca810b0aa85938357be2',
53
- BuyAdapter: '0x760870be538e7b4E2110e2890473CC17ADB1fdC1',
53
+ BuyAdapter: '0xb2634b3cbc1e401ab3c2743db44d459c5c9aa662',
54
54
  },
55
55
  uniswapV2ExchangeRouterAddress:
56
56
  '0xF9234CB08edb93c0d4a4d4c70cC3FfD070e78e07',
@@ -186,7 +186,7 @@ const baseConfigs: { [network: number]: BaseConfig } = {
186
186
  adapterAddresses: {
187
187
  PolygonAdapter01: '0xE44769f42E1e9592f86B82f206407a8f7C84b4ed',
188
188
  PolygonAdapter02: '0xfb2a3de6c7B8c77b520E3da16021f3D8A4E93168',
189
- PolygonBuyAdapter: '0xbE36ddfCDB6D60c1B20FfD73594540E5cc2c7E97',
189
+ PolygonBuyAdapter: '0xb2634B3CBc1E401AB3C2743DB44d459C5c9aA662',
190
190
  },
191
191
  uniswapV2ExchangeRouterAddress:
192
192
  '0xf3938337F7294fEf84e9B2c6D548A93F956Cc281',
@@ -241,7 +241,7 @@ const baseConfigs: { [network: number]: BaseConfig } = {
241
241
 
242
242
  adapterAddresses: {
243
243
  FantomAdapter01: '0x434C1Cca4842629230067674Dd54E21a14D9FD5D',
244
- FantomBuyAdapter: '0xFb8773AA4Fd02e54bbd352061D8Be1911FAa210a',
244
+ FantomBuyAdapter: '0xb2634B3CBc1E401AB3C2743DB44d459C5c9aA662',
245
245
  },
246
246
  uniswapV2ExchangeRouterAddress:
247
247
  '0xAB86e2bC9ec5485a9b60E684BA6d49bf4686ACC2',
@@ -268,7 +268,7 @@ const baseConfigs: { [network: number]: BaseConfig } = {
268
268
  adapterAddresses: {
269
269
  ArbitrumAdapter01: '0x745Ec73855CeC7249E5fF4c9DD81cc65b4D297a9',
270
270
  ArbitrumAdapter02: '0xCBaeB06C2dF373c07A2Dc205266EC3bCd525DfB6',
271
- ArbitrumBuyAdapter: '0xfa072107a2CCfE5664794282EF36400735ABB70F',
271
+ ArbitrumBuyAdapter: '0xeBF40A40CA3D4310Bf53048F48e860656e1D7C81',
272
272
  },
273
273
  uniswapV2ExchangeRouterAddress:
274
274
  '0xB41dD984730dAf82f5C41489E21ac79D5e3B61bC',
@@ -296,7 +296,7 @@ const baseConfigs: { [network: number]: BaseConfig } = {
296
296
 
297
297
  adapterAddresses: {
298
298
  OptimismAdapter01: '0x4669D27A649f5451e0D44C20a2b246431F1B0572',
299
- OptimismBuyAdapter: '0x4Ae8ad57912e207f5bFaFbF2e90486e5feab1634',
299
+ OptimismBuyAdapter: '0xb2634B3CBc1E401AB3C2743DB44d459C5c9aA662',
300
300
  },
301
301
  uniswapV2ExchangeRouterAddress:
302
302
  '0xB41dD984730dAf82f5C41489E21ac79D5e3B61bC',