@paraswap/dex-lib 3.5.6-maverick-v2-7 → 3.6.0

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 (111) hide show
  1. package/.vscode/launch.json +53 -0
  2. package/.vscode/settings.json +2 -0
  3. package/.vscode/tasks.json +15 -0
  4. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  5. package/build/abi/wombat/pool.json +1289 -0
  6. package/build/constants.d.ts +2 -0
  7. package/build/constants.js +3 -1
  8. package/build/constants.js.map +1 -1
  9. package/build/dex/aave-v1/aave-v1.d.ts +2 -1
  10. package/build/dex/aave-v1/aave-v1.js +23 -0
  11. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  12. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  13. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  14. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  15. package/build/dex/compound.js +1 -1
  16. package/build/dex/compound.js.map +1 -1
  17. package/build/dex/index.js +0 -2
  18. package/build/dex/index.js.map +1 -1
  19. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  20. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  21. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  22. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  23. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  24. package/build/dex/maverick-v2/config.d.ts +2 -1
  25. package/build/dex/maverick-v2/config.js +6 -2
  26. package/build/dex/maverick-v2/config.js.map +1 -1
  27. package/build/dex/maverick-v2/maverick-v2.d.ts +3 -2
  28. package/build/dex/maverick-v2/maverick-v2.js +17 -6
  29. package/build/dex/maverick-v2/maverick-v2.js.map +1 -1
  30. package/build/dex/platypus/platypus.d.ts +2 -1
  31. package/build/dex/platypus/platypus.js +45 -0
  32. package/build/dex/platypus/platypus.js.map +1 -1
  33. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  34. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  35. package/build/dex/stable-pool.js +1 -8
  36. package/build/dex/stable-pool.js.map +1 -1
  37. package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
  38. package/build/dex/swaap-v1/swaap-v1.js +14 -0
  39. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  40. package/build/dex/uniswap-v2/uniswap-v2.d.ts +2 -2
  41. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  42. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  43. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  44. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  45. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  46. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  47. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  48. package/build/dex/uniswap-v3/uniswap-v3.d.ts +2 -2
  49. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  50. package/build/dex/zerox/index.d.ts +1 -1
  51. package/build/dex/zerox/index.js.map +1 -1
  52. package/build/executor/Executor03BytecodeBuilder.js +1 -12
  53. package/build/executor/Executor03BytecodeBuilder.js.map +1 -1
  54. package/build/generic-swap-transaction-builder.d.ts +5 -3
  55. package/build/generic-swap-transaction-builder.js +22 -7
  56. package/build/generic-swap-transaction-builder.js.map +1 -1
  57. package/package.json +2 -2
  58. package/src/constants.ts +2 -0
  59. package/src/dex/index.ts +0 -2
  60. package/src/dex/maker-psm/scripts/gem.abi.json +136 -0
  61. package/src/dex/maker-psm/scripts/validate-state.ts +221 -0
  62. package/src/dex/maker-psm/scripts/vat.abi.json +243 -0
  63. package/src/dex/uniswap-v2/uniswap-v2.ts +2 -2
  64. package/src/dex/uniswap-v3/uniswap-v3.ts +2 -2
  65. package/src/dex/zerox/index.ts +1 -1
  66. package/src/executor/Executor03BytecodeBuilder.ts +1 -15
  67. package/src/generic-swap-transaction-builder.ts +40 -0
  68. package/tests/constants-e2e.ts +2 -2
  69. package/build/dex/etherfi/etherfi.d.ts +0 -26
  70. package/build/dex/etherfi/etherfi.js +0 -96
  71. package/build/dex/etherfi/etherfi.js.map +0 -1
  72. package/build/dex/sdai/config.d.ts +0 -11
  73. package/build/dex/sdai/config.js +0 -21
  74. package/build/dex/sdai/config.js.map +0 -1
  75. package/build/dex/sdai/constants.d.ts +0 -2
  76. package/build/dex/sdai/constants.js +0 -6
  77. package/build/dex/sdai/constants.js.map +0 -1
  78. package/build/dex/sdai/scripts/validate-state.js +0 -102
  79. package/build/dex/sdai/scripts/validate-state.js.map +0 -1
  80. package/build/dex/sdai/sdai-pool.d.ts +0 -16
  81. package/build/dex/sdai/sdai-pool.js +0 -85
  82. package/build/dex/sdai/sdai-pool.js.map +0 -1
  83. package/build/dex/sdai/sdai.d.ts +0 -51
  84. package/build/dex/sdai/sdai.js +0 -172
  85. package/build/dex/sdai/sdai.js.map +0 -1
  86. package/build/dex/sdai/types.d.ts +0 -21
  87. package/build/dex/sdai/types.js +0 -11
  88. package/build/dex/sdai/types.js.map +0 -1
  89. package/build/dex/sdai/utils.d.ts +0 -4
  90. package/build/dex/sdai/utils.js +0 -39
  91. package/build/dex/sdai/utils.js.map +0 -1
  92. package/src/abi/maverick-v2/MaverickV2Pool.json +0 -1234
  93. package/src/abi/maverick-v2/MaverickV2PoolLens.json +0 -1232
  94. package/src/abi/maverick-v2/MaverickV2Quoter.json +0 -278
  95. package/src/dex/maverick-v2/config.ts +0 -17
  96. package/src/dex/maverick-v2/maverick-math/maverick-basic-math.ts +0 -152
  97. package/src/dex/maverick-v2/maverick-math/maverick-bin-math.ts +0 -288
  98. package/src/dex/maverick-v2/maverick-math/maverick-delta-math.ts +0 -32
  99. package/src/dex/maverick-v2/maverick-math/maverick-math.ts +0 -30
  100. package/src/dex/maverick-v2/maverick-math/maverick-pool-lib.ts +0 -42
  101. package/src/dex/maverick-v2/maverick-math/maverick-pool-math.ts +0 -709
  102. package/src/dex/maverick-v2/maverick-math/maverick-swap-math.ts +0 -199
  103. package/src/dex/maverick-v2/maverick-math/maverick-tick-math.ts +0 -171
  104. package/src/dex/maverick-v2/maverick-math/maverick-twa-math.ts +0 -54
  105. package/src/dex/maverick-v2/maverick-v2-e2e.test.ts +0 -176
  106. package/src/dex/maverick-v2/maverick-v2-events.test.ts +0 -112
  107. package/src/dex/maverick-v2/maverick-v2-integration.test.ts +0 -269
  108. package/src/dex/maverick-v2/maverick-v2-pool.ts +0 -276
  109. package/src/dex/maverick-v2/maverick-v2.ts +0 -424
  110. package/src/dex/maverick-v2/types.ts +0 -152
  111. /package/build/dex/{sdai/scripts/validate-state.d.ts → solidly-v3/scripts/check-event-pool-event.d.ts} +0 -0
