@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.
- package/CHANGELOG.md +4 -0
- package/build/addLiquidity.d.ts +11 -41
- package/build/addLiquidity.js +161 -192
- package/build/addLiquidity.js.map +1 -1
- package/build/existingPositionEqualization.d.ts +3 -3
- package/build/existingPositionEqualization.js +42 -62
- package/build/existingPositionEqualization.js.map +1 -1
- package/build/index.d.ts +2 -2
- package/build/index.js +1 -3
- package/build/index.js.map +1 -1
- package/build/swap.js +1 -0
- package/build/swap.js.map +1 -1
- package/build/swapV2.js +54 -17
- package/build/swapV2.js.map +1 -1
- package/build/types.d.ts +4 -21
- package/build/utilsV2.js +4 -3
- package/build/utilsV2.js.map +1 -1
- package/build/withdrawLiquidity.d.ts +1 -1
- package/build/withdrawLiquidity.js +119 -70
- package/build/withdrawLiquidity.js.map +1 -1
- package/package.json +2 -2
- package/src/addLiquidity.ts +203 -246
- package/src/existingPositionEqualization.test.ts +29 -0
- package/src/existingPositionEqualization.ts +52 -83
- package/src/index.ts +0 -4
- package/src/swap.ts +1 -0
- package/src/swapV2.ts +96 -18
- package/src/types.ts +4 -23
- package/src/utilsV2.ts +7 -4
- package/src/withdrawLiquidity.test.ts +189 -0
- package/src/withdrawLiquidity.ts +148 -89
|
@@ -1,9 +1,74 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getPtAndSyOnWithdrawLiquidity = getPtAndSyOnWithdrawLiquidity;
|
|
4
|
-
const
|
|
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
|
-
|
|
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
|
|
29
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
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
|
|
154
|
-
if (!tickNode) {
|
|
155
|
-
continue;
|
|
156
|
-
}
|
|
206
|
+
const tickNode = getTickByIndex(ticks, share.tickIdx);
|
|
157
207
|
const supply = tickNode.principalShareSupply;
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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":";;
|
|
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.
|
|
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.
|
|
13
|
+
"@exponent-labs/exponent-fetcher": "0.9.18",
|
|
14
14
|
"@solana/web3.js": "^1.95.8"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|