@exponent-labs/market-three-math 0.9.16 → 0.9.18

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.
@@ -1,9 +1,74 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPtAndSyOnWithdrawLiquidity = getPtAndSyOnWithdrawLiquidity;
4
- const utils_1 = require("./utils");
4
+ const PRECISE_NUMBER_DENOM = 1000000000000n;
5
+ const SENTINEL_TICK_INDEX = 0xffffffff;
6
+ const invariantError = (message) => new Error(`WithdrawLiquidityInvariantViolated: ${message}`);
7
+ const getTickByIndex = (ticks, tickIdx) => {
8
+ const tick = ticks.ticksTree[tickIdx - 1];
9
+ if (!tick || tick.apyBasePoints <= 0) {
10
+ throw invariantError(`missing tick at index ${tickIdx}`);
11
+ }
12
+ return tick;
13
+ };
14
+ const getTickKey = (ticks, tickIdx) => getTickByIndex(ticks, tickIdx).apyBasePoints;
15
+ const successorIdx = (ticks, tickIdx) => {
16
+ const tickKey = getTickKey(ticks, tickIdx);
17
+ let best = null;
18
+ for (let index = 0; index < ticks.ticksTree.length; index++) {
19
+ const key = ticks.ticksTree[index].apyBasePoints;
20
+ if (key <= tickKey) {
21
+ continue;
22
+ }
23
+ if (!best || key < best.key) {
24
+ best = { tickIdx: index + 1, key };
25
+ }
26
+ }
27
+ return best?.tickIdx ?? null;
28
+ };
29
+ const splitSuccessorForEpoch = (ticks, leftIdx, rightIdx, splitEpoch) => {
30
+ let cursor = successorIdx(ticks, leftIdx);
31
+ while (cursor != null && cursor !== SENTINEL_TICK_INDEX && cursor !== rightIdx) {
32
+ const tick = getTickByIndex(ticks, cursor);
33
+ if (tick.splitParentIdx === leftIdx && tick.splitParentEpoch === splitEpoch) {
34
+ return cursor;
35
+ }
36
+ cursor = successorIdx(ticks, cursor);
37
+ }
38
+ return null;
39
+ };
40
+ const fastMulRatioRaw = (rawPreciseNumber, numerator, denominator) => {
41
+ if (denominator <= 0n) {
42
+ throw invariantError("fastMulRatio denominator is zero");
43
+ }
44
+ if (numerator === 0n || rawPreciseNumber === 0n) {
45
+ return 0n;
46
+ }
47
+ if (numerator === denominator) {
48
+ return rawPreciseNumber;
49
+ }
50
+ const q = rawPreciseNumber / denominator;
51
+ const r = rawPreciseNumber % denominator;
52
+ return q * numerator + (r * numerator) / denominator;
53
+ };
54
+ const numberFromRatioRaw = (numerator, denominator) => {
55
+ if (denominator <= 0n) {
56
+ throw invariantError("Number::from_ratio denominator is zero");
57
+ }
58
+ return (numerator * PRECISE_NUMBER_DENOM) / denominator;
59
+ };
60
+ const mulNumberRaw = (leftRaw, rightRaw) => (leftRaw * rightRaw) / PRECISE_NUMBER_DENOM;
61
+ const principalOutForBurn = (principal, burnShares, shareSupply) => {
62
+ if (principal === 0n || burnShares === 0n || shareSupply === 0n) {
63
+ return 0n;
64
+ }
65
+ if (burnShares >= shareSupply) {
66
+ return principal;
67
+ }
68
+ const out = (principal * burnShares) / shareSupply;
69
+ return out < principal ? out : principal;
70
+ };
5
71
  function projectAnchorSharesToCurrentTicks(ticks, rootShares) {
6
- const SENTINEL = 0xffffffff; // Sentinel value for tree traversal (matches Rust implementation)
7
72
  // Deep clone the trackers to avoid mutating the original objects (important for React Query caching)
8
73
  const stack = rootShares.map((s) => ({
9
74
  tickIdx: s.tickIdx,
@@ -15,61 +80,50 @@ function projectAnchorSharesToCurrentTicks(ticks, rootShares) {
15
80
  const newShares = []; // This will hold the leaf shares
16
81
  while (stack.length > 0) {
17
82
  const principalShare = stack.pop();
18
- // Find the tick node for this share
19
- const tickNode = ticks.ticksTree.at(principalShare.tickIdx - 1) ?? null;
20
- if (!tickNode) {
21
- //? Tick node not found for tickIdx
22
- continue;
23
- }
83
+ const tickNode = getTickByIndex(ticks, principalShare.tickIdx);
24
84
  const lastSplitEpoch = tickNode.lastSplitEpoch;
25
85
  // Check if we need to split this share (if the tick has been split since this share was created)
26
86
  if (principalShare.splitEpoch < lastSplitEpoch) {
27
87
  const rightIndex = principalShare.rightTickIdx;
28
- if (rightIndex !== SENTINEL) {
29
- // Find the successor tick (the split point)
30
- const splitedIndex = (0, utils_1.getSuccessorTickIdxByIdx)(ticks, principalShare.tickIdx);
31
- if (splitedIndex === null) {
32
- //? No successor tick found for splitting
33
- continue;
34
- }
35
- const tickSpotPrice = tickNode.impliedRate;
36
- const rightTickNode = ticks.ticksTree.at(rightIndex - 1) ?? null;
37
- const splitedTickNode = ticks.ticksTree.at(splitedIndex - 1) ?? null;
38
- if (!rightTickNode || !splitedTickNode) {
39
- //? Could not find right or split tick nodes
40
- continue;
41
- }
42
- // Calculate the proportions based on spot price ranges
43
- const splitedFullRange = rightTickNode.impliedRate - tickSpotPrice;
44
- const currentSplitRange = splitedTickNode.impliedRate - tickSpotPrice;
45
- // Calculate how much LP share goes to the left portion
46
- const leftShare = Math.floor(Number(principalShare.lpShare) * (currentSplitRange / splitedFullRange));
47
- // Create new emission trackers with staged reset to 0
48
- const newEmissions = principalShare.emissions.map((tracker) => ({
49
- staged: 0n,
50
- lastSeenIndex: tracker.lastSeenIndex,
51
- }));
52
- // Calculate the migrated share (right portion)
53
- const migratedShare = principalShare.lpShare - BigInt(leftShare);
54
- // Update the current share to be the left portion
55
- principalShare.lpShare = BigInt(leftShare);
56
- principalShare.rightTickIdx = splitedIndex;
57
- // Push the right portion back onto the stack for further processing
58
- stack.push({
59
- tickIdx: splitedIndex,
60
- rightTickIdx: rightIndex,
61
- splitEpoch: principalShare.splitEpoch,
62
- lpShare: migratedShare,
63
- emissions: newEmissions,
64
- });
65
- // Update the split epoch to mark this share as processed
66
- principalShare.splitEpoch = lastSplitEpoch;
88
+ if (rightIndex === SENTINEL_TICK_INDEX) {
89
+ throw invariantError("no right index for split range");
67
90
  }
68
- else {
69
- // Error: we have a split range but no right index
70
- //? No right index for split range
71
- continue;
91
+ const splitedIndex = splitSuccessorForEpoch(ticks, principalShare.tickIdx, rightIndex, principalShare.splitEpoch);
92
+ if (splitedIndex == null) {
93
+ throw invariantError("no split successor for parent epoch");
72
94
  }
95
+ const tickSpotPrice = tickNode.impliedRate;
96
+ const rightTickNode = getTickByIndex(ticks, rightIndex);
97
+ const splitedTickNode = getTickByIndex(ticks, splitedIndex);
98
+ const splitedFullRange = rightTickNode.impliedRate - tickSpotPrice;
99
+ const currentSplitRange = splitedTickNode.impliedRate - tickSpotPrice;
100
+ const [leftShare, migratedShare] = splitedFullRange <= 0
101
+ ? [0n, principalShare.lpShare]
102
+ : (() => {
103
+ const ratio = Math.max(0, Math.min(1, currentSplitRange / splitedFullRange));
104
+ const scaledNum = BigInt(Math.round(ratio * Number(PRECISE_NUMBER_DENOM)));
105
+ const rightScaledNum = PRECISE_NUMBER_DENOM - scaledNum;
106
+ return [
107
+ fastMulRatioRaw(principalShare.lpShare, scaledNum, PRECISE_NUMBER_DENOM),
108
+ fastMulRatioRaw(principalShare.lpShare, rightScaledNum, PRECISE_NUMBER_DENOM),
109
+ ];
110
+ })();
111
+ const newEmissions = principalShare.emissions.map((tracker) => ({
112
+ staged: 0n,
113
+ lastSeenIndex: tracker.lastSeenIndex,
114
+ }));
115
+ principalShare.lpShare = leftShare;
116
+ principalShare.rightTickIdx = splitedIndex;
117
+ stack.push({
118
+ tickIdx: splitedIndex,
119
+ rightTickIdx: rightIndex,
120
+ splitEpoch: principalShare.splitEpoch,
121
+ lpShare: migratedShare,
122
+ emissions: newEmissions,
123
+ });
124
+ principalShare.splitEpoch += 1n;
125
+ stack.push(principalShare);
126
+ continue;
73
127
  }
74
128
  // Add the processed share to the result
75
129
  newShares.push(principalShare);
@@ -97,12 +151,7 @@ function updateLpPositionShares(marketEmissions, ticks, position) {
97
151
  // Iterate through each share and update
98
152
  for (const share of recomputedShares) {
99
153
  const myShares = share.lpShare;
100
- // Find the tick node in the ticks tree
101
- const tickNode = ticks.ticksTree.at(share.tickIdx - 1) ?? null;
102
- if (!tickNode) {
103
- //? Tick node not found for provided tickIdx
104
- continue;
105
- }
154
+ const tickNode = getTickByIndex(ticks, share.tickIdx);
106
155
  // Update tick emissions with market emission indices
107
156
  // In Rust: node_mut.value.update_tick_emissions(market_emission_indices)
108
157
  for (let i = 0; i < marketEmissionIndices.length; i++) {
@@ -148,22 +197,22 @@ function updateLpPositionShares(marketEmissions, ticks, position) {
148
197
  function calculatePtSyRemoval(position, ticks, liquidityToRemove) {
149
198
  let totalPtOut = 0n;
150
199
  let totalSyOut = 0n;
200
+ const isFullRemoval = liquidityToRemove === position.lpBalance;
201
+ if (liquidityToRemove <= 0n || liquidityToRemove > position.lpBalance) {
202
+ throw invariantError("invalid liquidity amount");
203
+ }
151
204
  for (const share of position.shareTrackers) {
152
205
  const myShares = share.lpShare;
153
- const tickNode = ticks.ticksTree.at(share.tickIdx - 1) ?? null;
154
- if (!tickNode) {
155
- continue;
156
- }
206
+ const tickNode = getTickByIndex(ticks, share.tickIdx);
157
207
  const supply = tickNode.principalShareSupply;
158
- // Calculate burn shares: r = l_remove / pos.L
159
- // burn_shares = my_shares * liquidity_to_remove / position.lp_balance
160
- const burnShares = (myShares * liquidityToRemove) / position.lpBalance;
161
- // Calculate PT output for this tick
162
- // pt_out = principal_pt * burn_shares / supply
163
- const ptOut = supply > 0n ? (tickNode.principalPt * burnShares) / supply : 0n;
164
- // Calculate SY output for this tick
165
- // sy_out = principal_sy * burn_shares / supply
166
- const syOut = supply > 0n ? (tickNode.principalSy * burnShares) / supply : 0n;
208
+ const burnShares = isFullRemoval
209
+ ? myShares
210
+ : mulNumberRaw(myShares, numberFromRatioRaw(liquidityToRemove, position.lpBalance));
211
+ if (burnShares > supply) {
212
+ throw invariantError("withdraw burn shares exceed tick supply");
213
+ }
214
+ const ptOut = principalOutForBurn(tickNode.principalPt, burnShares, supply);
215
+ const syOut = principalOutForBurn(tickNode.principalSy, burnShares, supply);
167
216
  totalPtOut += ptOut;
168
217
  totalSyOut += syOut;
169
218
  }
@@ -1 +1 @@
1
- {"version":3,"file":"withdrawLiquidity.js","sourceRoot":"","sources":["../src/withdrawLiquidity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"withdrawLiquidity.js","sourceRoot":"","sources":["../src/withdrawLiquidity.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exponent-labs/market-three-math",
3
- "version": "0.9.16",
3
+ "version": "0.9.18",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "license": "AGPL-3.0",
@@ -10,7 +10,7 @@
10
10
  "test:live": "ts-node examples/test-live-market.ts"
11
11
  },
12
12
  "dependencies": {
13
- "@exponent-labs/exponent-fetcher": "0.9.16",
13
+ "@exponent-labs/exponent-fetcher": "0.9.18",
14
14
  "@solana/web3.js": "^1.95.8"
15
15
  },
16
16
  "devDependencies": {