@@ -1,288 +0,0 @@
1
- import { BI_POWS } from '../../../bigint-constants';
2
- import { AddLiquidityInfo, Bin, BinDelta, Tick } from '../types';
3
- import { MaverickBasicMath } from './maverick-basic-math';
4
- import { MaverickPoolLib } from './maverick-pool-lib';
5
- import { MaverickTickMath } from './maverick-tick-math';
6
-
7
- const MINIMUM_LIQUIDITY = BI_POWS[8];
8
-
9
- export class MaverickBinMath {
10
- static lpBalancesFromDeltaReserve(
11
- self: Bin,
12
- tick: Tick,
13
- deltaA: bigint,
14
- deltaB: bigint,
15
- ): bigint {
16
- if (tick.reserveA >= tick.reserveB) {
17
- let reserveA = MaverickBasicMath.mulDivUp(
18
- tick.reserveA,
19
- self.tickBalance,
20
- tick.totalSupply,
21
- );
22
- return MaverickBasicMath.mulDivDown(
23
- deltaA,
24
- MaverickBasicMath.max(1n, self.totalSupply),
25
- reserveA,
26
- );
27
- } else {
28
- let reserveB = MaverickBasicMath.mulDivUp(
29
- tick.reserveB,
30
- self.tickBalance,
31
- tick.totalSupply,
32
- );
33
- return MaverickBasicMath.mulDivDown(
34
- deltaB,
35
- MaverickBasicMath.max(1n, self.totalSupply),
36
- reserveB,
37
- );
38
- }
39
- }
40
-
41
- static addLiquidity(
42
- self: Bin,
43
- tick: Tick,
44
- deltaLpBalance: bigint,
45
- addLiquidityInfo: AddLiquidityInfo,
46
- ) {
47
- let deltaTickBalance = this.deltaTickBalanceFromDeltaLpBalance(
48
- self.tickBalance,
49
- self.totalSupply,
50
- tick,
51
- deltaLpBalance,
52
- addLiquidityInfo,
53
- );
54
-
55
- this.updateBinState(
56
- self,
57
- tick,
58
- addLiquidityInfo.deltaA,
59
- addLiquidityInfo.deltaB,
60
- deltaLpBalance,
61
- deltaTickBalance,
62
- );
63
- }
64
-
65
- static setRequiredDeltaReservesForEmptyTick(
66
- deltaLpBalance: bigint,
67
- addLiquidityInfo: AddLiquidityInfo,
68
- ) {
69
- let [sqrtLowerTickPrice, sqrtUpperTickPrice] =
70
- MaverickTickMath.tickSqrtPrices(
71
- addLiquidityInfo.tickSpacing,
72
- addLiquidityInfo.tick,
73
- );
74
- addLiquidityInfo.deltaA = addLiquidityInfo.tickLtActive
75
- ? MaverickBasicMath.mulCeil(deltaLpBalance, sqrtLowerTickPrice)
76
- : 0n;
77
- addLiquidityInfo.deltaB = addLiquidityInfo.tickLtActive
78
- ? 0n
79
- : MaverickBasicMath.divCeil(deltaLpBalance, sqrtUpperTickPrice);
80
- }
81
-
82
- static deltaTickBalanceFromDeltaLpBalance(
83
- binTickBalance: bigint,
84
- binTotalSupply: bigint,
85
- tick: Tick,
86
- deltaLpBalance: bigint,
87
- addLiquidityInfo: AddLiquidityInfo,
88
- ): bigint {
89
- let numerator = MaverickBasicMath.max(1n, binTickBalance) * deltaLpBalance;
90
- let denominator =
91
- MaverickBasicMath.max(1n, tick.totalSupply) *
92
- MaverickBasicMath.max(1n, binTotalSupply);
93
- if (tick.reserveA != 0n || tick.reserveB != 0n) {
94
- addLiquidityInfo.deltaA = MaverickBasicMath.mulDivCeil(
95
- tick.reserveA,
96
- numerator,
97
- denominator,
98
- );
99
- addLiquidityInfo.deltaB = MaverickBasicMath.mulDivCeil(
100
- tick.reserveB,
101
- numerator,
102
- denominator,
103
- );
104
- } else {
105
- this.setRequiredDeltaReservesForEmptyTick(
106
- deltaLpBalance,
107
- addLiquidityInfo,
108
- );
109
- }
110
-
111
- return tick.totalSupply == 0n
112
- ? deltaLpBalance
113
- : MaverickBasicMath.mulDivDown(
114
- deltaLpBalance,
115
- MaverickBasicMath.max(1n, binTickBalance),
116
- binTotalSupply,
117
- );
118
- }
119
-
120
- static addLiquidityByReserves(
121
- self: Bin,
122
- tick: Tick,
123
- deltaA: bigint,
124
- deltaB: bigint,
125
- deltaLpBalance: bigint,
126
- ) {
127
- let deltaTickBalance = MaverickBasicMath.mulDivDown(
128
- deltaLpBalance,
129
- MaverickBasicMath.max(1n, self.tickBalance),
130
- self.totalSupply,
131
- );
132
-
133
- this.updateBinState(
134
- self,
135
- tick,
136
- deltaA,
137
- deltaB,
138
- deltaLpBalance,
139
- deltaTickBalance,
140
- );
141
- }
142
-
143
- static updateBinState(
144
- self: Bin,
145
- tick: Tick,
146
- deltaA: bigint,
147
- deltaB: bigint,
148
- deltaLpBalance: bigint,
149
- deltaTickBalance: bigint,
150
- ) {
151
- let totalSupply = self.totalSupply;
152
- if (totalSupply == 0n) {
153
- if (deltaLpBalance < MINIMUM_LIQUIDITY) {
154
- throw 'insufficient liquidity';
155
- }
156
- totalSupply = MINIMUM_LIQUIDITY;
157
- }
158
-
159
- self.totalSupply = totalSupply + deltaLpBalance;
160
- tick.totalSupply = tick.totalSupply + deltaTickBalance;
161
-
162
- self.tickBalance = self.tickBalance + deltaTickBalance;
163
-
164
- tick.reserveA = tick.reserveA + deltaA;
165
- tick.reserveB = tick.reserveB + deltaB;
166
- }
167
-
168
- static removeLiquidity(
169
- self: Bin,
170
- ticks: { [id: string]: Tick },
171
- bins: { [id: string]: Bin },
172
- deltaLpAmount: bigint,
173
- ): [bigint, bigint] {
174
- let activeBin = self;
175
-
176
- let activeBinDeltaLpBalance = deltaLpAmount;
177
- if (self.mergeId != 0n) {
178
- activeBin = bins[self.mergeId.toString()];
179
-
180
- if (activeBin.mergeId != 0n) {
181
- throw 'migrate first';
182
- }
183
-
184
- let tempTotalSupply = self.totalSupply;
185
- self.totalSupply = MaverickBasicMath.clip(
186
- self.totalSupply,
187
- deltaLpAmount,
188
- );
189
-
190
- activeBinDeltaLpBalance = MaverickBasicMath.min(
191
- self.mergeBinBalance,
192
- MaverickBasicMath.mulDivDown(
193
- activeBinDeltaLpBalance,
194
- self.mergeBinBalance,
195
- tempTotalSupply,
196
- ),
197
- );
198
-
199
- self.mergeBinBalance -= activeBinDeltaLpBalance;
200
- }
201
-
202
- let binDelta: BinDelta = {
203
- deltaA: 0n,
204
- deltaB: 0n,
205
- };
206
-
207
- let tick: Tick = ticks[activeBin.tick.toString()];
208
-
209
- activeBinDeltaLpBalance = MaverickBasicMath.min(
210
- activeBinDeltaLpBalance,
211
- activeBin.totalSupply,
212
- );
213
-
214
- let deltaTickBalance = MaverickBasicMath.mulDivDown(
215
- activeBinDeltaLpBalance,
216
- activeBin.tickBalance,
217
- activeBin.totalSupply,
218
- );
219
-
220
- deltaTickBalance = MaverickBasicMath.min(
221
- deltaTickBalance,
222
- tick.totalSupply,
223
- );
224
-
225
- [binDelta.deltaA, binDelta.deltaB] = MaverickPoolLib.binReservesCalc(
226
- deltaTickBalance,
227
- tick.reserveA,
228
- tick.reserveB,
229
- tick.totalSupply,
230
- );
231
-
232
- tick.reserveA = MaverickBasicMath.clip(tick.reserveA, binDelta.deltaA);
233
- tick.reserveB = MaverickBasicMath.clip(tick.reserveB, binDelta.deltaB);
234
-
235
- activeBin.tickBalance = MaverickBasicMath.clip(
236
- activeBin.tickBalance,
237
- deltaTickBalance,
238
- );
239
- tick.totalSupply = MaverickBasicMath.clip(
240
- tick.totalSupply,
241
- deltaTickBalance,
242
- );
243
- activeBin.totalSupply = MaverickBasicMath.clip(
244
- activeBin.totalSupply,
245
- activeBinDeltaLpBalance,
246
- );
247
-
248
- return [binDelta.deltaA, binDelta.deltaB];
249
- }
250
-
251
- static migrateBinsUpStack(
252
- self: Bin,
253
- bins: { [id: string]: Bin },
254
- maxRecursion: bigint,
255
- ): void {
256
- if (self.mergeId == 0n) return;
257
-
258
- let nextBin = bins[self.mergeId.toString()];
259
-
260
- if (nextBin.mergeId == 0n) return;
261
-
262
- self.mergeId = nextBin.mergeId;
263
-
264
- let tempTotalSupply = nextBin.totalSupply;
265
- let tempMergeBinBalance = self.mergeBinBalance;
266
-
267
- nextBin.totalSupply = MaverickBasicMath.clip(
268
- nextBin.totalSupply,
269
- self.mergeBinBalance,
270
- );
271
-
272
- self.mergeBinBalance = MaverickBasicMath.mulDiv(
273
- tempMergeBinBalance,
274
- nextBin.mergeBinBalance,
275
- tempTotalSupply,
276
- );
277
-
278
- nextBin.mergeBinBalance = MaverickBasicMath.clip(
279
- nextBin.mergeBinBalance,
280
- self.mergeBinBalance,
281
- );
282
-
283
- maxRecursion -= 1n;
284
- if (maxRecursion != 0n) {
285
- return this.migrateBinsUpStack(self, bins, maxRecursion);
286
- }
287
- }
288
- }
@@ -1,32 +0,0 @@
1
- export type Delta = {
2
- deltaInBinInternal: bigint;
3
- deltaInErc: bigint;
4
- deltaOutErc: bigint;
5
- excess: bigint;
6
- tokenAIn: boolean;
7
- exactOutput: boolean;
8
- swappedToMaxPrice: boolean;
9
- skipCombine: boolean;
10
- tickLimit: bigint;
11
- sqrtLowerTickPrice: bigint;
12
- sqrtUpperTickPrice: bigint;
13
- sqrtPrice: bigint;
14
- fractionalPart: bigint;
15
- };
16
-
17
- export class MaverickDeltaMath {
18
- static pastMaxTick(self: Delta, activeTick: bigint) {
19
- self.swappedToMaxPrice = self.tokenAIn
20
- ? self.tickLimit < activeTick
21
- : self.tickLimit > activeTick;
22
- if (self.swappedToMaxPrice) {
23
- self.excess = 0n;
24
- self.skipCombine = true;
25
- }
26
- return self.swappedToMaxPrice;
27
- }
28
-
29
- static sqrtEdgePrice(self: Delta) {
30
- return self.tokenAIn ? self.sqrtUpperTickPrice : self.sqrtLowerTickPrice;
31
- }
32
- }
@@ -1,30 +0,0 @@
1
- export class MaverickMath {
2
- static ammScaleToTokenScale(
3
- amount: bigint,
4
- scaleFactor: bigint,
5
- ceil: boolean,
6
- ): bigint {
7
- if (scaleFactor == 1n || amount == 0n) {
8
- return amount;
9
- } else {
10
- if (!ceil) return amount / scaleFactor;
11
- return (amount - 1n) / scaleFactor + 1n;
12
- }
13
- }
14
-
15
- static tokenScaleToAmmScale(amount: bigint, scaleFactor: bigint): bigint {
16
- if (scaleFactor == 1n) {
17
- return amount;
18
- } else {
19
- return amount * scaleFactor;
20
- }
21
- }
22
-
23
- static scale(decimals: bigint): bigint {
24
- if (decimals == 18n) {
25
- return 1n;
26
- } else {
27
- return 10n ** (18n - decimals);
28
- }
29
- }
30
- }
@@ -1,42 +0,0 @@
1
- import { Bin, Tick } from '../types';
2
- import { MaverickBasicMath } from './maverick-basic-math';
3
-
4
- export class MaverickPoolLib {
5
- static binReserves(bin: Bin, tick: Tick): [bigint, bigint] {
6
- return this.binReservesCalc(
7
- bin.tickBalance,
8
- tick.reserveA,
9
- tick.reserveB,
10
- tick.totalSupply,
11
- );
12
- }
13
-
14
- static binReservesCalc(
15
- tickBalance: bigint,
16
- tickReserveA: bigint,
17
- tickReserveB: bigint,
18
- tickTotalSupply: bigint,
19
- ): [bigint, bigint] {
20
- let reserveA = 0n;
21
- let reserveB = 0n;
22
-
23
- if (tickTotalSupply != 0n) {
24
- reserveA = this.reserveValue(tickReserveA, tickBalance, tickTotalSupply);
25
- reserveB = this.reserveValue(tickReserveB, tickBalance, tickTotalSupply);
26
- }
27
- return [reserveA, reserveB];
28
- }
29
-
30
- static reserveValue(
31
- tickReserve: bigint,
32
- tickBalance: bigint,
33
- tickTotalSupply: bigint,
34
- ): bigint {
35
- let reserve = MaverickBasicMath.mulDivFloor(
36
- tickReserve,
37
- tickBalance,
38
- tickTotalSupply,
39
- );
40
- return MaverickBasicMath.min(tickReserve, reserve);
41
- }
42
- }