@haven-fi/solauto-sdk 1.0.158 → 1.0.160

Sign up to get free protection for your applications and to get access to all the features.
@@ -336,7 +336,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
336
336
  : undefined,
337
337
  rebalanceType,
338
338
  targetLiqUtilizationRateBps: targetLiqUtilizationRateBps ?? null,
339
- targetInAmountBaseUnit: targetLiqUtilizationRateBps
339
+ targetInAmountBaseUnit: targetLiqUtilizationRateBps && rebalanceStep === "A"
340
340
  ? swapDetails.amount
341
341
  : null,
342
342
  limitGapBps: limitGapBps ?? null,
@@ -157,7 +157,7 @@ async function sendSingleOptimizedTransaction(umi, connection, tx, txType, attem
157
157
  if (txType !== "skip-simulation") {
158
158
  // TODO: we should only retry simulation if it's not a solauto error
159
159
  const simulationResult = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await simulateTransaction(connection, (0, umi_web3js_adapters_1.toWeb3JsTransaction)(await (await assembleFinalTransaction(umi.identity, tx, feeEstimate, 1400000).setLatestBlockhash(umi)).build(umi))), 3);
160
- const computeUnitLimit = Math.round(simulationResult.value.unitsConsumed * 1.1);
160
+ const computeUnitLimit = Math.round(simulationResult.value.unitsConsumed * 1.2);
161
161
  console.log("Compute unit limit: ", computeUnitLimit);
162
162
  }
163
163
  if (txType !== "only-simulate") {
@@ -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,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAgJjD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;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,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CAiEjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,EACvB,cAAc,EAAE,MAAM,GACrB,gBAAgB,GAAG,SAAS,CAmE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAqChB"}
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,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA8IjD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;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,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CAiEjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,EACvB,cAAc,EAAE,MAAM,GACrB,gBAAgB,GAAG,SAAS,CAoE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAsChB"}
@@ -111,11 +111,12 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
111
111
  debtAdjustmentUsd,
112
112
  amountToDcaIn: amountToDcaIn ?? 0,
113
113
  amountUsdToDcaIn,
114
- dcaTokenType: dca?.tokenType
114
+ dcaTokenType: dca?.tokenType,
115
115
  };
116
116
  }
117
117
  function getFlashLoanDetails(client, values, jupQuote, priceImpactBps) {
118
- let supplyUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.supply.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS) + (values.dcaTokenType === generated_1.TokenType.Supply ? values.amountUsdToDcaIn : 0);
118
+ let supplyUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.supply.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS) +
119
+ (values.dcaTokenType === generated_1.TokenType.Supply ? values.amountUsdToDcaIn : 0);
119
120
  let debtUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.debt.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
120
121
  const debtAdjustmentWithSlippage = Math.abs(values.debtAdjustmentUsd) +
121
122
  Math.abs(values.debtAdjustmentUsd) * (0, numberUtils_1.fromBps)(priceImpactBps);
@@ -141,7 +142,8 @@ function getFlashLoanDetails(client, values, jupQuote, priceImpactBps) {
141
142
  flashLoanToken = client.solautoPositionState.supply;
142
143
  flashLoanTokenPrice = (0, generalUtils_2.safeGetPrice)(client.supplyMint);
143
144
  }
144
- const exactAmountBaseUnit = jupQuote && jupQuote.swapMode === "ExactOut"
145
+ const exactAmountBaseUnit = jupQuote &&
146
+ (jupQuote.swapMode === "ExactOut" || jupQuote.swapMode === "ExactIn")
145
147
  ? BigInt(parseInt(jupQuote.inAmount))
146
148
  : undefined;
147
149
  return requiresFlashLoan
