@paraswap/dex-lib 2.47.5 → 2.47.7

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 (139) hide show
  1. package/build/abi/balancer-v2/gyro-e.abi.json +1595 -0
  2. package/build/dex/balancer-v2/balancer-v2.d.ts +6 -3
  3. package/build/dex/balancer-v2/balancer-v2.js +56 -35
  4. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  5. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.d.ts +32 -0
  6. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js +149 -0
  7. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js.map +1 -0
  8. package/build/dex/balancer-v2/pools/gyro/GyroEPool.d.ts +37 -0
  9. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js +222 -0
  10. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js.map +1 -0
  11. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.d.ts +2 -0
  12. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.js +19 -0
  13. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.js.map +1 -0
  14. package/build/dex/balancer-v2/queryOnChain.d.ts +1 -0
  15. package/build/dex/balancer-v2/queryOnChain.js +40 -0
  16. package/build/dex/balancer-v2/queryOnChain.js.map +1 -0
  17. package/build/dex/balancer-v2/types.d.ts +24 -1
  18. package/build/dex/balancer-v2/types.js +2 -0
  19. package/build/dex/balancer-v2/types.js.map +1 -1
  20. package/build/dex/balancer-v2/utils.d.ts +8 -0
  21. package/build/dex/balancer-v2/utils.js +17 -1
  22. package/build/dex/balancer-v2/utils.js.map +1 -1
  23. package/package.json +2 -1
  24. package/src/abi/balancer-v2/gyro-e.abi.json +1595 -0
  25. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +94 -0
  26. package/src/dex/balancer-v2/balancer-v2-gyro3.test.ts +268 -0
  27. package/src/dex/balancer-v2/balancer-v2-gyroE.test.ts +401 -0
  28. package/src/dex/balancer-v2/balancer-v2-integration.test.ts +253 -112
  29. package/src/dex/balancer-v2/balancer-v2.ts +107 -67
  30. package/src/dex/balancer-v2/pools/gyro/Gyro3Pool.ts +255 -0
  31. package/src/dex/balancer-v2/pools/gyro/GyroEPool.ts +403 -0
  32. package/src/dex/balancer-v2/pools/gyro/gyro-helpers.ts +15 -0
  33. package/src/dex/balancer-v2/queryOnChain.ts +48 -0
  34. package/src/dex/balancer-v2/types.ts +26 -0
  35. package/src/dex/balancer-v2/utils.ts +16 -0
  36. package/src/dex/synthetix/synthetix-state.ts +2 -2
  37. package/tests/constants-e2e.ts +26 -0
  38. package/build/abi/Redstone.json +0 -739
  39. package/build/abi/angle/stagToken.json +0 -963
  40. package/build/abi/angle-transmuter/Pyth.json +0 -1534
  41. package/build/abi/angle-transmuter/Transmuter.json +0 -1719
  42. package/build/abi/smardex/smardex-factory.json +0 -185
  43. package/build/abi/smardex/smardex-pool.json +0 -578
  44. package/build/abi/smardex/smardex-router.json +0 -648
  45. package/build/abi/trader-joe-v2_1/FactoryABI.json +0 -1208
  46. package/build/abi/trader-joe-v2_1/PairABI.json +0 -1493
  47. package/build/abi/trader-joe-v2_1/RouterABI.json +0 -1489
  48. package/build/abi/trader-joe-v2_1/StateMulticall.json +0 -193
  49. package/build/abi/wombat/pool.json +0 -1289
  50. package/build/dex/angle-staked-stable/angle-staked-stable-pool.d.ts +0 -53
  51. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js +0 -175
  52. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js.map +0 -1
  53. package/build/dex/angle-staked-stable/angle-staked-stable.d.ts +0 -42
  54. package/build/dex/angle-staked-stable/angle-staked-stable.js +0 -232
  55. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +0 -1
  56. package/build/dex/angle-staked-stable/config.d.ts +0 -4
  57. package/build/dex/angle-staked-stable/config.js +0 -26
  58. package/build/dex/angle-staked-stable/config.js.map +0 -1
  59. package/build/dex/angle-staked-stable/types.d.ts +0 -15
  60. package/build/dex/angle-staked-stable/types.js +0 -3
  61. package/build/dex/angle-staked-stable/types.js.map +0 -1
  62. package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +0 -43
  63. package/build/dex/angle-transmuter/angle-transmuter-pool.js +0 -309
  64. package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +0 -1
  65. package/build/dex/angle-transmuter/angle-transmuter.d.ts +0 -46
  66. package/build/dex/angle-transmuter/angle-transmuter.js +0 -233
  67. package/build/dex/angle-transmuter/angle-transmuter.js.map +0 -1
  68. package/build/dex/angle-transmuter/backedOracle.d.ts +0 -19
  69. package/build/dex/angle-transmuter/backedOracle.js +0 -56
  70. package/build/dex/angle-transmuter/backedOracle.js.map +0 -1
  71. package/build/dex/angle-transmuter/config.d.ts +0 -4
  72. package/build/dex/angle-transmuter/config.js +0 -20
  73. package/build/dex/angle-transmuter/config.js.map +0 -1
  74. package/build/dex/angle-transmuter/constants.d.ts +0 -4
  75. package/build/dex/angle-transmuter/constants.js +0 -8
  76. package/build/dex/angle-transmuter/constants.js.map +0 -1
  77. package/build/dex/angle-transmuter/pyth.d.ts +0 -19
  78. package/build/dex/angle-transmuter/pyth.js +0 -71
  79. package/build/dex/angle-transmuter/pyth.js.map +0 -1
  80. package/build/dex/angle-transmuter/redstone.d.ts +0 -20
  81. package/build/dex/angle-transmuter/redstone.js +0 -73
  82. package/build/dex/angle-transmuter/redstone.js.map +0 -1
  83. package/build/dex/angle-transmuter/transmuter.d.ts +0 -50
  84. package/build/dex/angle-transmuter/transmuter.js +0 -314
  85. package/build/dex/angle-transmuter/transmuter.js.map +0 -1
  86. package/build/dex/angle-transmuter/types.d.ts +0 -144
  87. package/build/dex/angle-transmuter/types.js +0 -31
  88. package/build/dex/angle-transmuter/types.js.map +0 -1
  89. package/build/dex/angle-transmuter/utils.d.ts +0 -9
  90. package/build/dex/angle-transmuter/utils.js +0 -264
  91. package/build/dex/angle-transmuter/utils.js.map +0 -1
  92. package/build/dex/smardex/subgraph-queries.d.ts +0 -1
  93. package/build/dex/smardex/subgraph-queries.js +0 -17
  94. package/build/dex/smardex/subgraph-queries.js.map +0 -1
  95. package/build/dex/smardex/usd-reserves.d.ts +0 -23
  96. package/build/dex/smardex/usd-reserves.js +0 -86
  97. package/build/dex/smardex/usd-reserves.js.map +0 -1
  98. package/build/dex/trader-joe-v2-1-2/config.d.ts +0 -4
  99. package/build/dex/trader-joe-v2-1-2/config.js +0 -47
  100. package/build/dex/trader-joe-v2-1-2/config.js.map +0 -1
  101. package/build/dex/trader-joe-v2-1-2/constants.d.ts +0 -20
  102. package/build/dex/trader-joe-v2-1-2/constants.js +0 -22
  103. package/build/dex/trader-joe-v2-1-2/constants.js.map +0 -1
  104. package/build/dex/trader-joe-v2-1-2/math/index.d.ts +0 -37
  105. package/build/dex/trader-joe-v2-1-2/math/index.js +0 -291
  106. package/build/dex/trader-joe-v2-1-2/math/index.js.map +0 -1
  107. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +0 -60
  108. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +0 -248
  109. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +0 -1
  110. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +0 -53
  111. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +0 -307
  112. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +0 -1
  113. package/build/dex/trader-joe-v2-1-2/types.d.ts +0 -82
  114. package/build/dex/trader-joe-v2-1-2/types.js +0 -9
  115. package/build/dex/trader-joe-v2-1-2/types.js.map +0 -1
  116. package/build/dex/trader-joe-v2_1/config.d.ts +0 -4
  117. package/build/dex/trader-joe-v2_1/config.js +0 -47
  118. package/build/dex/trader-joe-v2_1/config.js.map +0 -1
  119. package/build/dex/trader-joe-v2_1/constants.d.ts +0 -20
  120. package/build/dex/trader-joe-v2_1/constants.js +0 -22
  121. package/build/dex/trader-joe-v2_1/constants.js.map +0 -1
  122. package/build/dex/trader-joe-v2_1/math/index.d.ts +0 -37
  123. package/build/dex/trader-joe-v2_1/math/index.js +0 -291
  124. package/build/dex/trader-joe-v2_1/math/index.js.map +0 -1
  125. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
  126. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +0 -384
  127. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +0 -1
  128. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.d.ts +0 -60
  129. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js +0 -247
  130. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js.map +0 -1
  131. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.d.ts +0 -53
  132. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js +0 -307
  133. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js.map +0 -1
  134. package/build/dex/trader-joe-v2_1/types.d.ts +0 -82
  135. package/build/dex/trader-joe-v2_1/types.js +0 -9
  136. package/build/dex/trader-joe-v2_1/types.js.map +0 -1
  137. package/build/dex/wombat/wombat-pool-poller.d.ts +0 -22
  138. package/build/dex/wombat/wombat-pool-poller.js +0 -164
  139. package/build/dex/wombat/wombat-pool-poller.js.map +0 -1
