@haven-fi/solauto-sdk 1.0.434 → 1.0.436

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":"rebalanceUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/rebalanceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,aAAa,EAEb,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAajD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmI9C,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,yBAAyB,GAAG,SAAS,EAC/C,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,2BAA2B,CAAC,EAAE,MAAM,GACnC,eAAe,CAwDjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CA2E9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CA8ChB"}
1
+ {"version":3,"file":"rebalanceUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/rebalanceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,aAAa,EAEb,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAajD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAoI9C,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,yBAAyB,GAAG,SAAS,EAC/C,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,2BAA2B,CAAC,EAAE,MAAM,GACnC,eAAe,CAwDjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CAqF9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CA8ChB"}
@@ -128,10 +128,13 @@ function getFlashLoanDetails(client, values, jupQuote) {
128
128
  (0, generalUtils_2.consoleLog)("Intermediary liq utilization rate:", tempLiqUtilizationRateBps, `$${supplyUsd}`, `$${debtUsd}`, "Max:", maxLiqUtilizationRateBps);
129
129
  let flashLoanToken = undefined;
130
130
  let flashLoanTokenPrice = 0;
131
- const baseUnitAmount = BigInt(parseInt(jupQuote.inAmount));
132
- if (values.rebalanceDirection === generated_1.RebalanceDirection.Boost ||
133
- baseUnitAmount <=
134
- (client.solautoPositionState?.debt.amountCanBeUsed.baseUnit ?? BigInt(0))) {
131
+ const inAmount = BigInt(parseInt(jupQuote.inAmount));
132
+ const outAmount = BigInt(parseInt(jupQuote.outAmount));
133
+ const sufficientDebtLiquidity = debtAdjustmentUsdAbs * 1.1 <=
134
+ (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState?.debt.amountCanBeUsed.baseAmountUsdValue ??
135
+ BigInt(0), generalAccounts_1.USD_DECIMALS);
136
+ const boosting = values.rebalanceDirection === generated_1.RebalanceDirection.Boost;
137
+ if (boosting || sufficientDebtLiquidity) {
135
138
  flashLoanToken = client.solautoPositionState.debt;
136
139
  flashLoanTokenPrice = (0, priceUtils_1.safeGetPrice)(client.debtMint);
137
140
  }
@@ -142,11 +145,13 @@ function getFlashLoanDetails(client, values, jupQuote) {
142
145
  if (jupQuote.swapMode !== "ExactOut" && jupQuote.swapMode !== "ExactIn") {
143
146
  throw new Error("Token ledger swap not currently supported");
144
147
  }
148
+ const useDebtLiquidity = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(flashLoanToken.mint).equals(client.debtMint);
149
+ const baseUnitAmount = boosting || (!boosting && !useDebtLiquidity) ? inAmount : outAmount;
145
150
  return requiresFlashLoan
146
151
  ? {
147
152
  baseUnitAmount,
148
153
  mint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(flashLoanToken.mint),
149
- useDebtLiquidity: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(flashLoanToken.mint).equals(client.debtMint),
154
+ useDebtLiquidity,
150
155
  }
151
156
  : undefined;
152
157
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.434",
3
+ "version": "1.0.436",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "description": "Typescript SDK for the Solauto program on the Solana blockchain",
@@ -30,6 +30,7 @@ import {
30
30
  import { USD_DECIMALS } from "../../constants/generalAccounts";
31
31
  import { RebalanceAction } from "../../types";
32
32
  import { safeGetPrice } from "../priceUtils";
33
+ import { TOKEN_INFO } from "../../constants";
33
34
 
34
35
  function getAdditionalAmountToDcaIn(dca: DCASettings): number {
35
36
  if (dca.dcaInBaseUnit === BigInt(0)) {
@@ -294,13 +295,19 @@ export function getFlashLoanDetails(
294
295
  let flashLoanToken: PositionTokenUsage | undefined = undefined;
295
296
  let flashLoanTokenPrice = 0;
296
297
 
297
- const baseUnitAmount = BigInt(parseInt(jupQuote.inAmount));
298
+ const inAmount = BigInt(parseInt(jupQuote.inAmount));
299
+ const outAmount = BigInt(parseInt(jupQuote.outAmount));
298
300
 
299
- if (
300
- values.rebalanceDirection === RebalanceDirection.Boost ||
301
- baseUnitAmount <=
302
- (client.solautoPositionState?.debt.amountCanBeUsed.baseUnit ?? BigInt(0))
303
- ) {
301
+ const sufficientDebtLiquidity =
302
+ debtAdjustmentUsdAbs * 1.1 <=
303
+ fromBaseUnit(
304
+ client.solautoPositionState?.debt.amountCanBeUsed.baseAmountUsdValue ??
305
+ BigInt(0),
306
+ USD_DECIMALS
307
+ );
308
+
309
+ const boosting = values.rebalanceDirection === RebalanceDirection.Boost;
310
+ if (boosting || sufficientDebtLiquidity) {
304
311
  flashLoanToken = client.solautoPositionState!.debt;
305
312
  flashLoanTokenPrice = safeGetPrice(client.debtMint)!;
306
313
  } else {
@@ -312,13 +319,17 @@ export function getFlashLoanDetails(
312
319
  throw new Error("Token ledger swap not currently supported");
313
320
  }
314
321
 
322
+ const useDebtLiquidity = toWeb3JsPublicKey(flashLoanToken.mint).equals(
323
+ client.debtMint
324
+ );
325
+ const baseUnitAmount =
326
+ boosting || (!boosting && !useDebtLiquidity) ? inAmount : outAmount;
327
+
315
328
  return requiresFlashLoan
316
329
  ? {
317
330
  baseUnitAmount,
318
331
  mint: toWeb3JsPublicKey(flashLoanToken.mint),
319
- useDebtLiquidity: toWeb3JsPublicKey(flashLoanToken.mint).equals(
320
- client.debtMint
321
- ),
332
+ useDebtLiquidity,
322
333
  }
323
334
  : undefined;
324
335
  }