@exponent-labs/market-three-math 0.1.8 → 0.9.1
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 +762 -36
- package/build/addLiquidity.js.map +1 -1
- package/build/bisect.d.ts +11 -0
- package/build/bisect.js +22 -12
- 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 +57 -12
- package/build/liquidityHistogram.js.map +1 -1
- package/build/quote.d.ts +1 -1
- package/build/quote.js +70 -84
- package/build/quote.js.map +1 -1
- package/build/swap.js +36 -18
- package/build/swap.js.map +1 -1
- package/build/swapV2.d.ts +6 -1
- package/build/swapV2.js +394 -52
- 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 +37 -19
- package/build/utils.js.map +1 -1
- package/build/utilsV2.d.ts +9 -0
- package/build/utilsV2.js +131 -9
- package/build/utilsV2.js.map +1 -1
- package/build/withdrawLiquidity.js +12 -7
- package/build/withdrawLiquidity.js.map +1 -1
- package/build/ytTrades.d.ts +7 -0
- package/build/ytTrades.js +166 -146
- package/build/ytTrades.js.map +1 -1
- package/build/ytTradesLegacy.js +3 -4
- package/build/ytTradesLegacy.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/build/swapLegacy.d.ts +0 -16
- package/build/swapLegacy.js +0 -229
- package/build/swapLegacy.js.map +0 -1
- package/src/swapLegacy.ts +0 -272
package/build/swapV2.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.simulateSwap =
|
|
3
|
+
exports.simulateSwap = simulateSwap;
|
|
4
|
+
exports.simulateSwapExactOut = simulateSwapExactOut;
|
|
4
5
|
/**
|
|
5
6
|
* CLMM Swap simulation V2
|
|
6
7
|
* Closely mirrors the Rust on-chain implementation from swap.rs
|
|
@@ -122,56 +123,13 @@ function simulateSwap(marketState, args) {
|
|
|
122
123
|
activeLiquidityF64 = crossed.activeLiquidityF64;
|
|
123
124
|
continue;
|
|
124
125
|
}
|
|
125
|
-
|
|
126
|
-
// Matches Rust logic: if max <= eps and principal == 0, constraint is not binding (1.0)
|
|
127
|
-
let kappaSy;
|
|
128
|
-
if (yMaxToBoundaryF > eps) {
|
|
129
|
-
kappaSy = Number(principalSy) / yMaxToBoundaryF;
|
|
130
|
-
}
|
|
131
|
-
else if (principalSy === 0n) {
|
|
132
|
-
kappaSy = 1.0; // No constraint since nothing to provide
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
kappaSy = Infinity; // Has principal but can't use it
|
|
136
|
-
}
|
|
137
|
-
// kappa_pt = principal_pt / pt_max_left (with proper edge case handling)
|
|
138
|
-
// Matches Rust logic: if max <= eps and principal == 0, constraint is not binding (1.0)
|
|
139
|
-
let kappaPt;
|
|
140
|
-
if (ptMaxToLeftF > eps) {
|
|
141
|
-
kappaPt = Number(principalPt) / ptMaxToLeftF;
|
|
142
|
-
}
|
|
143
|
-
else if (principalPt === 0n) {
|
|
144
|
-
kappaPt = 1.0; // No constraint since nothing to provide
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
kappaPt = Infinity; // Has principal but can't use it
|
|
148
|
-
}
|
|
149
|
-
// kappa = min(kappa_pt, kappa_sy, 1.0) -- MUST be clamped to 1.0
|
|
150
|
-
const kappa = Math.min(kappaPt, kappaSy, 1.0);
|
|
126
|
+
const lTradeF64 = computeKappaAndLTrade(args.direction, Number(principalPt), Number(principalSy), ptMaxToLeftF, yMaxToBoundaryF, activeLiquidityF64);
|
|
151
127
|
if (DEBUG) {
|
|
152
128
|
console.log(` anchorULeft=${anchorULeft}, anchorURight=${anchorURight}`);
|
|
153
129
|
console.log(` principalPt=${principalPt}, principalSy=${principalSy}`);
|
|
154
|
-
console.log(`
|
|
130
|
+
console.log(` lTradeF64=${lTradeF64}`);
|
|
155
131
|
}
|
|
156
|
-
|
|
157
|
-
if (!Number.isFinite(kappa) || kappa <= 0) {
|
|
158
|
-
const crossed = crossOneBoundary(ticksWrapper, args.direction, args.direction === types_1.SwapDirection.PtToSy ? rightBoundaryKey : currentLeftBoundaryKey, {
|
|
159
|
-
currentLeftBoundaryKey,
|
|
160
|
-
currentPriceSpot,
|
|
161
|
-
activeLiquidityU64,
|
|
162
|
-
activeLiquidityF64,
|
|
163
|
-
});
|
|
164
|
-
if (!crossed)
|
|
165
|
-
break;
|
|
166
|
-
currentLeftBoundaryKey = crossed.currentLeftBoundaryKey;
|
|
167
|
-
currentPriceSpot = crossed.currentPriceSpot;
|
|
168
|
-
activeLiquidityU64 = crossed.activeLiquidityU64;
|
|
169
|
-
activeLiquidityF64 = crossed.activeLiquidityF64;
|
|
170
|
-
continue;
|
|
171
|
-
}
|
|
172
|
-
const lTradeF64 = activeLiquidityF64 * kappa;
|
|
173
|
-
// Check l_trade validity
|
|
174
|
-
if (!Number.isFinite(lTradeF64) || lTradeF64 <= eps) {
|
|
132
|
+
if (lTradeF64 === null || !Number.isFinite(lTradeF64) || lTradeF64 <= eps) {
|
|
175
133
|
const crossed = crossOneBoundary(ticksWrapper, args.direction, args.direction === types_1.SwapDirection.PtToSy ? rightBoundaryKey : currentLeftBoundaryKey, {
|
|
176
134
|
currentLeftBoundaryKey,
|
|
177
135
|
currentPriceSpot,
|
|
@@ -194,7 +152,7 @@ function simulateSwap(marketState, args) {
|
|
|
194
152
|
const duActual = Math.min(duByInput, duToBoundary);
|
|
195
153
|
if (DEBUG) {
|
|
196
154
|
console.log(` PtToSy: duByInput=${duByInput}, duToBoundary=${duToBoundary}, duActual=${duActual}`);
|
|
197
|
-
console.log(` lTradeF64=${lTradeF64}
|
|
155
|
+
console.log(` lTradeF64=${lTradeF64}`);
|
|
198
156
|
}
|
|
199
157
|
// Check if we need to cross boundary first (at boundary)
|
|
200
158
|
if (duToBoundary <= eps) {
|
|
@@ -244,12 +202,15 @@ function simulateSwap(marketState, args) {
|
|
|
244
202
|
amountOutNetU64 += syOutNet;
|
|
245
203
|
feeLpOutU64 += lpFeeOut;
|
|
246
204
|
feeProtocolOutU64 += protocolFeeOut;
|
|
205
|
+
// Mirror on-chain principal mutation for this interval:
|
|
206
|
+
// +PT input (gross), -SY output (gross)
|
|
207
|
+
ticksWrapper.setPrincipals(currentLeftBoundaryKey, principalPt + BigInt(ptInSegment), principalSy - BigInt(syOutGrossU64));
|
|
247
208
|
// Consume input and advance state
|
|
248
209
|
amountInLeft -= ptInSegment;
|
|
249
210
|
currentPriceSpot = anchorUNew;
|
|
250
211
|
}
|
|
251
212
|
// If we hit boundary, cross
|
|
252
|
-
if (anchorURight - currentPriceSpot <= eps && amountInLeft >
|
|
213
|
+
if (anchorURight - currentPriceSpot <= eps && amountInLeft > 1) {
|
|
253
214
|
const crossed = crossOneBoundary(ticksWrapper, types_1.SwapDirection.PtToSy, rightBoundaryKey, {
|
|
254
215
|
currentLeftBoundaryKey,
|
|
255
216
|
currentPriceSpot,
|
|
@@ -273,7 +234,7 @@ function simulateSwap(marketState, args) {
|
|
|
273
234
|
const deltaCActual = Math.min(deltaCByInput, deltaCToLeftBoundary);
|
|
274
235
|
if (DEBUG) {
|
|
275
236
|
console.log(` SyToPt: deltaCByInput=${deltaCByInput}, deltaCToLeftBoundary=${deltaCToLeftBoundary}, deltaCActual=${deltaCActual}`);
|
|
276
|
-
console.log(` lTradeF64=${lTradeF64},
|
|
237
|
+
console.log(` lTradeF64=${lTradeF64}, eps=${eps}`);
|
|
277
238
|
}
|
|
278
239
|
// Check if we need to cross boundary first (at boundary)
|
|
279
240
|
if (deltaCToLeftBoundary <= eps) {
|
|
@@ -308,6 +269,22 @@ function simulateSwap(marketState, args) {
|
|
|
308
269
|
console.log(` spotPriceNew=${spotPriceNew}, duAbs=${duAbs}`);
|
|
309
270
|
console.log(` ptOutGrossU64=${ptOutGrossU64}, syInSegmentU64=${syInSegmentU64}`);
|
|
310
271
|
}
|
|
272
|
+
// Match on-chain behavior: if no PT can be taken from this interval, cross and continue.
|
|
273
|
+
if (ptOutGrossU64 === 0) {
|
|
274
|
+
const crossed = crossOneBoundary(ticksWrapper, types_1.SwapDirection.SyToPt, currentLeftBoundaryKey, {
|
|
275
|
+
currentLeftBoundaryKey,
|
|
276
|
+
currentPriceSpot,
|
|
277
|
+
activeLiquidityU64,
|
|
278
|
+
activeLiquidityF64,
|
|
279
|
+
});
|
|
280
|
+
if (!crossed)
|
|
281
|
+
break;
|
|
282
|
+
currentLeftBoundaryKey = crossed.currentLeftBoundaryKey;
|
|
283
|
+
currentPriceSpot = crossed.currentPriceSpot;
|
|
284
|
+
activeLiquidityU64 = crossed.activeLiquidityU64;
|
|
285
|
+
activeLiquidityF64 = crossed.activeLiquidityF64;
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
311
288
|
if (ptOutGrossU64 > 0) {
|
|
312
289
|
// Fees in token_out (PT)
|
|
313
290
|
// For flash swaps, fee is based on YT value = pt - sy × sy_exchange_rate
|
|
@@ -327,13 +304,16 @@ function simulateSwap(marketState, args) {
|
|
|
327
304
|
amountOutNetU64 += ptOutNet;
|
|
328
305
|
feeLpOutU64 += lpFeeOut;
|
|
329
306
|
feeProtocolOutU64 += protocolFeeOut;
|
|
307
|
+
// Mirror on-chain principal mutation for this interval:
|
|
308
|
+
// +SY input (gross), -PT output (gross)
|
|
309
|
+
ticksWrapper.setPrincipals(currentLeftBoundaryKey, principalPt - BigInt(ptOutGrossU64), principalSy + BigInt(syInSegmentU64));
|
|
330
310
|
}
|
|
331
311
|
// Consume input and advance state
|
|
332
312
|
amountInLeft -= syInSegmentU64;
|
|
333
313
|
currentPriceSpot = spotPriceNew;
|
|
334
314
|
// If we hit boundary, cross
|
|
335
315
|
// Use effective price difference for consistency with pre-swap epsilon check
|
|
336
|
-
if (Math.abs(cEffNew - cEffLeft) <= eps && amountInLeft >
|
|
316
|
+
if (Math.abs(cEffNew - cEffLeft) <= eps && amountInLeft > 1) {
|
|
337
317
|
const crossed = crossOneBoundary(ticksWrapper, types_1.SwapDirection.SyToPt, currentLeftBoundaryKey, {
|
|
338
318
|
currentLeftBoundaryKey,
|
|
339
319
|
currentPriceSpot,
|
|
@@ -349,6 +329,10 @@ function simulateSwap(marketState, args) {
|
|
|
349
329
|
}
|
|
350
330
|
}
|
|
351
331
|
}
|
|
332
|
+
const postMarketState = {
|
|
333
|
+
...marketState,
|
|
334
|
+
ticks: ticksWrapper.toTicks(currentLeftBoundaryKey, currentPriceSpot, activeLiquidityU64),
|
|
335
|
+
};
|
|
352
336
|
return {
|
|
353
337
|
amountInConsumed: args.amountIn - amountInLeft,
|
|
354
338
|
amountOut: amountOutNetU64,
|
|
@@ -356,9 +340,367 @@ function simulateSwap(marketState, args) {
|
|
|
356
340
|
protocolFeeChargedOutToken: feeProtocolOutU64,
|
|
357
341
|
finalSpotPrice: currentPriceSpot,
|
|
358
342
|
finalTickKey: currentLeftBoundaryKey, // This is now the key, not array index
|
|
343
|
+
postMarketState,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Simulate a swap exact-out on the CLMM market.
|
|
348
|
+
* Mirrors on-chain swap_exact_out (currently only SyToPt is supported).
|
|
349
|
+
*/
|
|
350
|
+
function simulateSwapExactOut(marketState, args) {
|
|
351
|
+
if (args.direction !== types_1.SwapDirection.SyToPt) {
|
|
352
|
+
throw new Error("Exact-out simulation only supports SyToPt");
|
|
353
|
+
}
|
|
354
|
+
const { financials, configurationOptions, ticks } = marketState;
|
|
355
|
+
const secondsRemaining = Math.max(0, Number(financials.expirationTs) - Date.now() / 1000);
|
|
356
|
+
const snapshot = new utilsV2_1.EffSnap((0, utilsV2_1.normalizedTimeRemaining)(secondsRemaining), args.syExchangeRate);
|
|
357
|
+
const ticksWrapper = new utilsV2_1.TicksWrapper(ticks);
|
|
358
|
+
let currentPriceSpot = ticksWrapper.currentSpotPrice;
|
|
359
|
+
let currentLeftBoundaryKey = ticksWrapper.currentTickKey;
|
|
360
|
+
let activeLiquidityU64 = ticksWrapper.currentPrefixSum;
|
|
361
|
+
let activeLiquidityF64 = Number(activeLiquidityU64);
|
|
362
|
+
const lpFeeRate = (0, utilsV2_1.calculateFeeRate)(configurationOptions.lnFeeRateRoot, secondsRemaining);
|
|
363
|
+
const protocolFeeBps = configurationOptions.treasuryFeeBps;
|
|
364
|
+
const eps = configurationOptions.epsilonClamp;
|
|
365
|
+
if (args.priceSpotLimit !== undefined && args.priceSpotLimit > currentPriceSpot) {
|
|
366
|
+
throw new Error("Price limit violated: limit must be <= current price for SyToPt exact-out");
|
|
367
|
+
}
|
|
368
|
+
const amountOutTarget = Math.max(0, Math.floor(args.amountOut));
|
|
369
|
+
const amountInConstraint = args.amountInConstraint !== undefined ? Math.max(0, Math.floor(args.amountInConstraint)) : undefined;
|
|
370
|
+
if (amountOutTarget === 0) {
|
|
371
|
+
return {
|
|
372
|
+
amountInConsumed: 0,
|
|
373
|
+
amountOut: 0,
|
|
374
|
+
lpFeeChargedOutToken: 0,
|
|
375
|
+
protocolFeeChargedOutToken: 0,
|
|
376
|
+
finalSpotPrice: currentPriceSpot,
|
|
377
|
+
finalTickKey: currentLeftBoundaryKey,
|
|
378
|
+
postMarketState: marketState,
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
let amountOutLeft = amountOutTarget;
|
|
382
|
+
let amountOutAccum = 0;
|
|
383
|
+
let amountInConsumed = 0;
|
|
384
|
+
let feeLpOutU64 = 0;
|
|
385
|
+
let feeProtocolOutU64 = 0;
|
|
386
|
+
let iterations = 0;
|
|
387
|
+
const MAX_ITERATIONS = 1000;
|
|
388
|
+
while (amountOutLeft > 2 && iterations < MAX_ITERATIONS) {
|
|
389
|
+
iterations++;
|
|
390
|
+
const rightBoundaryKeyOpt = ticksWrapper.successorKey(currentLeftBoundaryKey);
|
|
391
|
+
const rightBoundaryKey = rightBoundaryKeyOpt;
|
|
392
|
+
if (rightBoundaryKey === null) {
|
|
393
|
+
const crossed = crossOneBoundary(ticksWrapper, types_1.SwapDirection.SyToPt, currentLeftBoundaryKey, {
|
|
394
|
+
currentLeftBoundaryKey,
|
|
395
|
+
currentPriceSpot,
|
|
396
|
+
activeLiquidityU64,
|
|
397
|
+
activeLiquidityF64,
|
|
398
|
+
});
|
|
399
|
+
if (!crossed)
|
|
400
|
+
break;
|
|
401
|
+
currentLeftBoundaryKey = crossed.currentLeftBoundaryKey;
|
|
402
|
+
currentPriceSpot = crossed.currentPriceSpot;
|
|
403
|
+
activeLiquidityU64 = crossed.activeLiquidityU64;
|
|
404
|
+
activeLiquidityF64 = crossed.activeLiquidityF64;
|
|
405
|
+
continue;
|
|
406
|
+
}
|
|
407
|
+
const anchorULeft = ticksWrapper.getSpotPrice(currentLeftBoundaryKey);
|
|
408
|
+
const anchorURight = ticksWrapper.getSpotPrice(rightBoundaryKey);
|
|
409
|
+
const cEffOld = snapshot.getEffectivePrice(currentPriceSpot);
|
|
410
|
+
const cEffLeft = snapshot.getEffectivePrice(anchorULeft);
|
|
411
|
+
const deltaCToLeftBoundary = cEffLeft - cEffOld;
|
|
412
|
+
if (!Number.isFinite(deltaCToLeftBoundary) || deltaCToLeftBoundary <= eps) {
|
|
413
|
+
const crossed = crossOneBoundary(ticksWrapper, types_1.SwapDirection.SyToPt, currentLeftBoundaryKey, {
|
|
414
|
+
currentLeftBoundaryKey,
|
|
415
|
+
currentPriceSpot,
|
|
416
|
+
activeLiquidityU64,
|
|
417
|
+
activeLiquidityF64,
|
|
418
|
+
});
|
|
419
|
+
if (!crossed)
|
|
420
|
+
break;
|
|
421
|
+
currentLeftBoundaryKey = crossed.currentLeftBoundaryKey;
|
|
422
|
+
currentPriceSpot = crossed.currentPriceSpot;
|
|
423
|
+
activeLiquidityU64 = crossed.activeLiquidityU64;
|
|
424
|
+
activeLiquidityF64 = crossed.activeLiquidityF64;
|
|
425
|
+
continue;
|
|
426
|
+
}
|
|
427
|
+
const { principalPt, principalSy } = ticksWrapper.getPrincipals(currentLeftBoundaryKey);
|
|
428
|
+
const duToLeft = currentPriceSpot - anchorULeft;
|
|
429
|
+
if (!Number.isFinite(duToLeft) || deltaCToLeftBoundary <= eps) {
|
|
430
|
+
const crossed = crossOneBoundary(ticksWrapper, types_1.SwapDirection.SyToPt, currentLeftBoundaryKey, {
|
|
431
|
+
currentLeftBoundaryKey,
|
|
432
|
+
currentPriceSpot,
|
|
433
|
+
activeLiquidityU64,
|
|
434
|
+
activeLiquidityF64,
|
|
435
|
+
});
|
|
436
|
+
if (!crossed)
|
|
437
|
+
break;
|
|
438
|
+
currentLeftBoundaryKey = crossed.currentLeftBoundaryKey;
|
|
439
|
+
currentPriceSpot = crossed.currentPriceSpot;
|
|
440
|
+
activeLiquidityU64 = crossed.activeLiquidityU64;
|
|
441
|
+
activeLiquidityF64 = crossed.activeLiquidityF64;
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
const ptMaxToLeftF = activeLiquidityF64 * duToLeft;
|
|
445
|
+
const cEffRight = snapshot.getEffectivePrice(anchorURight);
|
|
446
|
+
const deltaCToRightBoundary = cEffOld - cEffRight;
|
|
447
|
+
const yMaxToBoundaryF = activeLiquidityF64 * deltaCToRightBoundary;
|
|
448
|
+
if (!Number.isFinite(yMaxToBoundaryF) ||
|
|
449
|
+
!Number.isFinite(ptMaxToLeftF) ||
|
|
450
|
+
yMaxToBoundaryF < 0 ||
|
|
451
|
+
ptMaxToLeftF < 0) {
|
|
452
|
+
const crossed = crossOneBoundary(ticksWrapper, types_1.SwapDirection.SyToPt, currentLeftBoundaryKey, {
|
|
453
|
+
currentLeftBoundaryKey,
|
|
454
|
+
currentPriceSpot,
|
|
455
|
+
activeLiquidityU64,
|
|
456
|
+
activeLiquidityF64,
|
|
457
|
+
});
|
|
458
|
+
if (!crossed)
|
|
459
|
+
break;
|
|
460
|
+
currentLeftBoundaryKey = crossed.currentLeftBoundaryKey;
|
|
461
|
+
currentPriceSpot = crossed.currentPriceSpot;
|
|
462
|
+
activeLiquidityU64 = crossed.activeLiquidityU64;
|
|
463
|
+
activeLiquidityF64 = crossed.activeLiquidityF64;
|
|
464
|
+
continue;
|
|
465
|
+
}
|
|
466
|
+
const lTradeF64 = computeKappaAndLTrade(types_1.SwapDirection.SyToPt, Number(principalPt), Number(principalSy), ptMaxToLeftF, yMaxToBoundaryF, activeLiquidityF64);
|
|
467
|
+
if (lTradeF64 === null) {
|
|
468
|
+
const crossed = crossOneBoundary(ticksWrapper, types_1.SwapDirection.SyToPt, currentLeftBoundaryKey, {
|
|
469
|
+
currentLeftBoundaryKey,
|
|
470
|
+
currentPriceSpot,
|
|
471
|
+
activeLiquidityU64,
|
|
472
|
+
activeLiquidityF64,
|
|
473
|
+
});
|
|
474
|
+
if (!crossed)
|
|
475
|
+
break;
|
|
476
|
+
currentLeftBoundaryKey = crossed.currentLeftBoundaryKey;
|
|
477
|
+
currentPriceSpot = crossed.currentPriceSpot;
|
|
478
|
+
activeLiquidityU64 = crossed.activeLiquidityU64;
|
|
479
|
+
activeLiquidityF64 = crossed.activeLiquidityF64;
|
|
480
|
+
continue;
|
|
481
|
+
}
|
|
482
|
+
let ptOutGrossBoundaryU64 = Math.floor(lTradeF64 * duToLeft);
|
|
483
|
+
ptOutGrossBoundaryU64 = Math.min(ptOutGrossBoundaryU64, Number(principalPt));
|
|
484
|
+
if (ptOutGrossBoundaryU64 === 0) {
|
|
485
|
+
const crossed = crossOneBoundary(ticksWrapper, types_1.SwapDirection.SyToPt, currentLeftBoundaryKey, {
|
|
486
|
+
currentLeftBoundaryKey,
|
|
487
|
+
currentPriceSpot,
|
|
488
|
+
activeLiquidityU64,
|
|
489
|
+
activeLiquidityF64,
|
|
490
|
+
});
|
|
491
|
+
if (!crossed)
|
|
492
|
+
break;
|
|
493
|
+
currentLeftBoundaryKey = crossed.currentLeftBoundaryKey;
|
|
494
|
+
currentPriceSpot = crossed.currentPriceSpot;
|
|
495
|
+
activeLiquidityU64 = crossed.activeLiquidityU64;
|
|
496
|
+
activeLiquidityF64 = crossed.activeLiquidityF64;
|
|
497
|
+
continue;
|
|
498
|
+
}
|
|
499
|
+
const totalFeeOutBoundary = (0, utilsV2_1.getFeeFromAmount)(ptOutGrossBoundaryU64, lpFeeRate);
|
|
500
|
+
const ptOutNetBoundary = Math.max(0, ptOutGrossBoundaryU64 - totalFeeOutBoundary);
|
|
501
|
+
if (ptOutNetBoundary === 0) {
|
|
502
|
+
const boundarySegment = calculateSwapSegment(ptOutGrossBoundaryU64, lTradeF64, currentPriceSpot, duToLeft, anchorULeft, snapshot, cEffOld, lpFeeRate, args.isCurrentFlashSwap);
|
|
503
|
+
let syInBoundary = boundarySegment.syInSegmentU64;
|
|
504
|
+
if (ptOutGrossBoundaryU64 > 0 && syInBoundary === 0) {
|
|
505
|
+
syInBoundary = 1;
|
|
506
|
+
}
|
|
507
|
+
if (amountInConstraint !== undefined &&
|
|
508
|
+
amountInConsumed + syInBoundary > amountInConstraint) {
|
|
509
|
+
throw new Error("Insufficient SY budget for exact-out trade");
|
|
510
|
+
}
|
|
511
|
+
amountInConsumed += syInBoundary;
|
|
512
|
+
if (boundarySegment.totalFeeOut > 0) {
|
|
513
|
+
const protocolFeeOut = Math.floor((boundarySegment.totalFeeOut * protocolFeeBps) / BASE_POINTS);
|
|
514
|
+
const lpFeeOut = boundarySegment.totalFeeOut - protocolFeeOut;
|
|
515
|
+
feeLpOutU64 += lpFeeOut;
|
|
516
|
+
feeProtocolOutU64 += protocolFeeOut;
|
|
517
|
+
}
|
|
518
|
+
if (syInBoundary > 0 || boundarySegment.ptOutGrossActual > 0) {
|
|
519
|
+
ticksWrapper.setPrincipals(currentLeftBoundaryKey, principalPt - BigInt(boundarySegment.ptOutGrossActual), principalSy + BigInt(syInBoundary));
|
|
520
|
+
}
|
|
521
|
+
currentPriceSpot = boundarySegment.spotPriceNew;
|
|
522
|
+
const crossed = crossOneBoundary(ticksWrapper, types_1.SwapDirection.SyToPt, currentLeftBoundaryKey, {
|
|
523
|
+
currentLeftBoundaryKey,
|
|
524
|
+
currentPriceSpot,
|
|
525
|
+
activeLiquidityU64,
|
|
526
|
+
activeLiquidityF64,
|
|
527
|
+
});
|
|
528
|
+
if (!crossed)
|
|
529
|
+
break;
|
|
530
|
+
currentLeftBoundaryKey = crossed.currentLeftBoundaryKey;
|
|
531
|
+
currentPriceSpot = crossed.currentPriceSpot;
|
|
532
|
+
activeLiquidityU64 = crossed.activeLiquidityU64;
|
|
533
|
+
activeLiquidityF64 = crossed.activeLiquidityF64;
|
|
534
|
+
continue;
|
|
535
|
+
}
|
|
536
|
+
const targetNet = Math.min(amountOutLeft, ptOutNetBoundary);
|
|
537
|
+
const grossCandidate = findGrossForTargetNet(targetNet, 0, ptOutGrossBoundaryU64, (gross) => calculateNetPtOut(gross, lTradeF64, currentPriceSpot, duToLeft, anchorULeft, lpFeeRate, args.isCurrentFlashSwap, snapshot, cEffOld));
|
|
538
|
+
const segment = calculateSwapSegment(grossCandidate, lTradeF64, currentPriceSpot, duToLeft, anchorULeft, snapshot, cEffOld, lpFeeRate, args.isCurrentFlashSwap);
|
|
539
|
+
let syInSegmentU64 = segment.syInSegmentU64;
|
|
540
|
+
if (grossCandidate > 0 && syInSegmentU64 === 0) {
|
|
541
|
+
syInSegmentU64 = 1;
|
|
542
|
+
}
|
|
543
|
+
if (amountInConstraint !== undefined &&
|
|
544
|
+
amountInConsumed + syInSegmentU64 > amountInConstraint) {
|
|
545
|
+
throw new Error("Insufficient SY budget for exact-out trade");
|
|
546
|
+
}
|
|
547
|
+
const netActual = segment.ptOutGrossActual - segment.totalFeeOut;
|
|
548
|
+
if (netActual < 0) {
|
|
549
|
+
throw new Error("Exact-out net underflow");
|
|
550
|
+
}
|
|
551
|
+
if (netActual > amountOutLeft) {
|
|
552
|
+
throw new Error("Exact-out net exceeded remaining target");
|
|
553
|
+
}
|
|
554
|
+
amountOutLeft -= netActual;
|
|
555
|
+
amountOutAccum += netActual;
|
|
556
|
+
amountInConsumed += syInSegmentU64;
|
|
557
|
+
const protocolFeeOut = Math.floor((segment.totalFeeOut * protocolFeeBps) / BASE_POINTS);
|
|
558
|
+
const lpFeeOut = segment.totalFeeOut - protocolFeeOut;
|
|
559
|
+
feeLpOutU64 += lpFeeOut;
|
|
560
|
+
feeProtocolOutU64 += protocolFeeOut;
|
|
561
|
+
ticksWrapper.setPrincipals(currentLeftBoundaryKey, principalPt - BigInt(segment.ptOutGrossActual), principalSy + BigInt(syInSegmentU64));
|
|
562
|
+
currentPriceSpot = segment.spotPriceNew;
|
|
563
|
+
const cEffNew = snapshot.getEffectivePrice(currentPriceSpot);
|
|
564
|
+
if (amountOutLeft > 2 &&
|
|
565
|
+
(Math.abs(cEffNew - cEffLeft) <= eps || segment.ptOutGrossActual === ptOutGrossBoundaryU64)) {
|
|
566
|
+
const crossed = crossOneBoundary(ticksWrapper, types_1.SwapDirection.SyToPt, currentLeftBoundaryKey, {
|
|
567
|
+
currentLeftBoundaryKey,
|
|
568
|
+
currentPriceSpot,
|
|
569
|
+
activeLiquidityU64,
|
|
570
|
+
activeLiquidityF64,
|
|
571
|
+
});
|
|
572
|
+
if (!crossed)
|
|
573
|
+
break;
|
|
574
|
+
currentLeftBoundaryKey = crossed.currentLeftBoundaryKey;
|
|
575
|
+
currentPriceSpot = crossed.currentPriceSpot;
|
|
576
|
+
activeLiquidityU64 = crossed.activeLiquidityU64;
|
|
577
|
+
activeLiquidityF64 = crossed.activeLiquidityF64;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
if (amountOutLeft > 2) {
|
|
581
|
+
throw new Error("Insufficient PT output for exact-out trade");
|
|
582
|
+
}
|
|
583
|
+
const postMarketState = {
|
|
584
|
+
...marketState,
|
|
585
|
+
ticks: ticksWrapper.toTicks(currentLeftBoundaryKey, currentPriceSpot, activeLiquidityU64),
|
|
586
|
+
};
|
|
587
|
+
return {
|
|
588
|
+
amountInConsumed,
|
|
589
|
+
amountOut: amountOutAccum,
|
|
590
|
+
lpFeeChargedOutToken: feeLpOutU64,
|
|
591
|
+
protocolFeeChargedOutToken: feeProtocolOutU64,
|
|
592
|
+
finalSpotPrice: currentPriceSpot,
|
|
593
|
+
finalTickKey: currentLeftBoundaryKey,
|
|
594
|
+
postMarketState,
|
|
595
|
+
};
|
|
596
|
+
}
|
|
597
|
+
function computeKappaAndLTrade(direction, principalPtInInterval, principalSyInInterval, ptMaxToLeftF, yMaxToBoundaryF, activeLiquidityF64) {
|
|
598
|
+
const isPtOnlyRange = yMaxToBoundaryF <= 0 || principalSyInInterval === 0;
|
|
599
|
+
const isSyOnlyRange = ptMaxToLeftF <= 0 || principalPtInInterval === 0;
|
|
600
|
+
let kappaSy;
|
|
601
|
+
let kappaPt;
|
|
602
|
+
if (direction === types_1.SwapDirection.SyToPt) {
|
|
603
|
+
kappaPt = isSyOnlyRange
|
|
604
|
+
? 0
|
|
605
|
+
: ptMaxToLeftF > 0
|
|
606
|
+
? principalPtInInterval / ptMaxToLeftF
|
|
607
|
+
: Infinity;
|
|
608
|
+
kappaSy = isPtOnlyRange
|
|
609
|
+
? 1
|
|
610
|
+
: yMaxToBoundaryF > 0
|
|
611
|
+
? principalSyInInterval / yMaxToBoundaryF
|
|
612
|
+
: Infinity;
|
|
613
|
+
}
|
|
614
|
+
else {
|
|
615
|
+
kappaSy = isPtOnlyRange
|
|
616
|
+
? 0
|
|
617
|
+
: yMaxToBoundaryF > 0
|
|
618
|
+
? principalSyInInterval / yMaxToBoundaryF
|
|
619
|
+
: Infinity;
|
|
620
|
+
kappaPt = isSyOnlyRange
|
|
621
|
+
? 1
|
|
622
|
+
: ptMaxToLeftF > 0
|
|
623
|
+
? principalPtInInterval / ptMaxToLeftF
|
|
624
|
+
: Infinity;
|
|
625
|
+
}
|
|
626
|
+
const kappa = Math.min(kappaPt, kappaSy, 1);
|
|
627
|
+
if (!Number.isFinite(kappa) || kappa <= 0) {
|
|
628
|
+
return null;
|
|
629
|
+
}
|
|
630
|
+
const lTradeF64 = activeLiquidityF64 * kappa;
|
|
631
|
+
if (!Number.isFinite(lTradeF64) || lTradeF64 <= 0) {
|
|
632
|
+
return null;
|
|
633
|
+
}
|
|
634
|
+
return lTradeF64;
|
|
635
|
+
}
|
|
636
|
+
function findGrossForTargetNet(targetNet, minGross, maxGross, calculateNet) {
|
|
637
|
+
if (minGross >= maxGross) {
|
|
638
|
+
return minGross;
|
|
639
|
+
}
|
|
640
|
+
let left = minGross;
|
|
641
|
+
let right = maxGross;
|
|
642
|
+
let bestGross = minGross;
|
|
643
|
+
while (left <= right) {
|
|
644
|
+
const mid = left + Math.floor((right - left) / 2);
|
|
645
|
+
const net = calculateNet(mid);
|
|
646
|
+
if (net === targetNet) {
|
|
647
|
+
return mid;
|
|
648
|
+
}
|
|
649
|
+
if (net < targetNet) {
|
|
650
|
+
bestGross = mid;
|
|
651
|
+
left = mid + 1;
|
|
652
|
+
}
|
|
653
|
+
else {
|
|
654
|
+
if (mid === 0) {
|
|
655
|
+
break;
|
|
656
|
+
}
|
|
657
|
+
right = mid - 1;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
return bestGross;
|
|
661
|
+
}
|
|
662
|
+
function calculateNetPtOut(grossCandidate, lTradeF64, currentPriceSpot, duToLeft, anchorULeft, lpFeeRate, isCurrentFlashSwap, snapshot, cEffOld) {
|
|
663
|
+
const duCandidate = grossCandidate / lTradeF64;
|
|
664
|
+
const duClamped = Math.min(duCandidate, duToLeft);
|
|
665
|
+
let spotPriceNew = currentPriceSpot - duClamped;
|
|
666
|
+
if (spotPriceNew < anchorULeft) {
|
|
667
|
+
spotPriceNew = anchorULeft;
|
|
668
|
+
}
|
|
669
|
+
const ptOutGrossActual = Math.max(0, Math.floor(lTradeF64 * (currentPriceSpot - spotPriceNew)));
|
|
670
|
+
const totalFeeOut = isCurrentFlashSwap
|
|
671
|
+
? (() => {
|
|
672
|
+
const cEffNew = snapshot.getEffectivePrice(spotPriceNew);
|
|
673
|
+
const syInSegmentF = lTradeF64 * (cEffNew - cEffOld);
|
|
674
|
+
const syInBase = Math.ceil(syInSegmentF) * snapshot.syExchangeRate;
|
|
675
|
+
const ytValue = ptOutGrossActual - syInBase;
|
|
676
|
+
return (0, utilsV2_1.getFeeFromAmount)(Math.max(0, Math.floor(ytValue)), lpFeeRate);
|
|
677
|
+
})()
|
|
678
|
+
: (0, utilsV2_1.getFeeFromAmount)(ptOutGrossActual, lpFeeRate);
|
|
679
|
+
return Math.max(0, ptOutGrossActual - totalFeeOut);
|
|
680
|
+
}
|
|
681
|
+
function calculateSwapSegment(grossCandidate, lTradeF64, currentPriceSpot, duToLeft, anchorULeft, snapshot, cEffOld, lpFeeRate, isCurrentFlashSwap) {
|
|
682
|
+
const duCandidate = grossCandidate / lTradeF64;
|
|
683
|
+
const duClamped = Math.min(duCandidate, duToLeft);
|
|
684
|
+
let spotPriceNew = currentPriceSpot - duClamped;
|
|
685
|
+
if (spotPriceNew < anchorULeft) {
|
|
686
|
+
spotPriceNew = anchorULeft;
|
|
687
|
+
}
|
|
688
|
+
const cEffNew = snapshot.getEffectivePrice(spotPriceNew);
|
|
689
|
+
const syInSegmentF = lTradeF64 * (cEffNew - cEffOld);
|
|
690
|
+
const syInSegmentU64 = Math.max(0, Math.ceil(syInSegmentF));
|
|
691
|
+
const ptOutGrossActual = Math.max(0, Math.floor(lTradeF64 * (currentPriceSpot - spotPriceNew)));
|
|
692
|
+
const normalFee = (0, utilsV2_1.getFeeFromAmount)(ptOutGrossActual, lpFeeRate);
|
|
693
|
+
const syInBase = Math.ceil(syInSegmentF) * snapshot.syExchangeRate;
|
|
694
|
+
const ytValue = ptOutGrossActual - syInBase;
|
|
695
|
+
const flashFee = (0, utilsV2_1.getFeeFromAmount)(Math.max(0, Math.floor(ytValue)), lpFeeRate);
|
|
696
|
+
const totalFeeOut = isCurrentFlashSwap ? flashFee : normalFee;
|
|
697
|
+
return {
|
|
698
|
+
spotPriceNew,
|
|
699
|
+
syInSegmentU64,
|
|
700
|
+
ptOutGrossActual,
|
|
701
|
+
totalFeeOut,
|
|
359
702
|
};
|
|
360
703
|
}
|
|
361
|
-
exports.simulateSwap = simulateSwap;
|
|
362
704
|
/**
|
|
363
705
|
* Cross one boundary and update core state
|
|
364
706
|
* Mirrors Rust's cross_one_boundary_and_update_core
|
package/build/swapV2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swapV2.js","sourceRoot":"","sources":["../src/swapV2.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"swapV2.js","sourceRoot":"","sources":["../src/swapV2.ts"],"names":[],"mappings":"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"}
|