@paraswap/dex-lib 2.35.3-quick-perps-proxy.3 → 2.35.4

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 (108) hide show
  1. package/build/abi/algebra/AlgebraPool.abi.json +727 -0
  2. package/build/abi/api3-proxy.json +0 -7
  3. package/build/config.js +26 -0
  4. package/build/config.js.map +1 -1
  5. package/build/constants.d.ts +2 -1
  6. package/build/constants.js +1 -0
  7. package/build/constants.js.map +1 -1
  8. package/build/dex/algebra/algebra-factory.d.ts +23 -0
  9. package/build/dex/algebra/algebra-factory.js +40 -0
  10. package/build/dex/algebra/algebra-factory.js.map +1 -0
  11. package/build/dex/algebra/algebra-pool.d.ts +46 -0
  12. package/build/dex/algebra/algebra-pool.js +336 -0
  13. package/build/dex/algebra/algebra-pool.js.map +1 -0
  14. package/build/dex/generic-rfq/generic-rfq.js +2 -4
  15. package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
  16. package/build/dex/quick-perps/pool.js +6 -21
  17. package/build/dex/quick-perps/pool.js.map +1 -1
  18. package/build/dex/quick-perps/quick-perps.js +28 -34
  19. package/build/dex/quick-perps/quick-perps.js.map +1 -1
  20. package/build/dex/uniswap-v3/config.js +16 -0
  21. package/build/dex/uniswap-v3/config.js.map +1 -1
  22. package/build/dex/weth/config.js +3 -0
  23. package/build/dex/weth/config.js.map +1 -1
  24. package/build/lib/api3-feed.d.ts +0 -4
  25. package/build/lib/api3-feed.js +0 -18
  26. package/build/lib/api3-feed.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/abi/api3-proxy.json +0 -7
  29. package/src/config.ts +27 -1
  30. package/src/constants.ts +1 -0
  31. package/src/dex/generic-rfq/generic-rfq.ts +2 -4
  32. package/src/dex/quick-perps/pool.ts +7 -42
  33. package/src/dex/quick-perps/quick-perps-events.test.ts +1 -0
  34. package/src/dex/quick-perps/quick-perps.ts +35 -45
  35. package/src/dex/uniswap-v3/config.ts +17 -0
  36. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +95 -0
  37. package/src/dex/weth/config.ts +3 -0
  38. package/src/lib/api3-feed.ts +0 -35
  39. package/tests/constants-e2e.ts +17 -0
  40. package/build/abi/quickPerps/fast-price-events.json +0 -70
  41. package/build/abi/quickPerps/fast-price-feed.json +0 -748
  42. package/build/abi/quickPerps/reader.json +0 -313
  43. package/build/abi/quickPerps/vault-price-feed.json +0 -477
  44. package/build/abi/quickPerps/vault.json +0 -1953
  45. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json +0 -285
  46. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3Router.abi.json +0 -583
  47. package/build/abi/woo-fi/WooFeeManager.abi.json +0 -318
  48. package/build/abi/woo-fi/WooPP.abi.json +0 -548
  49. package/build/abi/woo-fi/Wooracle.abi.json +0 -260
  50. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  51. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  52. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  53. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  54. package/build/dex/aave-v3/tokens/polygon.json +0 -116
  55. package/build/dex/balancer-v2/LinearMath.d.ts +0 -19
  56. package/build/dex/balancer-v2/LinearMath.js +0 -179
  57. package/build/dex/balancer-v2/LinearMath.js.map +0 -1
  58. package/build/dex/balancer-v2/LinearPool.d.ts +0 -47
  59. package/build/dex/balancer-v2/LinearPool.js +0 -324
  60. package/build/dex/balancer-v2/LinearPool.js.map +0 -1
  61. package/build/dex/balancer-v2/PhantomStablePool.d.ts +0 -47
  62. package/build/dex/balancer-v2/PhantomStablePool.js +0 -294
  63. package/build/dex/balancer-v2/PhantomStablePool.js.map +0 -1
  64. package/build/dex/balancer-v2/StableMath.d.ts +0 -9
  65. package/build/dex/balancer-v2/StableMath.js +0 -272
  66. package/build/dex/balancer-v2/StableMath.js.map +0 -1
  67. package/build/dex/balancer-v2/balancer-v2-pool.d.ts +0 -75
  68. package/build/dex/balancer-v2/balancer-v2-pool.js +0 -417
  69. package/build/dex/balancer-v2/balancer-v2-pool.js.map +0 -1
  70. package/build/dex/quickswap-v3.d.ts +0 -21
  71. package/build/dex/quickswap-v3.js +0 -40
  72. package/build/dex/quickswap-v3.js.map +0 -1
  73. package/build/dex/test-dex/config.d.ts +0 -4
  74. package/build/dex/test-dex/config.js +0 -15
  75. package/build/dex/test-dex/config.js.map +0 -1
  76. package/build/dex/test-dex/test-dex-pool.d.ts +0 -39
  77. package/build/dex/test-dex/test-dex-pool.js +0 -63
  78. package/build/dex/test-dex/test-dex-pool.js.map +0 -1
  79. package/build/dex/test-dex/test-dex.d.ts +0 -37
  80. package/build/dex/test-dex/test-dex.js +0 -126
  81. package/build/dex/test-dex/test-dex.js.map +0 -1
  82. package/build/dex/test-dex/types.d.ts +0 -6
  83. package/build/dex/test-dex/types.js +0 -3
  84. package/build/dex/test-dex/types.js.map +0 -1
  85. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.d.ts +0 -12
  86. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js +0 -23
  87. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js.map +0 -1
  88. package/build/dex/woo-fi/config.d.ts +0 -4
  89. package/build/dex/woo-fi/config.js +0 -141
  90. package/build/dex/woo-fi/config.js.map +0 -1
  91. package/build/dex/woo-fi/constants.d.ts +0 -5
  92. package/build/dex/woo-fi/constants.js +0 -20
  93. package/build/dex/woo-fi/constants.js.map +0 -1
  94. package/build/dex/woo-fi/types.d.ts +0 -48
  95. package/build/dex/woo-fi/types.js +0 -3
  96. package/build/dex/woo-fi/types.js.map +0 -1
  97. package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +0 -14
  98. package/build/dex/woo-fi/woo-fi-decimal-math.js +0 -42
  99. package/build/dex/woo-fi/woo-fi-decimal-math.js.map +0 -1
  100. package/build/dex/woo-fi/woo-fi-math.d.ts +0 -31
  101. package/build/dex/woo-fi/woo-fi-math.js +0 -300
  102. package/build/dex/woo-fi/woo-fi-math.js.map +0 -1
  103. package/build/dex/woo-fi/woo-fi.d.ts +0 -65
  104. package/build/dex/woo-fi/woo-fi.js +0 -480
  105. package/build/dex/woo-fi/woo-fi.js.map +0 -1
  106. package/build/dex/woo-fi-v2/woo-fi-math.d.ts +0 -16
  107. package/build/dex/woo-fi-v2/woo-fi-math.js +0 -137
  108. package/build/dex/woo-fi-v2/woo-fi-math.js.map +0 -1