@@ -0,0 +1,222 @@
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.GyroEPool = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const bignumber_1 = require("@ethersproject/bignumber");
9
+ const balancer_v2_pool_1 = require("../balancer-v2-pool");
10
+ const constants_1 = require("../../../../constants");
11
+ const utils_1 = require("../../utils");
12
+ const balancer_v2_math_1 = require("../../balancer-v2-math");
13
+ const sor_1 = require("@balancer-labs/sor");
14
+ const gyro_e_abi_json_1 = __importDefault(require("../../../../abi/balancer-v2/gyro-e.abi.json"));
15
+ // Swap Limit factor
16
+ const SWAP_LIMIT_FACTOR = BigInt('999999000000000000');
17
+ class GyroEPool extends balancer_v2_pool_1.BasePool {
18
+ constructor(vaultAddress, vaultInterface) {
19
+ super();
20
+ this.poolInterface = new abi_1.Interface(gyro_e_abi_json_1.default);
21
+ this.vaultAddress = vaultAddress;
22
+ this.vaultInterface = vaultInterface;
23
+ }
24
+ parsePoolPairData(pool, poolState, tokenIn, tokenOut) {
25
+ // All values should be normalised to 18 decimals. e.g. 1USDC = 1e18 not 1e6
26
+ let indexIn = 0, indexOut = 0;
27
+ const scalingFactors = [];
28
+ const balances = pool.tokens.map((t, i) => {
29
+ if (t.address.toLowerCase() === tokenIn.toLowerCase())
30
+ indexIn = i;
31
+ else if (t.address.toLowerCase() === tokenOut.toLowerCase())
32
+ indexOut = i;
33
+ const scalingFactor = (0, utils_1.getTokenScalingFactor)(t.decimals);
34
+ scalingFactors.push(scalingFactor);
35
+ return bignumber_1.BigNumber.from(this._upscale(BigInt(poolState.tokens[t.address.toLowerCase()].balance), scalingFactor));
36
+ });
37
+ const tokenInIsToken0 = indexIn === 0;
38
+ const tokenRates = poolState.tokenRates
39
+ ? [poolState.tokenRates[0], poolState.tokenRates[1]]
40
+ : [];
41
+ const rateProviders = poolState.rateProviders ?? [];
42
+ const poolPairData = {
43
+ gyroParams: poolState.gyroParams,
44
+ gyroDerivedParams: poolState.gyroDerivedParams,
45
+ tokenRates,
46
+ rateProviders,
47
+ balances,
48
+ indexIn,
49
+ indexOut,
50
+ scalingFactors,
51
+ swapFee: poolState.swapFee,
52
+ tokenInIsToken0,
53
+ };
54
+ return poolPairData;
55
+ }
56
+ getSwapMaxAmount(poolPairData, side) {
57
+ if (side === constants_1.SwapSide.SELL) {
58
+ // Approximation - similar to traditional stable pools
59
+ return this._downscaleDown(balancer_v2_math_1.MathSol.mulDownFixed(poolPairData.balances[poolPairData.indexOut].toBigInt(), SWAP_LIMIT_FACTOR), poolPairData.scalingFactors[poolPairData.indexIn]);
60
+ }
61
+ else {
62
+ return this._downscaleDown(balancer_v2_math_1.MathSol.mulDownFixed(poolPairData.balances[poolPairData.indexIn].toBigInt(), SWAP_LIMIT_FACTOR), poolPairData.scalingFactors[poolPairData.indexOut]);
63
+ }
64
+ }
65
+ /*
66
+ Helper function to construct onchain multicall data for Pool.
67
+ */
68
+ getOnChainCalls(pool) {
69
+ const poolCallData = [
70
+ {
71
+ target: this.vaultAddress,
72
+ callData: this.vaultInterface.encodeFunctionData('getPoolTokens', [
73
+ pool.id,
74
+ ]),
75
+ },
76
+ {
77
+ target: pool.address,
78
+ callData: this.poolInterface.encodeFunctionData('getSwapFeePercentage'),
79
+ },
80
+ {
81
+ target: pool.address,
82
+ callData: this.poolInterface.encodeFunctionData('getECLPParams'),
83
+ },
84
+ ];
85
+ // Only version 2 of GyroE uses token rates
86
+ const v2Calls = pool.poolTypeVersion === 2
87
+ ? [
88
+ {
89
+ target: pool.address,
90
+ callData: this.poolInterface.encodeFunctionData('getTokenRates'),
91
+ },
92
+ {
93
+ target: pool.address,
94
+ callData: this.poolInterface.encodeFunctionData('rateProvider0'),
95
+ },
96
+ {
97
+ target: pool.address,
98
+ callData: this.poolInterface.encodeFunctionData('rateProvider1'),
99
+ },
100
+ ]
101
+ : [];
102
+ return [...poolCallData, ...v2Calls];
103
+ }
104
+ /*
105
+ Helper function to decode multicall data for Pool.
106
+ data must contain returnData
107
+ startIndex is where to start in returnData. Allows this decode function to be called along with other pool types.
108
+ */
109
+ decodeOnChainCalls(pool, data, startIndex) {
110
+ const pools = {};
111
+ const poolTokens = (0, utils_1.decodeThrowError)(this.vaultInterface, 'getPoolTokens', data[startIndex++], pool.address);
112
+ const swapFee = (0, utils_1.decodeThrowError)(this.poolInterface, 'getSwapFeePercentage', data[startIndex++], pool.address)[0];
113
+ const eclParams = (0, utils_1.decodeThrowError)(this.poolInterface, 'getECLPParams', data[startIndex++], pool.address);
114
+ let tokenRates;
115
+ let rateProviders = [];
116
+ if (pool.poolTypeVersion === 2) {
117
+ tokenRates = (0, utils_1.decodeThrowError)(this.poolInterface, 'getTokenRates', data[startIndex++], pool.address);
118
+ tokenRates = tokenRates.map(t => BigInt(t.toString()));
119
+ const rateProvider0 = (0, utils_1.decodeThrowError)(this.poolInterface, 'rateProvider0', data[startIndex++], pool.address)[0];
120
+ const rateProvider1 = (0, utils_1.decodeThrowError)(this.poolInterface, 'rateProvider1', data[startIndex++], pool.address)[0];
121
+ rateProviders = [rateProvider0, rateProvider1];
122
+ }
123
+ const poolState = {
124
+ gyroParams: eclParams.params,
125
+ gyroDerivedParams: eclParams.d,
126
+ swapFee: BigInt(swapFee.toString()),
127
+ tokenRates,
128
+ rateProviders,
129
+ orderedTokens: poolTokens.tokens,
130
+ tokens: poolTokens.tokens.reduce((ptAcc, pt, j) => {
131
+ const tokenState = {
132
+ balance: BigInt(poolTokens.balances[j].toString()),
133
+ };
134
+ ptAcc[pt.toLowerCase()] = tokenState;
135
+ return ptAcc;
136
+ }, {}),
137
+ };
138
+ pools[pool.address] = poolState;
139
+ return [pools, startIndex];
140
+ }
141
+ onSell(amounts, poolPairData) {
142
+ try {
143
+ const scalingFactorTokenIn = this._scalingFactor(poolPairData.tokenInIsToken0, poolPairData);
144
+ const scalingFactorTokenOut = this._scalingFactor(!poolPairData.tokenInIsToken0, poolPairData);
145
+ const normalizedBalances = this._normalizeBalances(poolPairData.balances, poolPairData.tokenRates);
146
+ const orderedNormalizedBalances = (0, sor_1.balancesFromTokenInOut)(normalizedBalances[poolPairData.indexIn], normalizedBalances[poolPairData.indexOut], poolPairData.tokenInIsToken0);
147
+ const [currentInvariant, invErr] = sor_1.GyroEMaths.calculateInvariantWithError(orderedNormalizedBalances, poolPairData.gyroParams, poolPairData.gyroDerivedParams);
148
+ const invariant = {
149
+ x: currentInvariant.add(invErr.mul(2)),
150
+ y: currentInvariant,
151
+ };
152
+ const tokenAmountsInScaled = amounts.map(a => this._upscale(a, scalingFactorTokenIn));
153
+ const tokenAmountsInWithFee = tokenAmountsInScaled.map(a => this._subtractSwapFeeAmount(a, poolPairData.swapFee));
154
+ const amountsOut = tokenAmountsInWithFee.map(amount => {
155
+ try {
156
+ const amountOut = sor_1.GyroEMaths.calcOutGivenIn(orderedNormalizedBalances, bignumber_1.BigNumber.from(amount), poolPairData.tokenInIsToken0, poolPairData.gyroParams, poolPairData.gyroDerivedParams, invariant).toBigInt();
157
+ return this._downscaleDown(amountOut, scalingFactorTokenOut);
158
+ }
159
+ catch (error) {
160
+ return BigInt(0);
161
+ }
162
+ });
163
+ return amountsOut;
164
+ }
165
+ catch (error) {
166
+ return [];
167
+ }
168
+ }
169
+ onBuy(amounts, poolPairData) {
170
+ try {
171
+ const scalingFactorTokenIn = this._scalingFactor(poolPairData.tokenInIsToken0, poolPairData);
172
+ const scalingFactorTokenOut = this._scalingFactor(!poolPairData.tokenInIsToken0, poolPairData);
173
+ const normalizedBalances = this._normalizeBalances(poolPairData.balances, poolPairData.tokenRates);
174
+ const orderedNormalizedBalances = (0, sor_1.balancesFromTokenInOut)(normalizedBalances[poolPairData.indexIn], normalizedBalances[poolPairData.indexOut], poolPairData.tokenInIsToken0);
175
+ const [currentInvariant, invErr] = sor_1.GyroEMaths.calculateInvariantWithError(orderedNormalizedBalances, poolPairData.gyroParams, poolPairData.gyroDerivedParams);
176
+ const invariant = {
177
+ x: currentInvariant.add(invErr.mul(2)),
178
+ y: currentInvariant,
179
+ };
180
+ const tokenAmountsOutScaled = amounts.map(a => this._upscale(a, scalingFactorTokenOut));
181
+ const amountsIn = tokenAmountsOutScaled.map(amount => {
182
+ try {
183
+ const amountIn = sor_1.GyroEMaths.calcInGivenOut(orderedNormalizedBalances, bignumber_1.BigNumber.from(amount), poolPairData.tokenInIsToken0, poolPairData.gyroParams, poolPairData.gyroDerivedParams, invariant).toBigInt();
184
+ return amountIn;
185
+ }
186
+ catch (error) {
187
+ return BigInt(0);
188
+ }
189
+ });
190
+ const downScaled = amountsIn.map(amount => this._downscaleUp(amount, scalingFactorTokenIn));
191
+ return downScaled.map(a => this._addFeeAmount(a, poolPairData.swapFee));
192
+ }
193
+ catch (error) {
194
+ return [];
195
+ }
196
+ }
197
+ _scalingFactor(token0, poolPairData) {
198
+ const tokenIndex = token0 ? 0 : 1;
199
+ const scalingFactor = poolPairData.scalingFactors[tokenIndex];
200
+ if (poolPairData.rateProviders.length === 0 ||
201
+ poolPairData.rateProviders[tokenIndex].toLowerCase() === constants_1.NULL_ADDRESS) {
202
+ return scalingFactor;
203
+ }
204
+ else {
205
+ return balancer_v2_math_1.MathSol.mulDownFixed(scalingFactor, poolPairData.tokenRates[tokenIndex]);
206
+ }
207
+ }
208
+ _normalizeBalances(balances, tokenRates) {
209
+ // If pool is V1, e.g. has no tokenRates return balances
210
+ if (tokenRates.length === 0)
211
+ return balances;
212
+ /*
213
+ Apply tokenRates
214
+ SOR upscales here first using scalingFactors but this is already being done in parse pair data so no need to repeat.
215
+ */
216
+ return balances.map((bal, i) => {
217
+ return bignumber_1.BigNumber.from(balancer_v2_math_1.MathSol.mulDownFixed(bal.toBigInt(), tokenRates[i]));
218
+ });
219
+ }
220
+ }
221
+ exports.GyroEPool = GyroEPool;
222
+ //# sourceMappingURL=GyroEPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GyroEPool.js","sourceRoot":"","sources":["../../../../../src/dex/balancer-v2/pools/gyro/GyroEPool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function _reduceFee(amountIn: bigint, swapFee: bigint): bigint;
2
+ export declare function _addFee(amountIn: bigint, swapFee: bigint): bigint;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._addFee = exports._reduceFee = void 0;
4
+ function _reduceFee(amountIn, swapFee) {
5
+ const product = amountIn * swapFee;
6
+ const feeAmount = (product - 1n) / 1000000000000000000n + 1n;
7
+ return amountIn - feeAmount;
8
+ }
9
+ exports._reduceFee = _reduceFee;
10
+ function _addFee(amountIn, swapFee) {
11
+ const fee = 1000000000000000000n - swapFee;
12
+ return divUp(amountIn, fee);
13
+ }
14
+ exports._addFee = _addFee;
15
+ function divUp(a, b) {
16
+ const aInflated = a * 1000000000000000000n;
17
+ return (aInflated - 1n) / b + 1n;
18
+ }
19
+ //# sourceMappingURL=gyro-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gyro-helpers.js","sourceRoot":"","sources":["../../../../../src/dex/balancer-v2/pools/gyro/gyro-helpers.ts"],"names":[],"mappings":";;;AAAA,SAAgB,UAAU,CAAC,QAAgB,EAAE,OAAe;IAC1D,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACnC,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,oBAAoB,GAAG,EAAE,CAAC;IAC7D,OAAO,QAAQ,GAAG,SAAS,CAAC;AAC9B,CAAC;AAJD,gCAIC;AAED,SAAgB,OAAO,CAAC,QAAgB,EAAE,OAAe;IACvD,MAAM,GAAG,GAAG,oBAAoB,GAAG,OAAO,CAAC;IAC3C,OAAO,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAHD,0BAGC;AAED,SAAS,KAAK,CAAC,CAAS,EAAE,CAAS;IACjC,MAAM,SAAS,GAAG,CAAC,GAAG,oBAAoB,CAAC;IAC3C,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function queryOnChain(rpcUrl: string, blockNumber: number, poolId: string, kind: 0 | 1, assetIn: string, assetOut: string, amount: BigInt): Promise<bigint[]>;
@@ -0,0 +1,40 @@
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.queryOnChain = void 0;
7
+ const dotenv_1 = __importDefault(require("dotenv"));
8
+ dotenv_1.default.config();
9
+ const contracts_1 = require("@ethersproject/contracts");
10
+ const providers_1 = require("@ethersproject/providers");
11
+ const vault_json_1 = __importDefault(require("../../abi/balancer-v2/vault.json"));
12
+ // Compare retrieve an onchain query result for a single swap
13
+ async function queryOnChain(rpcUrl, blockNumber, poolId, kind, assetIn, assetOut, amount) {
14
+ const provider = new providers_1.JsonRpcProvider(rpcUrl);
15
+ const vaultAddress = '0xBA12222222228d8Ba445958a75a0704d566BF2C8';
16
+ const vaultContract = new contracts_1.Contract(vaultAddress, vault_json_1.default, provider);
17
+ const funds = {
18
+ sender: '0x0000000000000000000000000000000000000000',
19
+ recipient: '0x0000000000000000000000000000000000000000',
20
+ fromInternalBalance: false,
21
+ toInternalBalance: false,
22
+ };
23
+ const swaps = [
24
+ {
25
+ poolId,
26
+ assetInIndex: 0,
27
+ assetOutIndex: 1,
28
+ amount,
29
+ userData: '0x',
30
+ },
31
+ ];
32
+ const assets = [assetIn, assetOut];
33
+ const deltas = await vaultContract.callStatic.queryBatchSwap(kind, swaps, assets, funds, {
34
+ blockTag: blockNumber,
35
+ });
36
+ // console.log(deltas.toString());
37
+ return [deltas[0].toBigInt(), deltas[1].toBigInt()];
38
+ }
39
+ exports.queryOnChain = queryOnChain;
40
+ //# sourceMappingURL=queryOnChain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryOnChain.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/queryOnChain.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAChB,wDAAoD;AACpD,wDAA2D;AAC3D,kFAAwD;AAExD,6DAA6D;AACtD,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,WAAmB,EACnB,MAAc,EACd,IAAW,EACX,OAAe,EACf,QAAgB,EAChB,MAAc;IAEd,MAAM,QAAQ,GAAG,IAAI,2BAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,4CAA4C,CAAC;IAClE,MAAM,aAAa,GAAG,IAAI,oBAAQ,CAAC,YAAY,EAAE,oBAAQ,EAAE,QAAQ,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,4CAA4C;QACpD,SAAS,EAAE,4CAA4C;QACvD,mBAAmB,EAAE,KAAK;QAC1B,iBAAiB,EAAE,KAAK;KACzB,CAAC;IACF,MAAM,KAAK,GAAG;QACZ;YACE,MAAM;YACN,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,MAAM;YACN,QAAQ,EAAE,IAAI;SACf;KACF,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,cAAc,CAC1D,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,EACL;QACE,QAAQ,EAAE,WAAW;KACtB,CACF,CAAC;IACF,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtD,CAAC;AAxCD,oCAwCC"}
@@ -1,5 +1,6 @@
1
1
  import { NumberAsString } from '@paraswap/core';
