@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.
Files changed (55) hide show
  1. package/build/addLiquidity.d.ts +65 -4
  2. package/build/addLiquidity.js +762 -36
  3. package/build/addLiquidity.js.map +1 -1
  4. package/build/bisect.d.ts +11 -0
  5. package/build/bisect.js +22 -12
  6. package/build/bisect.js.map +1 -1
  7. package/build/index.d.ts +5 -4
  8. package/build/index.js +14 -7
  9. package/build/index.js.map +1 -1
  10. package/build/liquidityHistogram.d.ts +6 -1
  11. package/build/liquidityHistogram.js +57 -12
  12. package/build/liquidityHistogram.js.map +1 -1
  13. package/build/quote.d.ts +1 -1
  14. package/build/quote.js +70 -84
  15. package/build/quote.js.map +1 -1
  16. package/build/swap.js +36 -18
  17. package/build/swap.js.map +1 -1
  18. package/build/swapV2.d.ts +6 -1
  19. package/build/swapV2.js +394 -52
  20. package/build/swapV2.js.map +1 -1
  21. package/build/types.d.ts +51 -0
  22. package/build/utils.d.ts +8 -2
  23. package/build/utils.js +37 -19
  24. package/build/utils.js.map +1 -1
  25. package/build/utilsV2.d.ts +9 -0
  26. package/build/utilsV2.js +131 -9
  27. package/build/utilsV2.js.map +1 -1
  28. package/build/withdrawLiquidity.js +12 -7
  29. package/build/withdrawLiquidity.js.map +1 -1
  30. package/build/ytTrades.d.ts +7 -0
  31. package/build/ytTrades.js +166 -146
  32. package/build/ytTrades.js.map +1 -1
  33. package/build/ytTradesLegacy.js +3 -4
  34. package/build/ytTradesLegacy.js.map +1 -1
  35. package/package.json +2 -2
  36. package/src/addLiquidity.ts +1012 -38
  37. package/src/bisect.ts +22 -11
  38. package/src/index.ts +11 -5
  39. package/src/liquidityHistogram.ts +54 -9
  40. package/src/quote.ts +73 -95
  41. package/src/swap.ts +35 -19
  42. package/src/swapV2.ts +999 -0
  43. package/src/types.ts +55 -0
  44. package/src/utils.ts +24 -3
  45. package/src/utilsV2.ts +337 -0
  46. package/src/withdrawLiquidity.ts +12 -6
  47. package/src/ytTrades.ts +191 -172
  48. package/src/ytTradesLegacy.ts +419 -0
  49. package/build/swap-v2.d.ts +0 -20
  50. package/build/swap-v2.js +0 -261
  51. package/build/swap-v2.js.map +0 -1
  52. package/build/swapLegacy.d.ts +0 -16
  53. package/build/swapLegacy.js +0 -229
  54. package/build/swapLegacy.js.map +0 -1
  55. package/src/swapLegacy.ts +0 -272
package/build/quote.js CHANGED
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSwapQuote = exports.QuoteDirection = void 0;
4
- const swap_1 = require("./swap");
3
+ exports.QuoteDirection = void 0;
4
+ exports.getSwapQuote = getSwapQuote;
5
+ const swapV2_1 = require("./swapV2");
5
6
  const types_1 = require("./types");
6
7
  const ytTrades_1 = require("./ytTrades");
7
8
  var QuoteDirection;
@@ -13,94 +14,79 @@ var QuoteDirection;
13
14
  })(QuoteDirection || (exports.QuoteDirection = QuoteDirection = {}));
14
15
  /**
15
16
  * Calculate the expected output for a given input amount
16
- * This is a convenience wrapper around simulateSwap
17
+ * This is a convenience wrapper around simulateSwapV2
17
18
  */