@@ -1,179 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports._calcTokensOutGivenExactBptIn = exports._calcWrappedOutPerBptIn = exports._calcWrappedInPerBptOut = exports._calcBptOutPerWrappedIn = exports._calcMainInPerWrappedOut = exports._calcMainOutPerWrappedIn = exports._calcMainOutPerBptIn = exports._calcMainInPerBptOut = exports._calcWrappedInPerMainOut = exports._calcWrappedOutPerMainIn = exports._calcBptInPerWrappedOut = exports._calcBptInPerMainOut = exports._calcBptOutPerMainIn = void 0;
4
- const balancer_v2_math_1 = require("./balancer-v2-math");
5
- function _calcBptOutPerMainIn(mainIn, mainBalance, wrappedBalance, bptSupply, params) {
6
- // Amount out, so we round down overall.
7
- if (bptSupply == 0n) {
8
- return _toNominal(mainIn, params);
9
- }
10
- const previousNominalMain = _toNominal(mainBalance, params);
11
- const afterNominalMain = _toNominal(mainBalance + mainIn, params);
12
- const deltaNominalMain = afterNominalMain - previousNominalMain;
13
- const invariant = _calcInvariant(previousNominalMain, wrappedBalance);
14
- return balancer_v2_math_1.MathSol.divDown(balancer_v2_math_1.MathSol.mul(bptSupply, deltaNominalMain), invariant);
15
- }
16
- exports._calcBptOutPerMainIn = _calcBptOutPerMainIn;
17
- function _calcBptInPerMainOut(mainOut, mainBalance, wrappedBalance, bptSupply, params) {
18
- // Amount in, so we round up overall.
19
- const previousNominalMain = _toNominal(mainBalance, params);
20
- const afterNominalMain = _toNominal(mainBalance - mainOut, params);
21
- const deltaNominalMain = previousNominalMain - afterNominalMain;
22
- const invariant = _calcInvariant(previousNominalMain, wrappedBalance);
23
- return balancer_v2_math_1.MathSol.divUp(balancer_v2_math_1.MathSol.mul(bptSupply, deltaNominalMain), invariant);
24
- }
25
- exports._calcBptInPerMainOut = _calcBptInPerMainOut;
26
- function _calcBptInPerWrappedOut(wrappedOut, mainBalance, wrappedBalance, bptSupply, params) {
27
- // Amount in, so we round up overall.
28
- const nominalMain = _toNominal(mainBalance, params);
29
- const previousInvariant = _calcInvariant(nominalMain, wrappedBalance);
30
- const newWrappedBalance = wrappedBalance - wrappedOut;
31
- const newInvariant = _calcInvariant(nominalMain, newWrappedBalance);
32
- const newBptBalance = balancer_v2_math_1.MathSol.divDown(balancer_v2_math_1.MathSol.mul(bptSupply, newInvariant), previousInvariant);
33
- return bptSupply - newBptBalance;
34
- }
35
- exports._calcBptInPerWrappedOut = _calcBptInPerWrappedOut;
36
- function _calcWrappedOutPerMainIn(mainIn, mainBalance, params) {
37
- // Amount out, so we round down overall.
38
- const previousNominalMain = _toNominal(mainBalance, params);
39
- const afterNominalMain = _toNominal(mainBalance + mainIn, params);
40
- return afterNominalMain - previousNominalMain;
41
- }
42
- exports._calcWrappedOutPerMainIn = _calcWrappedOutPerMainIn;
43
- function _calcWrappedInPerMainOut(mainOut, mainBalance, params) {
44
- // Amount in, so we round up overall.
45
- const previousNominalMain = _toNominal(mainBalance, params);
46
- const afterNominalMain = _toNominal(mainBalance - mainOut, params);
47
- return previousNominalMain - afterNominalMain;
48
- }
49
- exports._calcWrappedInPerMainOut = _calcWrappedInPerMainOut;
50
- function _calcMainInPerBptOut(bptOut, mainBalance, wrappedBalance, bptSupply, params) {
51
- // Amount in, so we round up overall.
52
- if (bptSupply == 0n) {
53
- return _fromNominal(bptOut, params);
54
- }
55
- const previousNominalMain = _toNominal(mainBalance, params);
56
- const invariant = _calcInvariant(previousNominalMain, wrappedBalance);
57
- const deltaNominalMain = balancer_v2_math_1.MathSol.divUp(balancer_v2_math_1.MathSol.mul(invariant, bptOut), bptSupply);
58
- const afterNominalMain = previousNominalMain + deltaNominalMain;
59
- const newMainBalance = _fromNominal(afterNominalMain, params);
60
- return newMainBalance - mainBalance;
61
- }
62
- exports._calcMainInPerBptOut = _calcMainInPerBptOut;
63
- function _calcMainOutPerBptIn(bptIn, mainBalance, wrappedBalance, bptSupply, params) {
64
- // Amount out, so we round down overall.
65
- const previousNominalMain = _toNominal(mainBalance, params);
66
- const invariant = _calcInvariant(previousNominalMain, wrappedBalance);
67
- const deltaNominalMain = balancer_v2_math_1.MathSol.divDown(balancer_v2_math_1.MathSol.mul(invariant, bptIn), bptSupply);
68
- const afterNominalMain = previousNominalMain - deltaNominalMain;
69
- const newMainBalance = _fromNominal(afterNominalMain, params);
70
- return mainBalance - newMainBalance;
71
- }
72
- exports._calcMainOutPerBptIn = _calcMainOutPerBptIn;
73
- function _calcMainOutPerWrappedIn(wrappedIn, mainBalance, params) {
74
- // Amount out, so we round down overall.
75
- const previousNominalMain = _toNominal(mainBalance, params);
76
- const afterNominalMain = previousNominalMain - wrappedIn;
77
- const newMainBalance = _fromNominal(afterNominalMain, params);
78
- return mainBalance - newMainBalance;
79
- }
80
- exports._calcMainOutPerWrappedIn = _calcMainOutPerWrappedIn;
81
- function _calcMainInPerWrappedOut(wrappedOut, mainBalance, params) {
82
- // Amount in, so we round up overall.
83
- const previousNominalMain = _toNominal(mainBalance, params);
84
- const afterNominalMain = previousNominalMain + wrappedOut;
85
- const newMainBalance = _fromNominal(afterNominalMain, params);
86
- return newMainBalance - mainBalance;
87
- }
88
- exports._calcMainInPerWrappedOut = _calcMainInPerWrappedOut;
89
- function _calcBptOutPerWrappedIn(wrappedIn, mainBalance, wrappedBalance, bptSupply, params) {
90
- // Amount out, so we round down overall.
91
- if (bptSupply == 0n) {
92
- // Return nominal DAI
93
- return wrappedIn;
94
- }
95
- const nominalMain = _toNominal(mainBalance, params);
96
- const previousInvariant = _calcInvariant(nominalMain, wrappedBalance);
97
- const newWrappedBalance = wrappedBalance + wrappedIn;
98
- const newInvariant = _calcInvariant(nominalMain, newWrappedBalance);
99
- const newBptBalance = balancer_v2_math_1.MathSol.divDown(balancer_v2_math_1.MathSol.mul(bptSupply, newInvariant), previousInvariant);
100
- return newBptBalance - bptSupply;
101
- }
102
- exports._calcBptOutPerWrappedIn = _calcBptOutPerWrappedIn;
103
- function _calcWrappedInPerBptOut(bptOut, mainBalance, wrappedBalance, bptSupply, params) {
104
- // Amount in, so we round up overall.
105
- if (bptSupply == 0n) {
106
- // Return nominal DAI
107
- return bptOut;
108
- }
109
- const nominalMain = _toNominal(mainBalance, params);
110
- const previousInvariant = _calcInvariant(nominalMain, wrappedBalance);
111
- const newBptBalance = bptSupply + bptOut;
112
- const newWrappedBalance = balancer_v2_math_1.MathSol.divUp(balancer_v2_math_1.MathSol.mul(newBptBalance, previousInvariant), bptSupply) -
113
- nominalMain;
114
- return newWrappedBalance - wrappedBalance;
115
- }
116
- exports._calcWrappedInPerBptOut = _calcWrappedInPerBptOut;
117
- function _calcWrappedOutPerBptIn(bptIn, mainBalance, wrappedBalance, bptSupply, params) {
118
- // Amount out, so we round down overall.
119
- const nominalMain = _toNominal(mainBalance, params);
120
- const previousInvariant = _calcInvariant(nominalMain, wrappedBalance);
121
- const newBptBalance = bptSupply - bptIn;
122
- const newWrappedBalance = balancer_v2_math_1.MathSol.divUp(balancer_v2_math_1.MathSol.mul(newBptBalance, previousInvariant), bptSupply) -
123
- nominalMain;
124
- return wrappedBalance - newWrappedBalance;
125
- }
126
- exports._calcWrappedOutPerBptIn = _calcWrappedOutPerBptIn;
127
- function _calcInvariant(nominalMainBalance, wrappedBalance) {
128
- return nominalMainBalance + wrappedBalance;
129
- }
130
- function _toNominal(real, params) {
131
- // Fees are always rounded down: either direction would work but we need to be consistent, and rounding down
132
- // uses less gas.
133
- if (real < params.lowerTarget) {
134
- const fees = balancer_v2_math_1.MathSol.mulDownFixed(params.lowerTarget - real, params.fee);
135
- return balancer_v2_math_1.MathSol.sub(real, fees);
136
- }
137
- else if (real <= params.upperTarget) {
138
- return real;
139
- }
140
- else {
141
- const fees = balancer_v2_math_1.MathSol.mulDownFixed(real - params.upperTarget, params.fee);
142
- return balancer_v2_math_1.MathSol.sub(real, fees);
143
- }
144
- }
145
- function _fromNominal(nominal, params) {
146
- // Since real = nominal + fees, rounding down fees is equivalent to rounding down real.
147
- if (nominal < params.lowerTarget) {
148
- return balancer_v2_math_1.MathSol.divDownFixed(nominal + balancer_v2_math_1.MathSol.mulDownFixed(params.fee, params.lowerTarget), balancer_v2_math_1.MathSol.ONE + params.fee);
149
- }
150
- else if (nominal <= params.upperTarget) {
151
- return nominal;
152
- }
153
- else {
154
- return balancer_v2_math_1.MathSol.divDownFixed(nominal - balancer_v2_math_1.MathSol.mulDownFixed(params.fee, params.upperTarget), balancer_v2_math_1.MathSol.ONE - params.fee);
155
- }
156
- }
157
- function _calcTokensOutGivenExactBptIn(balances, bptAmountIn, bptTotalSupply, bptIndex) {
158
- /**********************************************************************************************
159
- // exactBPTInForTokensOut //
160
- // (per token) //
161
- // aO = tokenAmountOut / bptIn \ //
162
- // b = tokenBalance a0 = b * | --------------------- | //
163
- // bptIn = bptAmountIn \ bptTotalSupply / //
164
- // bpt = bptTotalSupply //
165
- **********************************************************************************************/
166
- // Since we're computing an amount out, we round down overall. This means rounding down on both the
167
- // multiplication and division.
168
- const bptRatio = balancer_v2_math_1.MathSol.divDownFixed(bptAmountIn, bptTotalSupply);
169
- const amountsOut = new Array(balances.length);
170
- for (let i = 0; i < balances.length; i++) {
171
- // BPT is skipped as those tokens are not the LPs, but rather the preminted and undistributed amount.
172
- if (i != bptIndex) {
173
- amountsOut[i] = balancer_v2_math_1.MathSol.mulDownFixed(balances[i], bptRatio);
174
- }
175
- }
176
- return amountsOut;
177
- }
178
- exports._calcTokensOutGivenExactBptIn = _calcTokensOutGivenExactBptIn;
179
- //# sourceMappingURL=LinearMath.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinearMath.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/LinearMath.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import { Interface } from '@ethersproject/abi';
2
- import { BigNumber } from '@ethersproject/bignumber';
3
- import { BasePool } from './balancer-v2-pool';
4
- import { callData, SubgraphPoolBase, PoolState } from './types';
5
- import { SwapSide } from '../../constants';
6
- export declare enum PairTypes {
7
- BptToMainToken = 0,
8
- MainTokenToBpt = 1,
9
- MainTokenToWrappedToken = 2,
10
- WrappedTokenToMainToken = 3,
11
- BptToWrappedToken = 4,
12
- WrappedTokenToBpt = 5
13
- }
14
- declare type LinearPoolPairData = {
15
- tokens: string[];
16
- balances: bigint[];
17
- indexIn: number;
18
- indexOut: number;
19
- scalingFactors: bigint[];
20
- bptIndex: number;
21
- swapFee: bigint;
22
- amp: bigint;
23
- wrappedIndex: number;
24
- mainIndex: number;
25
- lowerTarget: bigint;
26
- upperTarget: bigint;
27
- };
28
- export declare class LinearPool extends BasePool {
29
- MAX_TOKEN_BALANCE: BigNumber;
30
- vaultAddress: string;
31
- vaultInterface: Interface;
32
- poolInterface: Interface;
33
- constructor(vaultAddress: string, vaultInterface: Interface);
34
- onSell(amounts: bigint[], poolPairData: LinearPoolPairData): bigint[];
35
- _swapGivenIn(tokenAmountsIn: bigint[], tokens: string[], balances: bigint[], indexIn: number, indexOut: number, bptIndex: number, wrappedIndex: number, mainIndex: number, scalingFactors: bigint[], swapFeePercentage: bigint, lowerTarget: bigint, upperTarget: bigint): bigint[];
36
- _onSwapGivenIn(tokenAmountsIn: bigint[], mainBalance: bigint, wrappedBalance: bigint, fee: bigint, lowerTarget: bigint, upperTarget: bigint, virtualBptSupply: bigint, pairType: PairTypes): bigint[];
37
- parsePoolPairData(pool: SubgraphPoolBase, poolState: PoolState, tokenIn: string, tokenOut: string): LinearPoolPairData;
38
- getOnChainCalls(pool: SubgraphPoolBase): callData[];
39
- decodeOnChainCalls(pool: SubgraphPoolBase, data: {
40
- success: boolean;
41
- returnData: any;
42
- }[], startIndex: number): [{
43
- [address: string]: PoolState;
44
- }, number];
45
- getSwapMaxAmount(poolPairData: LinearPoolPairData, side: SwapSide): bigint;
46
- }
47
- export {};
@@ -1,324 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.LinearPool = exports.PairTypes = void 0;
30
- const abi_1 = require("@ethersproject/abi");
31
- const bignumber_1 = require("@ethersproject/bignumber");
32
- const utils_1 = require("./utils");
33
- const LinearMath = __importStar(require("./LinearMath"));
34
- const balancer_v2_pool_1 = require("./balancer-v2-pool");
35
- const linearPoolAbi_json_1 = __importDefault(require("../../abi/balancer-v2/linearPoolAbi.json"));
36
- const lodash_1 = require("lodash");
37
- var PairTypes;
38
- (function (PairTypes) {
39
- PairTypes[PairTypes["BptToMainToken"] = 0] = "BptToMainToken";
40
- PairTypes[PairTypes["MainTokenToBpt"] = 1] = "MainTokenToBpt";
41
- PairTypes[PairTypes["MainTokenToWrappedToken"] = 2] = "MainTokenToWrappedToken";
42
- PairTypes[PairTypes["WrappedTokenToMainToken"] = 3] = "WrappedTokenToMainToken";
43
- PairTypes[PairTypes["BptToWrappedToken"] = 4] = "BptToWrappedToken";
44
- PairTypes[PairTypes["WrappedTokenToBpt"] = 5] = "WrappedTokenToBpt";
45
- })(PairTypes = exports.PairTypes || (exports.PairTypes = {}));
46
- /*
47
- Linear (Boosted) Pools are designed to facilitate trades between stablecoins while simultaneously forwarding much of the pool's
48
- liquidity to external protocols, such as Aave.
49
- One of the key features that makes trades through Boosted Pools so simple is the use of Phantom BPT. Normally when a Liquidity
50
- Provider joins/exits a pool, the pool mints/burns pool tokens as needed. This is gas intensive and requires users to execute a join or exit.
51
- In pools that use Phantom BPT, however, all pool tokens are minted at the time of pool creation and are held by the pool itself.
52
- With Phantom BPT, Liquidity Providers use a swap (or more likely a batchSwap) to trade to or from a pool token to join or exit, respectively.
53
- */
54
- class LinearPool extends balancer_v2_pool_1.BasePool {
55
- constructor(vaultAddress, vaultInterface) {
56
- super();
57
- // This is the maximum token amount the Vault can hold. In regular operation, the total BPT supply remains constant
58
- // and equal to _INITIAL_BPT_SUPPLY, but most of it remains in the Pool, waiting to be exchanged for tokens. The
59
- // actual amount of BPT in circulation is the total supply minus the amount held by the Pool, and is known as the
60
- // 'virtual supply'.
61
- this.MAX_TOKEN_BALANCE = bignumber_1.BigNumber.from('2').pow('112').sub('1');
62
- this.vaultAddress = vaultAddress;
63
- this.vaultInterface = vaultInterface;
64
- this.poolInterface = new abi_1.Interface(linearPoolAbi_json_1.default);
65
- }
66
- /*
67
- scaling factors should include rate:
68
- The wrapped token's scaling factor is not constant, but increases over time as the wrapped token increases in value.
69
- i.e.
70
- scalingFactors: pool.tokens.map(({ decimals, priceRate }) =>
71
- MathSol.mulDownFixed(getTokenScalingFactor(decimals), priceRate)
72
- )
73
- */
74
- onSell(amounts, poolPairData) {
75
- return this._swapGivenIn(amounts, poolPairData.tokens, poolPairData.balances, poolPairData.indexIn, poolPairData.indexOut, poolPairData.bptIndex, poolPairData.wrappedIndex, poolPairData.mainIndex, poolPairData.scalingFactors, poolPairData.swapFee, poolPairData.lowerTarget, poolPairData.upperTarget);
76
- }
77
- _swapGivenIn(tokenAmountsIn, tokens, balances, indexIn, indexOut, bptIndex, wrappedIndex, mainIndex, scalingFactors, swapFeePercentage, lowerTarget, upperTarget) {
78
- /*
79
- Linear pools allow trading between:
80
- wrappedToken <> mainToken
81
- wrappedToken <> BPT
82
- mainToken <> BPT
83
- */
84
- let pairType;
85
- if ((0, utils_1.isSameAddress)(tokens[indexIn], tokens[bptIndex])) {
86
- if ((0, utils_1.isSameAddress)(tokens[indexOut], tokens[wrappedIndex]))
87
- pairType = PairTypes.BptToWrappedToken;
88
- else
89
- pairType = PairTypes.BptToMainToken;
90
- }
91
- else if ((0, utils_1.isSameAddress)(tokens[indexOut], tokens[bptIndex])) {
92
- if ((0, utils_1.isSameAddress)(tokens[indexIn], tokens[wrappedIndex]))
93
- pairType = PairTypes.WrappedTokenToBpt;
94
- else
95
- pairType = PairTypes.MainTokenToBpt;
96
- }
97
- else {
98
- if ((0, utils_1.isSameAddress)(tokens[indexIn], tokens[wrappedIndex]))
99
- pairType = PairTypes.WrappedTokenToMainToken;
100
- else
101
- pairType = PairTypes.MainTokenToWrappedToken;
102
- }
103
- const balancesUpscaled = this._upscaleArray(balances, scalingFactors);
104
- const tokenAmountsInScaled = tokenAmountsIn.map(a => this._upscale(a, scalingFactors[indexIn]));
105
- // VirtualBPTSupply must be used for the maths
106
- const virtualBptSupply = this.MAX_TOKEN_BALANCE.sub(balances[bptIndex]).toBigInt();
107
- const amountsOut = this._onSwapGivenIn(tokenAmountsInScaled, balancesUpscaled[mainIndex], balancesUpscaled[wrappedIndex], swapFeePercentage, lowerTarget, upperTarget, virtualBptSupply, pairType);
108
- // amountOut tokens are exiting the Pool, so we round down.
109
- return amountsOut.map(a => this._downscaleDown(a, scalingFactors[indexOut]));
110
- }
111
- /*
112
- Called when a swap with the Pool occurs, where the amount of tokens entering the Pool is known.
113
- All amounts are upscaled.
114
- Swap fee is NOT already deducted.
115
- The return value is also considered upscaled, and should be downscaled (rounding down)
116
- */
117
- _onSwapGivenIn(tokenAmountsIn, mainBalance, wrappedBalance, fee, lowerTarget, upperTarget, virtualBptSupply, pairType) {
118
- const amountsOut = [];
119
- switch (pairType) {
120
- case PairTypes.BptToMainToken:
121
- tokenAmountsIn.forEach(amountIn => {
122
- let amt;
123
- try {
124
- amt = LinearMath._calcMainOutPerBptIn(amountIn, mainBalance, wrappedBalance, virtualBptSupply, {
125
- fee: fee,
126
- lowerTarget: lowerTarget,
127
- upperTarget: upperTarget,
128
- });
129
- }
130
- catch (err) {
131
- amt = 0n;
132
- }
133
- amountsOut.push(amt);
134
- });
135
- break;
136
- case PairTypes.MainTokenToBpt:
137
- tokenAmountsIn.forEach(amountIn => {
138
- let amt;
139
- try {
140
- amt = LinearMath._calcBptOutPerMainIn(amountIn, mainBalance, wrappedBalance, virtualBptSupply, {
141
- fee: fee,
142
- lowerTarget: lowerTarget,
143
- upperTarget: upperTarget,
144
- });
145
- }
146
- catch (err) {
147
- amt = 0n;
148
- }
149
- amountsOut.push(amt);
150
- });
151
- break;
152
- case PairTypes.MainTokenToWrappedToken:
153
- tokenAmountsIn.forEach(amountIn => {
154
- let amt;
155
- try {
156
- amt = LinearMath._calcWrappedOutPerMainIn(amountIn, mainBalance, {
157
- fee: fee,
158
- lowerTarget: lowerTarget,
159
- upperTarget: upperTarget,
160
- });
161
- }
162
- catch (err) {
163
- amt = 0n;
164
- }
165
- amountsOut.push(amt);
166
- });
167
- break;
168
- case PairTypes.WrappedTokenToMainToken:
169
- tokenAmountsIn.forEach(amountIn => {
170
- let amt;
171
- try {
172
- amt = LinearMath._calcMainOutPerWrappedIn(amountIn, mainBalance, {
173
- fee: fee,
174
- lowerTarget: lowerTarget,
175
- upperTarget: upperTarget,
176
- });
177
- }
178
- catch (err) {
179
- amt = 0n;
180
- }
181
- amountsOut.push(amt);
182
- });
183
- break;
184
- case PairTypes.BptToWrappedToken:
185
- tokenAmountsIn.forEach(amountIn => {
186
- let amt;
187
- try {
188
- amt = LinearMath._calcWrappedOutPerBptIn(amountIn, mainBalance, wrappedBalance, virtualBptSupply, {
189
- fee: fee,
190
- lowerTarget: lowerTarget,
191
- upperTarget: upperTarget,
192
- });
193
- }
194
- catch (err) {
195
- amt = 0n;
196
- }
197
- amountsOut.push(amt);
198
- });
199
- break;
200
- case PairTypes.WrappedTokenToBpt:
201
- tokenAmountsIn.forEach(amountIn => {
202
- let amt;
203
- try {
204
- amt = LinearMath._calcBptOutPerWrappedIn(amountIn, mainBalance, wrappedBalance, virtualBptSupply, {
205
- fee: fee,
206
- lowerTarget: lowerTarget,
207
- upperTarget: upperTarget,
208
- });
209
- }
210
- catch (err) {
211
- amt = 0n;
212
- }
213
- amountsOut.push(amt);
214
- });
215
- break;
216
- default:
217
- amountsOut.push(0n);
218
- }
219
- return amountsOut;
220
- }
221
- /*
222
- Helper function to parse pool data into params for onSell function.
223
- */
224
- parsePoolPairData(pool, poolState, tokenIn, tokenOut) {
225
- let indexIn = 0, indexOut = 0, bptIndex = 0;
226
- const balances = [];
227
- const scalingFactors = [];
228
- const tokens = poolState.orderedTokens.map((tokenAddress, i) => {
229
- const t = pool.tokensMap[tokenAddress.toLowerCase()];
230
- if (t.address.toLowerCase() === tokenIn.toLowerCase())
231
- indexIn = i;
232
- if (t.address.toLowerCase() === tokenOut.toLowerCase())
233
- indexOut = i;
234
- if (t.address.toLowerCase() === pool.address.toLowerCase())
235
- bptIndex = i;
236
- balances.push(poolState.tokens[t.address.toLowerCase()].balance);
237
- scalingFactors.push(poolState.tokens[t.address.toLowerCase()].scalingFactor || 0n);
238
- return t.address;
239
- });
240
- const poolPairData = {
241
- tokens,
242
- balances,
243
- indexIn,
244
- indexOut,
245
- scalingFactors,
246
- bptIndex,
247
- swapFee: poolState.swapFee,
248
- amp: poolState.amp || 0n,
249
- wrappedIndex: poolState.wrappedIndex || 0,
250
- mainIndex: poolState.mainIndex || 0,
251
- lowerTarget: poolState.lowerTarget || 0n,
252
- upperTarget: poolState.upperTarget || 0n,
253
- };
254
- return poolPairData;
255
- }
256
- /*
257
- Helper function to construct onchain multicall data for Linear Pool.
258
- */
259
- getOnChainCalls(pool) {
260
- const poolCallData = [
261
- {
262
- target: this.vaultAddress,
263
- callData: this.vaultInterface.encodeFunctionData('getPoolTokens', [
264
- pool.id,
265
- ]),
266
- },
267
- {
268
- target: pool.address,
269
- callData: this.poolInterface.encodeFunctionData('getSwapFeePercentage'),
270
- },
271
- ];
272
- poolCallData.push({
273
- target: pool.address,
274
- callData: this.poolInterface.encodeFunctionData('getScalingFactors'),
275
- });
276
- // returns lowerTarget, upperTarget
277
- poolCallData.push({
278
- target: pool.address,
279
- callData: this.poolInterface.encodeFunctionData('getTargets'),
280
- });
281
- return poolCallData;
282
- }
283
- /*
284
- Helper function to decodes multicall data for a Linear Pool.
285
- data must contain returnData
286
- startIndex is where to start in returnData. Allows this decode function to be called along with other pool types.
287
- */
288
- decodeOnChainCalls(pool, data, startIndex) {
289
- const pools = {};
290
- const poolTokens = (0, utils_1.decodeThrowError)(this.vaultInterface, 'getPoolTokens', data[startIndex++], pool.address);
291
- const swapFee = (0, utils_1.decodeThrowError)(this.poolInterface, 'getSwapFeePercentage', data[startIndex++], pool.address)[0];
292
- const scalingFactors = (0, utils_1.decodeThrowError)(this.poolInterface, 'getScalingFactors', data[startIndex++], pool.address)[0];
293
- const [lowerTarget, upperTarget] = (0, utils_1.decodeThrowError)(this.poolInterface, 'getTargets', data[startIndex++], pool.address);
294
- const bptIndex = pool.tokens.findIndex(t => t.address.toLowerCase() === pool.address.toLowerCase());
295
- const tokens = poolTokens.tokens.map((address, idx) => ({
296
- address: address.toLowerCase(),
297
- balance: BigInt(poolTokens.balances[idx].toString()),
298
- scalingFactor: BigInt(scalingFactors[idx].toString()),
299
- }));
300
- const poolState = {
301
- swapFee: BigInt(swapFee.toString()),
302
- mainIndex: Number(pool.mainIndex),
303
- wrappedIndex: Number(pool.wrappedIndex),
304
- bptIndex,
305
- lowerTarget: BigInt(lowerTarget.toString()),
306
- upperTarget: BigInt(upperTarget.toString()),
307
- tokens: (0, lodash_1.keyBy)(tokens, 'address'),
308
- orderedTokens: poolTokens.tokens,
309
- };
310
- pools[pool.address] = poolState;
311
- return [pools, startIndex];
312
- }
313
- /*
314
- Swapping to BPT allows for a very large amount as pre-minted.
315
- Swapping to main token - you can use 99% of the balance of the main token (Dani)
316
- */
317
- getSwapMaxAmount(poolPairData, side) {
318
- return ((this._upscale(poolPairData.balances[poolPairData.indexOut], poolPairData.scalingFactors[poolPairData.indexOut]) *
319
- 99n) /
320
- 100n);
321
- }
322
- }
323
- exports.LinearPool = LinearPool;
324
- //# sourceMappingURL=LinearPool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinearPool.js","sourceRoot":"","sources":["../../../src/dex/balancer-v2/LinearPool.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import { Interface } from '@ethersproject/abi';
2
- import { BigNumber } from '@ethersproject/bignumber';
3
- import { BasePool } from './balancer-v2-pool';
4
- import { SubgraphPoolBase, PoolState, callData } from './types';
5
- import { SwapSide } from '../../constants';
6
- declare enum PairTypes {
7
- BptToToken = 0,
8
- TokenToBpt = 1,
9
- TokenToToken = 2
10
- }
11
- declare type PhantomStablePoolPairData = {
12
- tokens: string[];
13
- balances: bigint[];
14
- indexIn: number;
15
- indexOut: number;
16
- scalingFactors: bigint[];
17
- bptIndex: number;
18
- swapFee: bigint;
19
- amp: bigint;
20
- actualSupply: bigint | undefined;
21
- };
22
- export declare class PhantomStablePool extends BasePool {
23
- private isComposable;
24
- MAX_TOKEN_BALANCE: BigNumber;
25
- vaultAddress: string;
26
- vaultInterface: Interface;
27
- poolInterface: Interface;
28
- constructor(vaultAddress: string, vaultInterface: Interface, isComposable?: boolean);
29
- onSell(amounts: bigint[], poolPairData: PhantomStablePoolPairData): bigint[];
30
- removeBPT(balances: bigint[], tokenIndexIn: number, tokenIndexOut: number, bptIndex: number): {
31
- balances: bigint[];
32
- indexIn: number;
33
- indexOut: number;
34
- };
35
- _swapGivenIn(tokenAmountsIn: bigint[], tokens: string[], balances: bigint[], indexIn: number, indexOut: number, bptIndex: number, scalingFactors: bigint[], swapFeePercentage: bigint, amplificationParameter: bigint, actualSupply: bigint | undefined): bigint[];
36
- _onSwapGivenIn(tokenAmountsIn: bigint[], balances: bigint[], indexIn: number, indexOut: number, _amplificationParameter: bigint, virtualBptSupply: bigint, pairType: PairTypes): bigint[];
37
- parsePoolPairData(pool: SubgraphPoolBase, poolState: PoolState, tokenIn: string, tokenOut: string): PhantomStablePoolPairData;
38
- getOnChainCalls(pool: SubgraphPoolBase): callData[];
39
- decodeOnChainCalls(pool: SubgraphPoolBase, data: {
40
- success: boolean;
41
- returnData: any;
42
- }[], startIndex: number): [{
43
- [address: string]: PoolState;
44
- }, number];
45
- getSwapMaxAmount(poolPairData: PhantomStablePoolPairData, side: SwapSide): bigint;
46
- }
47
- export {};