2
2
  import { Address } from '../../types';
3
+ import { DerivedGyroEParams, GyroEParams } from '@balancer-labs/sor';
3
4
  export declare enum BalancerPoolTypes {
4
5
  Weighted = "Weighted",
5
6
  Stable = "Stable",
@@ -17,7 +18,9 @@ export declare enum BalancerPoolTypes {
17
18
  ReaperLinear = "ReaperLinear",
18
19
  SiloLinear = "SiloLinear",
19
20
  TetuLinear = "TetuLinear",
20
- YearnLinear = "YearnLinear"
21
+ YearnLinear = "YearnLinear",
22
+ Gyro3 = "Gyro3",
23
+ GyroE = "GyroE"
21
24
  }
22
25
  export declare type TokenState = {
23
26
  balance: bigint;
@@ -28,6 +31,10 @@ export declare type PoolState = {
28
31
  tokens: {
29
32
  [address: string]: TokenState;
30
33
  };
34
+ tokenRates?: bigint[];
35
+ rateProviders?: string[];
36
+ gyroParams?: GyroEParams;
37
+ gyroDerivedParams?: DerivedGyroEParams;
31
38
  swapFee: bigint;
32
39
  orderedTokens: string[];
33
40
  rate?: bigint;
@@ -59,6 +66,7 @@ export interface SubgraphPoolBase {
59
66
  id: string;
60
67
  address: string;
61
68
  poolType: BalancerPoolTypes;
69
+ poolTypeVersion: number;
62
70
  tokens: SubgraphToken[];
63
71
  tokensMap: {
64
72
  [tokenAddress: string]: SubgraphToken;
@@ -66,6 +74,21 @@ export interface SubgraphPoolBase {
66
74
  mainIndex: number;
67
75
  wrappedIndex: number;
68
76
  mainTokens: SubgraphMainToken[];
77
+ root3Alpha: string;
78
+ alpha: string;
79
+ beta: string;
80
+ c: string;
81
+ s: string;
82
+ lambda: string;
83
+ tauAlphaX: string;
84
+ tauAlphaY: string;
85
+ tauBetaX: string;
86
+ tauBetaY: string;
87
+ u: string;
88
+ v: string;
89
+ w: string;
90
+ z: string;
91
+ dSq: string;
69
92
  }
70
93
  export declare type BalancerSwapV2 = {
71
94
  poolId: string;
@@ -21,6 +21,8 @@ var BalancerPoolTypes;
21
21
  BalancerPoolTypes["SiloLinear"] = "SiloLinear";
22
22
  BalancerPoolTypes["TetuLinear"] = "TetuLinear";
23
23
  BalancerPoolTypes["YearnLinear"] = "YearnLinear";
24
+ BalancerPoolTypes["Gyro3"] = "Gyro3";
25
+ BalancerPoolTypes["GyroE"] = "GyroE";
24
26
  })(BalancerPoolTypes = exports.BalancerPoolTypes || (exports.BalancerPoolTypes = {}));
25
27
  var SwapTypes;
26
28
  (function (SwapTypes) {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/types.ts"],"names":[],"mappings":";;;AAGA,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;AAqFD,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":";;;AAIA,mEAAmE;AACnE,IAAY,iBAoBX;AApBD,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;IAC3B,oCAAe,CAAA;IACf,oCAAe,CAAA;AACjB,CAAC,EApBW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAoB5B;AA4GD,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,uDAAW,CAAA;IACX,yDAAY,CAAA;AACd,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB"}
@@ -1,4 +1,5 @@
1
1
  import { Interface, Result } from '@ethersproject/abi';
2
+ import { BigNumber } from '@ethersproject/bignumber';
2
3
  import { SwapSide } from '../../constants';
3
4
  import { SubgraphMainToken, SubgraphPoolAddressDictionary, SubgraphPoolBase, SubgraphToken } from './types';
4
5
  interface BalancerPathHop {
@@ -6,6 +7,13 @@ interface BalancerPathHop {
6
7
  tokenIn: SubgraphToken;
7
8
  tokenOut: SubgraphToken;
8
9
  }
10
+ /**
11
+ * Parses a fixed-point decimal string into a BigNumber. If we do not have enough decimals to express the number, we truncate it.
12
+ * @param value
13
+ * @param decimals
14
+ * @returns BigNumber
15
+ */
16
+ export declare function safeParseFixed(value: string, decimals?: number): BigNumber;
9
17
  export declare const isSameAddress: (address1: string, address2: string) => boolean;
10
18
  export declare function getTokenScalingFactor(tokenDecimals: number): bigint;
11
19
  export declare function decodeThrowError(contractInterface: Interface, functionName: string, resultEntry: {
@@ -1,12 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.poolGetMainTokens = exports.getAllPoolsUsedInPaths = exports.poolGetPathForTokenInOut = exports.decodeThrowError = exports.getTokenScalingFactor = exports.isSameAddress = void 0;
3
+ exports.poolGetMainTokens = exports.getAllPoolsUsedInPaths = exports.poolGetPathForTokenInOut = exports.decodeThrowError = exports.getTokenScalingFactor = exports.isSameAddress = exports.safeParseFixed = void 0;
4
4
  const address_1 = require("@ethersproject/address");
5
+ const bignumber_1 = require("@ethersproject/bignumber");
5
6
  const utils_1 = require("../../utils");
6
7
  const bigint_constants_1 = require("../../bigint-constants");
7
8
  const constants_1 = require("../../constants");
8
9
  const types_1 = require("./types");
9
10
  const lodash_1 = require("lodash");
11
+ /**
12
+ * Parses a fixed-point decimal string into a BigNumber. If we do not have enough decimals to express the number, we truncate it.
13
+ * @param value
14
+ * @param decimals
15
+ * @returns BigNumber
16
+ */
17
+ function safeParseFixed(value, decimals = 0) {
18
+ const [integer, fraction] = value.split('.');
19
+ if (!fraction) {
20
+ return (0, bignumber_1.parseFixed)(value, decimals);
21
+ }
22
+ const safeValue = integer + '.' + fraction.slice(0, decimals);
23
+ return (0, bignumber_1.parseFixed)(safeValue, decimals);
24
+ }
25
+ exports.safeParseFixed = safeParseFixed;
10
26
  const isSameAddress = (address1, address2) => (0, address_1.getAddress)(address1) === (0, address_1.getAddress)(address2);
11
27
  exports.isSameAddress = isSameAddress;
12
28
  function getTokenScalingFactor(tokenDecimals) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "2.47.5",
3
+ "version": "2.47.7",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
@@ -51,6 +51,7 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "@0x/utils": "^4.5.2",
54
+ "@balancer-labs/sor": "4.1.1-beta.4",
54
55
  "@bgd-labs/aave-address-book": "2.21.1",
55
56
  "@ethersproject/abi": "^5.7.0",
56
57
  "@hashflow/sdk": "1.2.4",