@liquid-af/sdk 0.10.1 → 0.10.2

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 +1 @@
1
- {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/helpers/preview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/helpers/preview.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,23 @@ import { BPS_DENOMINATOR } from "../math/constants.js";
7
7
  import { calculateVirtualSolReserves } from "../oracle.js";
8
8
  import { getAccount, getMint } from "@solana/spl-token";
9
9
  import { calculateFeesForPool } from "../math/tiered-fees.js";
10
+ /**
11
+ * Computes price impact in basis points using cross-multiplication to avoid
12
+ * intermediate truncation to zero that occurs with small quote / large token
13
+ * reserves (e.g. stable curves with USDC).
14
+ *
15
+ * Formula: |Q_after * T_before - Q_before * T_after| * BPS / (Q_before * T_after)
16
+ */
17
+ function calculatePriceImpactBps(quoteBefore, tokenBefore, quoteAfter, tokenAfter) {
18
+ const denominator = quoteBefore.mul(tokenAfter);
19
+ if (denominator.isZero())
20
+ return 0;
21
+ const numerator = quoteAfter
22
+ .mul(tokenBefore)
23
+ .sub(quoteBefore.mul(tokenAfter))
24
+ .abs();
25
+ return numerator.mul(new BN(BPS_DENOMINATOR)).div(denominator).toNumber();
26
+ }
10
27
  /**
11
28
  * Previews a buy on the bonding curve from pre-fetched state. The function executes offline using the state being passed in.
12
29
  *
@@ -24,17 +41,7 @@ export function calculateBuyCurvePreview(amountInQuote, state, options) {
24
41
  traderReferralBps: globalConfig.traderReferralRewardBasisPoints,
25
42
  };
26
43
  const result = calculateBuyExpectation(amountInQuote, bondingCurve, feeConfig, options?.hasCreatorRef ?? false, options?.hasTraderRef ?? false);
27
- const priceBefore = bondingCurve.virtualQuoteReserves
28
- .mul(new BN(BPS_DENOMINATOR))
29
- .div(bondingCurve.virtualTokenReserves);
30
- const priceAfter = result.newVirtualQuote
31
- .mul(new BN(BPS_DENOMINATOR))
32
- .div(result.newVirtualToken);
33
- const priceImpactBps = priceAfter
34
- .sub(priceBefore)
35
- .mul(new BN(BPS_DENOMINATOR))
36
- .div(priceBefore)
37
- .toNumber();
44
+ const priceImpactBps = calculatePriceImpactBps(bondingCurve.virtualQuoteReserves, bondingCurve.virtualTokenReserves, result.newVirtualQuote, result.newVirtualToken);
38
45
  const willComplete = result.tokensOut.gte(bondingCurve.realTokenReserves);
39
46
  return {
40
47
  tokensOut: result.tokensOut,
@@ -70,17 +77,7 @@ export function calculateSellCurvePreview(amountInTokens, state, options) {
70
77
  traderReferralBps: globalConfig.traderReferralRewardBasisPoints,
71
78
  };
72
79
  const result = calculateSellExpectation(amountInTokens, bondingCurve, feeConfig, options?.hasCreatorRef ?? false, options?.hasTraderRef ?? false);
73
- const priceBefore = bondingCurve.virtualQuoteReserves
74
- .mul(new BN(BPS_DENOMINATOR))
75
- .div(bondingCurve.virtualTokenReserves);
76
- const priceAfter = result.newVirtualQuote
77
- .mul(new BN(BPS_DENOMINATOR))
78
- .div(result.newVirtualToken);
79
- const priceImpactBps = priceBefore
80
- .sub(priceAfter)
81
- .mul(new BN(BPS_DENOMINATOR))
82
- .div(priceBefore)
83
- .toNumber();
80
+ const priceImpactBps = calculatePriceImpactBps(bondingCurve.virtualQuoteReserves, bondingCurve.virtualTokenReserves, result.newVirtualQuote, result.newVirtualToken);
84
81
  return {
85
82
  quoteOut: result.quoteOutGross,
86
83
  quoteOutNet: result.quoteOutNet,
@@ -112,19 +109,7 @@ export function calculateSwapBuyPreview(amountOut, state) {
112
109
  creatorFeeRate: ammConfig.creatorFeeRate,
113
110
  protocolFeeRate: ammConfig.protocolFeeRate,
114
111
  });
115
- const priceBefore = quoteVaultBalance
116
- .mul(new BN(BPS_DENOMINATOR))
117
- .div(baseVaultBalance);
118
- const newBaseVault = baseVaultBalance.sub(amountOut);
119
- const newQuoteVault = quoteVaultBalance.add(result.quoteInGross);
120
- const priceAfter = newQuoteVault
121
- .mul(new BN(BPS_DENOMINATOR))
122
- .div(newBaseVault);
123
- const priceImpactBps = priceAfter
124
- .sub(priceBefore)
125
- .mul(new BN(BPS_DENOMINATOR))
126
- .div(priceBefore)
127
- .toNumber();
112
+ const priceImpactBps = calculatePriceImpactBps(quoteVaultBalance, baseVaultBalance, quoteVaultBalance.add(result.quoteInGross), baseVaultBalance.sub(amountOut));
128
113
  return {
129
114
  amountOut: result.quoteInGross,
130
115
  amountOutNet: result.quoteIn,
@@ -151,19 +136,7 @@ export function calculateSwapSellPreview(amountIn, state) {
151
136
  creatorFeeRate: ammConfig.creatorFeeRate,
152
137
  protocolFeeRate: ammConfig.protocolFeeRate,
153
138
  });
154
- const priceBefore = quoteVaultBalance
155
- .mul(new BN(BPS_DENOMINATOR))
156
- .div(baseVaultBalance);
157
- const newBaseVault = baseVaultBalance.add(amountIn);
158
- const newQuoteVault = quoteVaultBalance.sub(result.quoteOut);
159
- const priceAfter = newQuoteVault
160
- .mul(new BN(BPS_DENOMINATOR))
161
- .div(newBaseVault);
162
- const priceImpactBps = priceBefore
163
- .sub(priceAfter)
164
- .mul(new BN(BPS_DENOMINATOR))
165
- .div(priceBefore)
166
- .toNumber();
139
+ const priceImpactBps = calculatePriceImpactBps(quoteVaultBalance, baseVaultBalance, quoteVaultBalance.sub(result.quoteOut), baseVaultBalance.add(amountIn));
167
140
  return {
168
141
  amountOut: result.quoteOut,
169
142
  amountOutNet: result.quoteOutNet,
@@ -1 +1 @@
1
- {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/helpers/preview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/helpers/preview.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liquid-af/sdk",
3
- "version": "0.10.1",
3
+ "version": "0.10.2",
4
4
  "description": "TypeScript SDK for the Liquid DeFi protocol on Solana",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -22,6 +22,28 @@ import { calculateVirtualSolReserves } from "../oracle.js";
22
22
  import { getAccount, getMint } from "@solana/spl-token";
23
23
  import { calculateFeesForPool } from "../math/tiered-fees.js";
24
24
 
25
+ /**
26
+ * Computes price impact in basis points using cross-multiplication to avoid
27
+ * intermediate truncation to zero that occurs with small quote / large token
28
+ * reserves (e.g. stable curves with USDC).
29
+ *
30
+ * Formula: |Q_after * T_before - Q_before * T_after| * BPS / (Q_before * T_after)
31
+ */
32
+ function calculatePriceImpactBps(
33
+ quoteBefore: BN,
34
+ tokenBefore: BN,
35
+ quoteAfter: BN,
36
+ tokenAfter: BN,
37
+ ): number {
38
+ const denominator = quoteBefore.mul(tokenAfter);
39
+ if (denominator.isZero()) return 0;
40
+ const numerator = quoteAfter
41
+ .mul(tokenBefore)
42
+ .sub(quoteBefore.mul(tokenAfter))
43
+ .abs();
44
+ return numerator.mul(new BN(BPS_DENOMINATOR)).div(denominator).toNumber();
45
+ }
46
+
25
47
  /** State needed for bonding curve preview calculations (pure math, no I/O). */
26
48
  export interface CurvePreviewState {
27
49
  globalConfig: {
@@ -179,17 +201,12 @@ export function calculateBuyCurvePreview(
179
201
  options?.hasTraderRef ?? false,
180
202
  );
181
203
 
182
- const priceBefore = bondingCurve.virtualQuoteReserves
183
- .mul(new BN(BPS_DENOMINATOR))
184
- .div(bondingCurve.virtualTokenReserves);
185
- const priceAfter = result.newVirtualQuote
186
- .mul(new BN(BPS_DENOMINATOR))
187
- .div(result.newVirtualToken);
188
- const priceImpactBps = priceAfter
189
- .sub(priceBefore)
190
- .mul(new BN(BPS_DENOMINATOR))
191
- .div(priceBefore)
192
- .toNumber();
204
+ const priceImpactBps = calculatePriceImpactBps(
205
+ bondingCurve.virtualQuoteReserves,
206
+ bondingCurve.virtualTokenReserves,
207
+ result.newVirtualQuote,
208
+ result.newVirtualToken,
209
+ );
193
210
 
194
211
  const willComplete = result.tokensOut.gte(bondingCurve.realTokenReserves);
195
212
 
@@ -241,17 +258,12 @@ export function calculateSellCurvePreview(
241
258
  options?.hasTraderRef ?? false,
242
259
  );
243
260
 
244
- const priceBefore = bondingCurve.virtualQuoteReserves
245
- .mul(new BN(BPS_DENOMINATOR))
246
- .div(bondingCurve.virtualTokenReserves);
247
- const priceAfter = result.newVirtualQuote
248
- .mul(new BN(BPS_DENOMINATOR))
249
- .div(result.newVirtualToken);
250
- const priceImpactBps = priceBefore
251
- .sub(priceAfter)
252
- .mul(new BN(BPS_DENOMINATOR))
253
- .div(priceBefore)
254
- .toNumber();
261
+ const priceImpactBps = calculatePriceImpactBps(
262
+ bondingCurve.virtualQuoteReserves,
263
+ bondingCurve.virtualTokenReserves,
264
+ result.newVirtualQuote,
265
+ result.newVirtualToken,
266
+ );
255
267
 
256
268
  return {
257
269
  quoteOut: result.quoteOutGross,
@@ -295,19 +307,12 @@ export function calculateSwapBuyPreview(
295
307
  },
296
308
  );
297
309
 
298
- const priceBefore = quoteVaultBalance
299
- .mul(new BN(BPS_DENOMINATOR))
300
- .div(baseVaultBalance);
301
- const newBaseVault = baseVaultBalance.sub(amountOut);
302
- const newQuoteVault = quoteVaultBalance.add(result.quoteInGross);
303
- const priceAfter = newQuoteVault
304
- .mul(new BN(BPS_DENOMINATOR))
305
- .div(newBaseVault);
306
- const priceImpactBps = priceAfter
307
- .sub(priceBefore)
308
- .mul(new BN(BPS_DENOMINATOR))
309
- .div(priceBefore)
310
- .toNumber();
310
+ const priceImpactBps = calculatePriceImpactBps(
311
+ quoteVaultBalance,
312
+ baseVaultBalance,
313
+ quoteVaultBalance.add(result.quoteInGross),
314
+ baseVaultBalance.sub(amountOut),
315
+ );
311
316
 
312
317
  return {
313
318
  amountOut: result.quoteInGross,
@@ -346,19 +351,12 @@ export function calculateSwapSellPreview(
346
351
  },
347
352
  );
348
353
 
349
- const priceBefore = quoteVaultBalance
350
- .mul(new BN(BPS_DENOMINATOR))
351
- .div(baseVaultBalance);
352
- const newBaseVault = baseVaultBalance.add(amountIn);
353
- const newQuoteVault = quoteVaultBalance.sub(result.quoteOut);
354
- const priceAfter = newQuoteVault
355
- .mul(new BN(BPS_DENOMINATOR))
356
- .div(newBaseVault);
357
- const priceImpactBps = priceBefore
358
- .sub(priceAfter)
359
- .mul(new BN(BPS_DENOMINATOR))
360
- .div(priceBefore)
361
- .toNumber();
354
+ const priceImpactBps = calculatePriceImpactBps(
355
+ quoteVaultBalance,
356
+ baseVaultBalance,
357
+ quoteVaultBalance.sub(result.quoteOut),
358
+ baseVaultBalance.add(amountIn),
359
+ );
362
360
 
363
361
  return {
364
362
  amountOut: result.quoteOut,