18
19
  function getSwapQuote(marketState, amountIn, direction) {
19
- //? Calculate correct currentTick index
20
- //TODO Remove this logic when contract is updated!!!
21
- const currentTickIndex = calculateCurrentTickIndex(marketState.ticks);
22
- const marketStateMutated = {
23
- ...marketState,
24
- ticks: {
25
- ...marketState.ticks,
26
- currentTick: currentTickIndex,
27
- },
28
- };
29
- if (direction === QuoteDirection.PtToSy) {
30
- const { amountInConsumed, amountOut, lpFeeChargedOutToken, protocolFeeChargedOutToken } = (0, swap_1.simulateSwap)(marketStateMutated, {
31
- direction: types_1.SwapDirection.PtToSy,
32
- amountIn,
33
- syExchangeRate: marketStateMutated.currentSyExchangeRate,
34
- isCurrentFlashSwap: false,
35
- });
36
- return {
37
- amountIn: amountInConsumed,
38
- amountOut: amountOut,
39
- lpFee: lpFeeChargedOutToken,
40
- protocolFee: protocolFeeChargedOutToken,
41
- };
42
- }
43
- if (direction === QuoteDirection.SyToPt) {
44
- const { amountInConsumed, amountOut, lpFeeChargedOutToken, protocolFeeChargedOutToken } = (0, swap_1.simulateSwap)(marketStateMutated, {
45
- direction: types_1.SwapDirection.SyToPt,
46
- amountIn,
47
- syExchangeRate: marketStateMutated.currentSyExchangeRate,
48
- isCurrentFlashSwap: false,
49
- });
50
- return {
51
- amountIn: amountInConsumed,
52
- amountOut: amountOut,
53
- lpFee: lpFeeChargedOutToken,
54
- protocolFee: protocolFeeChargedOutToken,
55
- };
56
- }
57
- if (direction === QuoteDirection.YtToSy) {
58
- const { ytIn, netSyReceived, lpFee, protocolFee } = (0, ytTrades_1.simulateSellYt)(marketStateMutated, {
59
- ytIn: amountIn,
60
- syExchangeRate: marketStateMutated.currentSyExchangeRate,
61
- });
62
- return {
63
- amountIn: ytIn,
64
- amountOut: netSyReceived,
65
- lpFee: lpFee,
66
- protocolFee: protocolFee,
20
+ try {
21
+ const marketStateMutated = {
22
+ ...marketState,
23
+ ticks: {
24
+ ...marketState.ticks,
25
+ currentTick: marketState.ticks.currentTick,
26
+ },
67
27
  };
28
+ if (direction === QuoteDirection.PtToSy) {
29
+ const { amountInConsumed, amountOut, lpFeeChargedOutToken, protocolFeeChargedOutToken } = (0, swapV2_1.simulateSwap)(marketStateMutated, {
30
+ direction: types_1.SwapDirection.PtToSy,
31
+ amountIn,
32
+ syExchangeRate: marketStateMutated.currentSyExchangeRate,
33
+ isCurrentFlashSwap: false,
34
+ });
35
+ return {
36
+ amountIn: amountInConsumed,
37
+ amountOut: amountOut,
38
+ lpFee: lpFeeChargedOutToken,
39
+ protocolFee: protocolFeeChargedOutToken,
40
+ };
41
+ }
42
+ if (direction === QuoteDirection.SyToPt) {
43
+ const { amountInConsumed, amountOut, lpFeeChargedOutToken, protocolFeeChargedOutToken } = (0, swapV2_1.simulateSwap)(marketStateMutated, {
44
+ direction: types_1.SwapDirection.SyToPt,
45
+ amountIn,
46
+ syExchangeRate: marketStateMutated.currentSyExchangeRate,
47
+ isCurrentFlashSwap: false,
48
+ });
49
+ return {
50
+ amountIn: amountInConsumed,
51
+ amountOut: amountOut,
52
+ lpFee: lpFeeChargedOutToken,
53
+ protocolFee: protocolFeeChargedOutToken,
54
+ };
55
+ }
56
+ if (direction === QuoteDirection.YtToSy) {
57
+ const { ytIn, netSyReceived, lpFee, protocolFee } = (0, ytTrades_1.simulateSellYt)(marketStateMutated, {
58
+ ytIn: amountIn,
59
+ syExchangeRate: marketStateMutated.currentSyExchangeRate,
60
+ });
61
+ return {
62
+ amountIn: ytIn,
63
+ amountOut: netSyReceived,
64
+ lpFee: lpFee,
65
+ protocolFee: protocolFee,
66
+ };
67
+ }
68
+ if (direction === QuoteDirection.SyToYt) {
69
+ const { ytOut, netSyCost, lpFee, protocolFee } = (0, ytTrades_1.simulateBuyYtWithSyIn)(marketStateMutated, {
70
+ syIn: amountIn,
71
+ syExchangeRate: marketStateMutated.currentSyExchangeRate,
72
+ });
73
+ return {
74
+ amountIn: netSyCost,
75
+ amountOut: ytOut,
76
+ lpFee: lpFee,
77
+ protocolFee,
78
+ };
79
+ }
80
+ throw new Error(`Unknown quote direction: ${direction}`);
68
81
  }
69
- if (direction === QuoteDirection.SyToYt) {
70
- const { ytOut, netSyCost, lpFee, protocolFee } = (0, ytTrades_1.simulateBuyYtWithSyIn)(marketStateMutated, {
71
- syIn: amountIn,
72
- syExchangeRate: marketStateMutated.currentSyExchangeRate,
73
- });
82
+ catch (error) {
83
+ console.error("Unable to get swap quote", error);
74
84
  return {
75
- amountIn: netSyCost,
76
- amountOut: ytOut,
77
- lpFee: lpFee,
78
- protocolFee,
85
+ amountIn,
86
+ amountOut: 0,
87
+ lpFee: 0,
88
+ protocolFee: 0,
79
89
  };
80
90
  }
81
- throw new Error(`Unknown quote direction: ${direction}`);
82
- }
83
- exports.getSwapQuote = getSwapQuote;
84
- /**
85
- * Calculate the correct currentTick index for the market state
86
- *
87
- * IMPORTANT: currentTick must be a 1-based ARRAY INDEX, not apyBasePoints!
88
- * The simulateSwap function uses findTickByIndex which does: ticksTree.at(index - 1)
89
- *
90
- * @returns The 1-based array index of the tick where impliedRate <= currentSpotPrice
91
- */
92
- function calculateCurrentTickIndex(ticksData) {
93
- // Find the tick with highest impliedRate <= currentSpotPrice
94
- let currentTickApyBps = ticksData.ticksTree[0]?.apyBasePoints || 0;
95
- for (const tick of ticksData.ticksTree) {
96
- const tickRate = Number(tick.impliedRate);
97
- if (tickRate <= ticksData.currentSpotPrice) {
98
- currentTickApyBps = tick.apyBasePoints;
99
- }
100
- }
101
- // Find the array index (0-based) of this tick
102
- const arrayIndex = ticksData.ticksTree.findIndex((t) => t.apyBasePoints === currentTickApyBps);
103
- // Convert to 1-based index for simulateSwap
104
- return arrayIndex !== -1 ? arrayIndex + 1 : 1;
105
91
  }
106
92
  //# sourceMappingURL=quote.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quote.js","sourceRoot":"","sources":["../src/quote.ts"],"names":[],"mappings":"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"}
package/build/swap.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.simulateSwap = void 0;
3
+ exports.simulateSwap = simulateSwap;
4
4
  /**
5
5
  * CLMM Swap simulation - V2
6
6
  * Updated to match the latest Rust on-chain implementation
@@ -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.findTickByKey)(ticks, (0, utils_1.getSuccessorTickKey)(ticks, currentLeftBoundaryIndex))?.index;
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 predecessor = (0, utils_1.getPredecessorTickKey)(ticks, currentLeftBoundaryIndex);
72
- if (predecessor === null)
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.findTickByKey)(ticks, predecessor);
75
+ const boundaryTick = (0, utils_1.findTickByIndex)(ticks, currentLeftBoundaryIndex);
76
76
  // When crossing downward (SyToPt), update state
77
- currentPriceSpot = (0, utils_1.getImpliedRate)(currentLeftBoundaryIndex); // Boundary we're crossing
78
- currentLeftBoundaryIndex = boundaryTick.index; // New left boundary
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.tick.liquidityNet);
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
- const totalFeeOut = (0, utils_1.getFeeFromAmount)(syOutGrossClamped, lpFeeRate);
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.getPredecessorTickKey)(ticks, currentLeftBoundaryIndex);
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)(currentLeftBoundaryIndex);
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.getPredecessorTickKey)(ticks, currentLeftBoundaryIndex);
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)(currentLeftBoundaryIndex);
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
- const totalFeeOut = (0, utils_1.getFeeFromAmount)(Number(ptOutGrossU64), lpFeeRate);
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.getPredecessorTickKey)(ticks, currentLeftBoundaryIndex);
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)(currentLeftBoundaryIndex);
253
+ currentPriceSpot = (0, utils_1.getImpliedRate)(boundaryTick?.apyBasePoints ?? 0);
235
254
  currentLeftBoundaryIndex = predecessor;
236
255
  }
237
256
  }
@@ -245,5 +264,4 @@ function simulateSwap(marketState, args) {
245
264
  finalTickIndex: currentLeftBoundaryIndex,
246
265
  };
247
266
  }
248
- exports.simulateSwap = simulateSwap;
249
267
  //# sourceMappingURL=swap.js.map
package/build/swap.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"swap.js","sourceRoot":"","sources":["../src/swap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swap.js","sourceRoot":"","sources":["../src/swap.ts"],"names":[],"mappings":";;AA6BA,oCA6RC;AA1TD;;;;;;;GAOG;AACH,mCAAgF;AAChF,mCAWgB;AAEhB,MAAM,WAAW,GAAG,KAAK,CAAA;AAEzB;;;;GAIG;AACH,SAAgB,YAAY,CAAC,WAA6B,EAAE,IAAc;IACxE,MAAM,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,WAAW,CAAA;IAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IAEzF,kCAAkC;IAClC,MAAM,QAAQ,GAAY,IAAI,eAAO,CAAC,IAAA,+BAAuB,EAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;IAErG,gBAAgB;IAChB,IAAI,gBAAgB,GAAW,KAAK,CAAC,gBAAgB,CAAA;IACrD,IAAI,wBAAwB,GAAW,KAAK,CAAC,WAAW,CAAA;IAExD,2EAA2E;IAC3E,IAAI,kBAAkB,GAAW,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAA;IAC7D,IAAI,kBAAkB,GAAW,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAE3D,OAAO;IACP,MAAM,SAAS,GAAW,IAAA,wBAAgB,EAAC,oBAAoB,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAA;IAChG,MAAM,cAAc,GAAG,oBAAoB,CAAC,cAAc,CAAA;IAE1D,qBAAqB;IACrB,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,SAAS,KAAK,qBAAa,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,cAAc,GAAG,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,cAAc,GAAG,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;QACH,CAAC;IACH,CAAC;IAED,eAAe;IACf,IAAI,YAAY,GAAW,CAAC,CAAA;IAC5B,IAAI,QAAQ,GAAW,CAAC,CAAA;IACxB,IAAI,cAAc,GAAW,CAAC,CAAA;IAC9B,IAAI,YAAY,GAAW,IAAI,CAAC,QAAQ,CAAA;IAExC,wCAAwC;IACxC,IAAI,UAAU,GAAW,CAAC,CAAA;IAC1B,MAAM,cAAc,GAAW,IAAI,CAAA,CAAC,eAAe;IACnD,MAAM,KAAK,GAAG,KAAK,CAAA,CAAC,4BAA4B;IAEhD,IAAI,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,SAAS,cAAc,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC9F,IAAI,KAAK;QACP,OAAO,CAAC,GAAG,CACT,wBAAwB,wBAAwB,eAAe,gBAAgB,eAAe,kBAAkB,EAAE,CACnH,CAAA;IAEH,OAAO,YAAY,GAAG,CAAC,IAAI,UAAU,GAAG,cAAc,EAAE,CAAC;QACvD,UAAU,EAAE,CAAA;QACZ,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,kBAAkB,YAAY,MAAM,CAAC,CAAA;QAEzF,gEAAgE;QAChE,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;QACvF,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,qBAAqB,EAAE,CAAC,CAAA;QAEhE,IAAI,qBAAqB,KAAK,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,SAAS,KAAK,qBAAa,CAAC,MAAM,EAAE,CAAC;gBAC5C,iCAAiC;gBACjC,MAAM,cAAc,GAAG,IAAA,kCAA0B,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;gBAClF,IAAI,cAAc,KAAK,IAAI;oBAAE,MAAK;gBAElC,mEAAmE;gBACnE,MAAM,YAAY,GAAG,IAAA,uBAAe,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;gBAErE,gDAAgD;gBAChD,gBAAgB,GAAG,IAAA,sBAAc,EAAC,YAAY,EAAE,aAAa,IAAI,CAAC,CAAC,CAAA,CAAC,0BAA0B;gBAC9F,wBAAwB,GAAG,cAAc,CAAA,CAAC,oBAAoB;gBAE9D,IAAI,YAAY,EAAE,CAAC;oBACjB,kBAAkB,GAAG,IAAA,iBAAS,EAAC,EAAE,EAAE,kBAAkB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;oBAClF,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;gBACjD,CAAC;gBACD,SAAQ;YACV,CAAC;iBAAM,CAAC;gBACN,8BAA8B;gBAC9B,MAAK;YACP,CAAC;QACH,CAAC;QAED,MAAM,kBAAkB,GAAW,qBAAqB,IAAI,CAAC,CAAA;QAE7D,4CAA4C;QAC5C,MAAM,WAAW,GAAW,IAAA,sBAAc,EAAC,IAAA,uBAAe,EAAC,KAAK,EAAE,wBAAwB,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAA;QAChH,MAAM,YAAY,GAAW,IAAA,sBAAc,EAAC,IAAA,uBAAe,EAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAA;QAE3G,kCAAkC;QAClC,MAAM,OAAO,GAAW,QAAQ,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;QAEpE,yCAAyC;QACzC,MAAM,eAAe,GAAG,IAAA,uBAAe,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;QAExE,MAAM,WAAW,GAAW,eAAe,EAAE,WAAW,IAAI,EAAE,CAAA;QAC9D,MAAM,WAAW,GAAW,eAAe,EAAE,WAAW,IAAI,EAAE,CAAA;QAE9D,MAAM,GAAG,GAAW,oBAAoB,CAAC,YAAY,CAAA;QAErD,gEAAgE;QAChE,0CAA0C;QAC1C,MAAM,cAAc,GAAW,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAA;QACvE,MAAM,eAAe,GAAW,kBAAkB,GAAG,CAAC,OAAO,GAAG,cAAc,CAAC,CAAA;QAC/E,MAAM,OAAO,GAAW,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;QAEvF,MAAM,QAAQ,GAAW,gBAAgB,GAAG,WAAW,CAAA;QACvD,MAAM,YAAY,GAAW,kBAAkB,GAAG,QAAQ,CAAA;QAC1D,MAAM,OAAO,GAAW,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;QAEjF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAExC,kCAAkC;QAClC,MAAM,SAAS,GAAW,kBAAkB,GAAG,KAAK,CAAA;QAEpD,IAAI,IAAI,CAAC,SAAS,KAAK,qBAAa,CAAC,MAAM,EAAE,CAAC;YAC5C,oCAAoC;YACpC,MAAM,SAAS,GAAW,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;YACtE,MAAM,YAAY,GAAW,YAAY,GAAG,gBAAgB,CAAA;YAC5D,MAAM,QAAQ,GAAW,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;YAE1D,IAAI,YAAY,IAAI,GAAG,EAAE,CAAC;gBACxB,iBAAiB;gBACjB,MAAM,YAAY,GAAG,IAAA,uBAAe,EAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;gBAC/D,IAAI,YAAY,EAAE,CAAC;oBACjB,kBAAkB,IAAI,YAAY,CAAC,YAAY,CAAA;oBAC/C,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;gBACjD,CAAC;gBACD,wBAAwB,GAAG,kBAAkB,CAAA;gBAC7C,gBAAgB,GAAG,YAAY,CAAA;gBAC/B,SAAQ;YACV,CAAC;YAED,+BAA+B;YAC/B,MAAM,WAAW,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAA;YAC5D,MAAM,UAAU,GAAW,gBAAgB,GAAG,QAAQ,CAAA;YACtD,MAAM,OAAO,GAAW,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;YAC9D,MAAM,UAAU,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAA;YACtE,MAAM,iBAAiB,GAAW,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;YAE3E,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;gBAC1B,4GAA4G;gBAC5G,IAAI,WAAmB,CAAA;gBACvB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC5B,MAAM,SAAS,GAAG,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAA;oBACzD,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,CAAA;oBAC3C,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,cAAc,CAAA;oBACnD,WAAW,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;gBAC/E,CAAC;qBAAM,CAAC;oBACN,WAAW,GAAG,IAAA,wBAAgB,EAAC,iBAAiB,EAAE,SAAS,CAAC,CAAA;gBAC9D,CAAC;gBACD,MAAM,cAAc,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,WAAW,CAAC,CAAA;gBACvF,MAAM,QAAQ,GAAW,WAAW,GAAG,cAAc,CAAA;gBACrD,MAAM,QAAQ,GAAW,iBAAiB,GAAG,WAAW,CAAA;gBAExD,YAAY,IAAI,QAAQ,CAAA;gBACxB,QAAQ,IAAI,QAAQ,CAAA;gBACpB,cAAc,IAAI,cAAc,CAAA;YAClC,CAAC;YAED,YAAY,IAAI,WAAW,CAAA;YAC3B,gBAAgB,GAAG,UAAU,CAAA;YAE7B,4BAA4B;YAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,gBAAgB,CAAC,IAAI,GAAG,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACzE,MAAM,YAAY,GAAG,IAAA,uBAAe,EAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;gBAC/D,IAAI,YAAY,EAAE,CAAC;oBACjB,kBAAkB,IAAI,YAAY,CAAC,YAAY,CAAA;oBAC/C,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;gBACjD,CAAC;gBACD,wBAAwB,GAAG,kBAAkB,CAAA;gBAC7C,gBAAgB,GAAG,YAAY,CAAA;YACjC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,oCAAoC;YACpC,MAAM,QAAQ,GAAW,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;YAChE,MAAM,aAAa,GAAW,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1E,MAAM,oBAAoB,GAAW,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAA;YACpE,MAAM,YAAY,GAAW,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAA;YAE1E,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,0BAA0B,aAAa,gBAAgB,oBAAoB,EAAE,CAAC,CAAA;gBAC1F,OAAO,CAAC,GAAG,CAAC,kBAAkB,YAAY,SAAS,GAAG,WAAW,KAAK,YAAY,SAAS,EAAE,CAAC,CAAA;YAChG,CAAC;YAED,IAAI,oBAAoB,IAAI,GAAG,EAAE,CAAC;gBAChC,6BAA6B;gBAC7B,MAAM,WAAW,GAAG,IAAA,kCAA0B,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;gBAC/E,IAAI,WAAW,KAAK,IAAI;oBAAE,MAAK;gBAE/B,mEAAmE;gBACnE,MAAM,YAAY,GAAG,IAAA,uBAAe,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;gBACrE,IAAI,YAAY,EAAE,CAAC;oBACjB,kBAAkB,GAAG,IAAA,iBAAS,EAAC,EAAE,EAAE,kBAAkB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;oBAClF,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;gBACjD,CAAC;gBAED,gBAAgB,GAAG,IAAA,sBAAc,EAAC,YAAY,EAAE,aAAa,IAAI,CAAC,CAAC,CAAA;gBACnE,wBAAwB,GAAG,WAAW,CAAA;gBACtC,SAAQ;YACV,CAAC;YAED,wDAAwD;YACxD,MAAM,OAAO,GAAW,OAAO,GAAG,YAAY,CAAA;YAC9C,MAAM,YAAY,GAAW,QAAQ,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAA;YAE1E,cAAc;YACd,MAAM,YAAY,GAAW,SAAS,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,CAAA;YAC5D,MAAM,KAAK,GAAW,gBAAgB,GAAG,YAAY,CAAA;YACrD,MAAM,WAAW,GAAW,SAAS,GAAG,KAAK,CAAA;YAE7C,wCAAwC;YACxC,MAAM,aAAa,GAAW,IAAA,iBAAS,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;YACrF,MAAM,cAAc,GAAW,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;YAE/D,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,wBAAwB,YAAY,aAAa,OAAO,kBAAkB,YAAY,EAAE,CAAC,CAAA;gBACrG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,iBAAiB,WAAW,mBAAmB,aAAa,EAAE,CAAC,CAAA;gBAC3F,OAAO,CAAC,GAAG,CAAC,oBAAoB,cAAc,iBAAiB,WAAW,EAAE,CAAC,CAAA;YAC/E,CAAC;YAED,IAAI,aAAa,KAAK,EAAE,EAAE,CAAC;gBACzB,mCAAmC;gBACnC,MAAM,WAAW,GAAG,IAAA,kCAA0B,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;gBAC/E,IAAI,WAAW,KAAK,IAAI;oBAAE,MAAK;gBAE/B,0BAA0B;gBAC1B,MAAM,YAAY,GAAG,IAAA,uBAAe,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;gBACrE,IAAI,YAAY,EAAE,CAAC;oBACjB,kBAAkB,GAAG,IAAA,iBAAS,EAAC,EAAE,EAAE,kBAAkB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;oBAClF,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;gBACjD,CAAC;gBAED,gBAAgB,GAAG,IAAA,sBAAc,EAAC,YAAY,EAAE,aAAa,IAAI,CAAC,CAAC,CAAA;gBACnE,wBAAwB,GAAG,WAAW,CAAA;gBACtC,SAAQ;YACV,CAAC;YAED,yBAAyB;YACzB,yEAAyE;YACzE,IAAI,WAAmB,CAAA;YACvB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,cAAc,CAAA;gBAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAA;gBAChD,WAAW,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;YAC7E,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,IAAA,wBAAgB,EAAC,MAAM,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAA;YAClE,CAAC;YACD,MAAM,cAAc,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,WAAW,CAAC,CAAA;YACvF,MAAM,QAAQ,GAAW,WAAW,GAAG,cAAc,CAAA;YACrD,MAAM,QAAQ,GAAW,MAAM,CAAC,aAAa,CAAC,GAAG,WAAW,CAAA;YAE5D,qBAAqB;YACrB,YAAY,IAAI,QAAQ,CAAA;YACxB,QAAQ,IAAI,QAAQ,CAAA;YACpB,cAAc,IAAI,cAAc,CAAA;YAEhC,kCAAkC;YAClC,YAAY,IAAI,MAAM,CAAC,cAAc,CAAC,CAAA;YACtC,gBAAgB,GAAG,YAAY,CAAA;YAE/B,4BAA4B;YAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,WAAW,CAAC,IAAI,GAAG,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACxE,MAAM,WAAW,GAAG,IAAA,kCAA0B,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;gBAC/E,IAAI,WAAW,KAAK,IAAI;oBAAE,MAAK;gBAE/B,0BAA0B;gBAC1B,MAAM,YAAY,GAAG,IAAA,uBAAe,EAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;gBACrE,IAAI,YAAY,EAAE,CAAC;oBACjB,kBAAkB,GAAG,IAAA,iBAAS,EAAC,EAAE,EAAE,kBAAkB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;oBAClF,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;gBACjD,CAAC;gBAED,gBAAgB,GAAG,IAAA,sBAAc,EAAC,YAAY,EAAE,aAAa,IAAI,CAAC,CAAC,CAAA;gBACnE,wBAAwB,GAAG,WAAW,CAAA;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,gBAAgB,EAAE,IAAI,CAAC,QAAQ,GAAG,YAAY;QAC9C,SAAS,EAAE,YAAY;QACvB,oBAAoB,EAAE,QAAQ;QAC9B,0BAA0B,EAAE,cAAc;QAC1C,cAAc,EAAE,gBAAgB;QAChC,cAAc,EAAE,wBAAwB;KACzC,CAAA;AACH,CAAC"}
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;