@@ -161,7 +163,8 @@ function getJupSwapRebalanceDetails(client, values, targetLiqUtilizationRateBps,
161
163
  const output = values.increasingLeverage
162
164
  ? client.solautoPositionState.supply
163
165
  : client.solautoPositionState.debt;
164
- const usdToSwap = Math.abs(values.debtAdjustmentUsd) + (values.dcaTokenType === generated_1.TokenType.Debt ? values.amountUsdToDcaIn : 0);
166
+ const usdToSwap = Math.abs(values.debtAdjustmentUsd) +
167
+ (values.dcaTokenType === generated_1.TokenType.Debt ? values.amountUsdToDcaIn : 0);
165
168
  const inputPrice = values.increasingLeverage
166
169
  ? (0, generalUtils_2.safeGetPrice)(client.debtMint)
167
170
  : (0, generalUtils_2.safeGetPrice)(client.supplyMint);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.158",
3
+ "version": "1.0.160",
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",
@@ -517,7 +517,7 @@ export class SolautoMarginfiClient extends SolautoClient {
517
517
  : undefined,
518
518
  rebalanceType,
519
519
  targetLiqUtilizationRateBps: targetLiqUtilizationRateBps ?? null,
520
- targetInAmountBaseUnit: targetLiqUtilizationRateBps
520
+ targetInAmountBaseUnit: targetLiqUtilizationRateBps && rebalanceStep === "A"
521
521
  ? swapDetails.amount
522
522
  : null,
523
523
  limitGapBps: limitGapBps ?? null,
@@ -309,7 +309,7 @@ export async function sendSingleOptimizedTransaction(
309
309
  );
310
310
 
311
311
  const computeUnitLimit = Math.round(
312
- simulationResult.value.unitsConsumed! * 1.1
312
+ simulationResult.value.unitsConsumed! * 1.2
313
313
  );
314
314
  console.log("Compute unit limit: ", computeUnitLimit);
315
315
  }
@@ -26,9 +26,7 @@ import {
26
26
  toBaseUnit,
27
27
  } from "../numberUtils";
28
28
  import { USD_DECIMALS } from "../../constants/generalAccounts";
29
- import {
30
- DEFAULT_LIMIT_GAP_BPS,
31
- } from "../../constants/solautoConstants";
29
+ import { DEFAULT_LIMIT_GAP_BPS } from "../../constants/solautoConstants";
32
30
 
33
31
  function getAdditionalAmountToDcaIn(dca: DCASettings): number {
34
32
  if (dca.dcaInBaseUnit === BigInt(0)) {
@@ -125,7 +123,7 @@ function getTargetRateAndDcaAmount(
125
123
  dca: DCASettings | undefined,
126
124
  currentUnixTime: number,
127
125
  targetLiqUtilizationRateBps?: number
128
- ): { targetRateBps: number; amountToDcaIn?: number; } {
126
+ ): { targetRateBps: number; amountToDcaIn?: number } {
129
127
  if (targetLiqUtilizationRateBps !== undefined) {
130
128
  return {
131
129
  targetRateBps: targetLiqUtilizationRateBps,
@@ -238,7 +236,7 @@ export function getRebalanceValues(
238
236
  debtAdjustmentUsd,
239
237
  amountToDcaIn: amountToDcaIn ?? 0,
240
238
  amountUsdToDcaIn,
241
- dcaTokenType: dca?.tokenType
239
+ dcaTokenType: dca?.tokenType,
242
240
  };
243
241
  }
244
242
 
@@ -253,10 +251,12 @@ export function getFlashLoanDetails(
253
251
  jupQuote: QuoteResponse,
254
252
  priceImpactBps: number
255
253
  ): FlashLoanDetails | undefined {
256
- let supplyUsd = fromBaseUnit(
257
- client.solautoPositionState!.supply.amountUsed.baseAmountUsdValue,
258
- USD_DECIMALS
259
- ) + (values.dcaTokenType === TokenType.Supply ? values.amountUsdToDcaIn : 0);
254
+ let supplyUsd =
255
+ fromBaseUnit(
256
+ client.solautoPositionState!.supply.amountUsed.baseAmountUsdValue,
257
+ USD_DECIMALS
258
+ ) +
259
+ (values.dcaTokenType === TokenType.Supply ? values.amountUsdToDcaIn : 0);
260
260
  let debtUsd = fromBaseUnit(
261
261
  client.solautoPositionState!.debt.amountUsed.baseAmountUsdValue,
262
262
  USD_DECIMALS
@@ -299,7 +299,8 @@ export function getFlashLoanDetails(
299
299
  }
300
300
 
301
301
  const exactAmountBaseUnit =
302
- jupQuote && jupQuote.swapMode === "ExactOut"
302
+ jupQuote &&
303
+ (jupQuote.swapMode === "ExactOut" || jupQuote.swapMode === "ExactIn")
303
304
  ? BigInt(parseInt(jupQuote.inAmount))
304
305
  : undefined;
305
306
 
@@ -308,9 +309,7 @@ export function getFlashLoanDetails(
308
309
  baseUnitAmount: exactAmountBaseUnit
309
310
  ? exactAmountBaseUnit +
310
311
  BigInt(
311
- Math.round(
312
- Number(exactAmountBaseUnit) * fromBps(priceImpactBps)
313
- )
312
+ Math.round(Number(exactAmountBaseUnit) * fromBps(priceImpactBps))
314
313
  )
315
314
  : toBaseUnit(
316
315
  debtAdjustmentWithSlippage / flashLoanTokenPrice,
@@ -335,7 +334,8 @@ export function getJupSwapRebalanceDetails(
335
334
  : client.solautoPositionState!.debt;
336
335
 
337
336
  const usdToSwap =
338
- Math.abs(values.debtAdjustmentUsd) + (values.dcaTokenType === TokenType.Debt ? values.amountUsdToDcaIn : 0);
337
+ Math.abs(values.debtAdjustmentUsd) +
338
+ (values.dcaTokenType === TokenType.Debt ? values.amountUsdToDcaIn : 0);
339
339
 
340
340
  const inputPrice = values.increasingLeverage
341
341
  ? safeGetPrice(client.debtMint)