@exponent-labs/market-three-math 0.1.8 → 0.9.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.
- package/build/addLiquidity.d.ts +65 -4
- package/build/addLiquidity.js +757 -30
- package/build/addLiquidity.js.map +1 -1
- package/build/bisect.d.ts +11 -0
- package/build/bisect.js +21 -10
- package/build/bisect.js.map +1 -1
- package/build/index.d.ts +5 -4
- package/build/index.js +14 -7
- package/build/index.js.map +1 -1
- package/build/liquidityHistogram.d.ts +6 -1
- package/build/liquidityHistogram.js +55 -9
- package/build/liquidityHistogram.js.map +1 -1
- package/build/quote.d.ts +1 -1
- package/build/quote.js +68 -82
- package/build/quote.js.map +1 -1
- package/build/swap.js +35 -16
- package/build/swap.js.map +1 -1
- package/build/swapV2.d.ts +6 -1
- package/build/swapV2.js +394 -51
- package/build/swapV2.js.map +1 -1
- package/build/types.d.ts +51 -0
- package/build/utils.d.ts +8 -2
- package/build/utils.js +23 -5
- package/build/utils.js.map +1 -1
- package/build/utilsV2.d.ts +9 -0
- package/build/utilsV2.js +127 -5
- package/build/utilsV2.js.map +1 -1
- package/build/withdrawLiquidity.js +11 -5
- package/build/withdrawLiquidity.js.map +1 -1
- package/build/ytTrades.d.ts +7 -0
- package/build/ytTrades.js +163 -142
- package/build/ytTrades.js.map +1 -1
- package/package.json +2 -2
- package/src/addLiquidity.ts +1012 -38
- package/src/bisect.ts +22 -11
- package/src/index.ts +11 -5
- package/src/liquidityHistogram.ts +54 -9
- package/src/quote.ts +73 -95
- package/src/swap.ts +35 -19
- package/src/swapV2.ts +999 -0
- package/src/types.ts +55 -0
- package/src/utils.ts +24 -3
- package/src/utilsV2.ts +337 -0
- package/src/withdrawLiquidity.ts +12 -6
- package/src/ytTrades.ts +191 -172
- package/src/ytTradesLegacy.ts +419 -0
- package/build/swap-v2.d.ts +0 -20
- package/build/swap-v2.js +0 -261
- package/build/swap-v2.js.map +0 -1
- package/src/swapLegacy.ts +0 -272
package/build/quote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"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"}
|
package/build/swap.js
CHANGED
|
@@ -61,23 +61,23 @@ function simulateSwap(marketState, args) {
|
|
|
61
61
|
iterations++;
|
|
62
62
|
if (debug)
|
|
63
63
|
console.log(`\n--- Iteration ${iterations}, amountInLeft=${amountInLeft} ---`);
|
|
64
|
-
// Get right boundary of current interval
|
|
65
|
-
const rightBoundaryIndexOpt = (0, utils_1.
|
|
64
|
+
// Get right boundary of current interval (successor tick index)
|
|
65
|
+
const rightBoundaryIndexOpt = (0, utils_1.getSuccessorTickIdxByIdx)(ticks, currentLeftBoundaryIndex);
|
|
66
66
|
if (debug)
|
|
67
67
|
console.log(`rightBoundary=${rightBoundaryIndexOpt}`);
|
|
68
68
|
if (rightBoundaryIndexOpt === null) {
|
|
69
69
|
if (args.direction === types_1.SwapDirection.SyToPt) {
|
|
70
70
|
// Cross to create a new interval
|
|
71
|
-
const
|
|
72
|
-
if (
|
|
71
|
+
const predecessorIdx = (0, utils_1.getPredecessorTickIdxByIdx)(ticks, currentLeftBoundaryIndex);
|
|
72
|
+
if (predecessorIdx === null)
|
|
73
73
|
break;
|
|
74
74
|
// Update active liquidity by subtracting liquidity_net at boundary
|
|
75
|
-
const boundaryTick = (0, utils_1.
|
|
75
|
+
const boundaryTick = (0, utils_1.findTickByIndex)(ticks, currentLeftBoundaryIndex);
|
|
76
76
|
// When crossing downward (SyToPt), update state
|
|
77
|
-
currentPriceSpot = (0, utils_1.getImpliedRate)(
|
|
78
|
-
currentLeftBoundaryIndex =
|
|
77
|
+
currentPriceSpot = (0, utils_1.getImpliedRate)(boundaryTick?.apyBasePoints ?? 0); // Boundary we're crossing
|
|
78
|
+
currentLeftBoundaryIndex = predecessorIdx; // New left boundary
|
|
79
79
|
if (boundaryTick) {
|
|
80
|
-
activeLiquidityU64 = (0, utils_1.bigIntMax)(0n, activeLiquidityU64 - boundaryTick.
|
|
80
|
+
activeLiquidityU64 = (0, utils_1.bigIntMax)(0n, activeLiquidityU64 - boundaryTick.liquidityNet);
|
|
81
81
|
activeLiquidityF64 = Number(activeLiquidityU64);
|
|
82
82
|
}
|
|
83
83
|
continue;
|
|
@@ -132,7 +132,17 @@ function simulateSwap(marketState, args) {
|
|
|
132
132
|
const syOutGross = Math.floor(lTradeF64 * (cEffOld - cEffNew));
|
|
133
133
|
const syOutGrossClamped = Math.min(syOutGross, Number(principalSy));
|
|
134
134
|
if (syOutGrossClamped > 0) {
|
|
135
|
-
|
|
135
|
+
// For flash swaps, fee is based on YT value = (pt - sy × sy_exchange_rate) / sy_exchange_rate (in SY terms)
|
|
136
|
+
let totalFeeOut;
|
|
137
|
+
if (args.isCurrentFlashSwap) {
|
|
138
|
+
const syOutBase = syOutGrossClamped * args.syExchangeRate;
|
|
139
|
+
const ytValueBase = ptInSegment - syOutBase;
|
|
140
|
+
const ytValueSy = ytValueBase / args.syExchangeRate;
|
|
141
|
+
totalFeeOut = (0, utils_1.getFeeFromAmount)(Math.max(0, Math.floor(ytValueSy)), lpFeeRate);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
totalFeeOut = (0, utils_1.getFeeFromAmount)(syOutGrossClamped, lpFeeRate);
|
|
145
|
+
}
|
|
136
146
|
const protocolFeeOut = Math.floor((totalFeeOut * protocolFeeBps) / BASE_POINTS);
|
|
137
147
|
const lpFeeOut = totalFeeOut - protocolFeeOut;
|
|
138
148
|
const syOutNet = syOutGrossClamped - totalFeeOut;
|
|
@@ -165,7 +175,7 @@ function simulateSwap(marketState, args) {
|
|
|
165
175
|
}
|
|
166
176
|
if (deltaCToLeftBoundary <= eps) {
|
|
167
177
|
// Cross boundary to the left
|
|
168
|
-
const predecessor = (0, utils_1.
|
|
178
|
+
const predecessor = (0, utils_1.getPredecessorTickIdxByIdx)(ticks, currentLeftBoundaryIndex);
|
|
169
179
|
if (predecessor === null)
|
|
170
180
|
break;
|
|
171
181
|
// Update active liquidity by subtracting liquidity_net at boundary
|
|
@@ -174,7 +184,7 @@ function simulateSwap(marketState, args) {
|
|
|
174
184
|
activeLiquidityU64 = (0, utils_1.bigIntMax)(0n, activeLiquidityU64 - boundaryTick.liquidityNet);
|
|
175
185
|
activeLiquidityF64 = Number(activeLiquidityU64);
|
|
176
186
|
}
|
|
177
|
-
currentPriceSpot = (0, utils_1.getImpliedRate)(
|
|
187
|
+
currentPriceSpot = (0, utils_1.getImpliedRate)(boundaryTick?.apyBasePoints ?? 0);
|
|
178
188
|
currentLeftBoundaryIndex = predecessor;
|
|
179
189
|
continue;
|
|
180
190
|
}
|
|
@@ -195,7 +205,7 @@ function simulateSwap(marketState, args) {
|
|
|
195
205
|
}
|
|
196
206
|
if (ptOutGrossU64 === 0n) {
|
|
197
207
|
// Nothing to pay out; try to cross
|
|
198
|
-
const predecessor = (0, utils_1.
|
|
208
|
+
const predecessor = (0, utils_1.getPredecessorTickIdxByIdx)(ticks, currentLeftBoundaryIndex);
|
|
199
209
|
if (predecessor === null)
|
|
200
210
|
break;
|
|
201
211
|
// Update active liquidity
|
|
@@ -204,12 +214,21 @@ function simulateSwap(marketState, args) {
|
|
|
204
214
|
activeLiquidityU64 = (0, utils_1.bigIntMax)(0n, activeLiquidityU64 - boundaryTick.liquidityNet);
|
|
205
215
|
activeLiquidityF64 = Number(activeLiquidityU64);
|
|
206
216
|
}
|
|
207
|
-
currentPriceSpot = (0, utils_1.getImpliedRate)(
|
|
217
|
+
currentPriceSpot = (0, utils_1.getImpliedRate)(boundaryTick?.apyBasePoints ?? 0);
|
|
208
218
|
currentLeftBoundaryIndex = predecessor;
|
|
209
219
|
continue;
|
|
210
220
|
}
|
|
211
221
|
// Fees in token_out (PT)
|
|
212
|
-
|
|
222
|
+
// For flash swaps, fee is based on YT value = pt - sy × sy_exchange_rate
|
|
223
|
+
let totalFeeOut;
|
|
224
|
+
if (args.isCurrentFlashSwap) {
|
|
225
|
+
const syInBase = Number(syInSegmentU64) * args.syExchangeRate;
|
|
226
|
+
const ytValue = Number(ptOutGrossU64) - syInBase;
|
|
227
|
+
totalFeeOut = (0, utils_1.getFeeFromAmount)(Math.max(0, Math.floor(ytValue)), lpFeeRate);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
totalFeeOut = (0, utils_1.getFeeFromAmount)(Number(ptOutGrossU64), lpFeeRate);
|
|
231
|
+
}
|
|
213
232
|
const protocolFeeOut = Math.floor((totalFeeOut * protocolFeeBps) / BASE_POINTS);
|
|
214
233
|
const lpFeeOut = totalFeeOut - protocolFeeOut;
|
|
215
234
|
const ptOutNet = Number(ptOutGrossU64) - totalFeeOut;
|
|
@@ -222,7 +241,7 @@ function simulateSwap(marketState, args) {
|
|
|
222
241
|
currentPriceSpot = spotPriceNew;
|
|
223
242
|
// If we hit boundary, cross
|
|
224
243
|
if (Math.abs(currentPriceSpot - anchorULeft) <= eps && amountInLeft > 0) {
|
|
225
|
-
const predecessor = (0, utils_1.
|
|
244
|
+
const predecessor = (0, utils_1.getPredecessorTickIdxByIdx)(ticks, currentLeftBoundaryIndex);
|
|
226
245
|
if (predecessor === null)
|
|
227
246
|
break;
|
|
228
247
|
// Update active liquidity
|
|
@@ -231,7 +250,7 @@ function simulateSwap(marketState, args) {
|
|
|
231
250
|
activeLiquidityU64 = (0, utils_1.bigIntMax)(0n, activeLiquidityU64 - boundaryTick.liquidityNet);
|
|
232
251
|
activeLiquidityF64 = Number(activeLiquidityU64);
|
|
233
252
|
}
|
|
234
|
-
currentPriceSpot = (0, utils_1.getImpliedRate)(
|
|
253
|
+
currentPriceSpot = (0, utils_1.getImpliedRate)(boundaryTick?.apyBasePoints ?? 0);
|
|
235
254
|
currentLeftBoundaryIndex = predecessor;
|
|
236
255
|
}
|
|
237
256
|
}
|
package/build/swap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../src/swap.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,mCAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../src/swap.ts"],"names":[],"mappings":"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"}
|
package/build/swapV2.d.ts
CHANGED
|
@@ -3,9 +3,14 @@
|
|
|
3
3
|
* Closely mirrors the Rust on-chain implementation from swap.rs
|
|
4
4
|
* Uses TicksWrapper to simulate RB-tree behavior
|
|
5
5
|
*/
|
|
6
|
-
import { MarketThreeState, SwapArgs, SwapOutcomeV2 } from "./types";
|
|
6
|
+
import { MarketThreeState, SwapArgs, SwapExactOutArgs, SwapOutcomeV2 } from "./types";
|
|
7
7
|
/**
|
|
8
8
|
* Simulate a swap on the CLMM market (V2 - mirrors Rust closely)
|
|
9
9
|
* This is a pure function that does not mutate the market state
|
|
10
10
|
*/
|
|
11
11
|
export declare function simulateSwap(marketState: MarketThreeState, args: SwapArgs): SwapOutcomeV2;
|
|
12
|
+
/**
|
|
13
|
+
* Simulate a swap exact-out on the CLMM market.
|
|
14
|
+
* Mirrors on-chain swap_exact_out (currently only SyToPt is supported).
|
|
15
|
+
*/
|
|
16
|
+
export declare function simulateSwapExactOut(marketState: MarketThreeState, args: SwapExactOutArgs): SwapOutcomeV2;
|