@haven-fi/solauto-sdk 1.0.528 → 1.0.530

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":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,iBAAiB,EAAE,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAgBD,wBAAsB,WAAW,CAAC,WAAW,EAAE,YAAY,0BAwB1D;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,cAAc,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAmF7B;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO;;GA0B5E"}
1
+ {"version":3,"file":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,iBAAiB,EAAE,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAgBD,wBAAsB,WAAW,CAAC,WAAW,EAAE,YAAY,0BAsB1D;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,cAAc,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAmF7B;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO;;GA0B5E"}
@@ -25,7 +25,7 @@ function createTransactionInstruction(instruction) {
25
25
  async function getJupQuote(swapDetails) {
26
26
  const memecoinSwap = (0, generalUtils_1.tokenInfo)(swapDetails.inputMint).isMeme ||
27
27
  (0, generalUtils_1.tokenInfo)(swapDetails.outputMint).isMeme;
28
- return await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await jupApi.quoteGet({
28
+ return await (0, generalUtils_1.retryWithExponentialBackoff)(async (attemptNum) => await jupApi.quoteGet({
29
29
  amount: Number(swapDetails.amount),
30
30
  inputMint: swapDetails.inputMint.toString(),
31
31
  outputMint: swapDetails.outputMint.toString(),
@@ -35,10 +35,8 @@ async function getJupQuote(swapDetails) {
35
35
  ? "ExactIn"
36
36
  : undefined,
37
37
  slippageBps: memecoinSwap ? 500 : 200,
38
- maxAccounts: !swapDetails.exactOut
39
- ? 15
40
- : undefined,
41
- }), 2, 200);
38
+ maxAccounts: !swapDetails.exactOut ? 15 + attemptNum * 5 : undefined,
39
+ }), 3, 200);
42
40
  }
43
41
  async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
44
42
  const quoteResponse = swapDetails.jupQuote ?? (await getJupQuote(swapDetails));
@@ -46,7 +44,7 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
46
44
  const finalPriceSlippageBps = Math.round(Math.max(50, quoteResponse.slippageBps, priceImpactBps) *
47
45
  (1 + (swapDetails.slippageIncFactor ?? 0)));
48
46
  quoteResponse.slippageBps = finalPriceSlippageBps;
49
- (0, generalUtils_1.consoleLog)(quoteResponse);
47
+ (0, generalUtils_1.consoleLog)("Quote:", quoteResponse);
50
48
  (0, generalUtils_1.consoleLog)("Getting jup instructions...");
51
49
  const instructions = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => {
52
50
  const res = await jupApi.swapInstructionsPost({
@@ -1 +1 @@
1
- {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
@@ -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,EAAgB,MAAM,iBAAiB,CAAC;AAc5E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAqI9C,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;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;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,CA4EjB;AAWD,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAoG5C;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,qBAAqB,EACrC,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CA2B9B;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,cAAc,CAAC,EAAE,qBAAqB,EACtC,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CAqEzB"}
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,EAAgB,MAAM,iBAAiB,CAAC;AAc5E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAqI9C,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;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;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,CA4EjB;AAoDD,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAkG5C;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,qBAAqB,EACrC,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CA2B9B;AA4CD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,cAAc,CAAC,EAAE,qBAAqB,EACtC,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CA2EzB"}
@@ -125,6 +125,25 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
125
125
  targetRateBps,
126
126
  };
127
127
  }
128
+ function postRebalanceLiqUtilizationRateBps(client, values, swapOutputAmount) {
129
+ let supplyUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.supply.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS) +
130
+ (values.dcaTokenType === generated_1.TokenType.Supply ? values.amountUsdToDcaIn : 0);
131
+ let debtUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.debt.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
132
+ const boost = values.rebalanceDirection === generated_1.RebalanceDirection.Boost;
133
+ const outputToken = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(boost
134
+ ? client.solautoPositionState.supply.mint
135
+ : client.solautoPositionState.debt.mint);
136
+ const debtAdjustmentUsdAbs = Math.abs(values.debtAdjustmentUsd);
137
+ const swapOutputUsd = swapOutputAmount
138
+ ? (0, numberUtils_1.fromBaseUnit)(swapOutputAmount, (0, generalUtils_2.tokenInfo)(outputToken).decimals) *
139
+ ((0, priceUtils_1.safeGetPrice)(outputToken) ?? 0)
140
+ : debtAdjustmentUsdAbs;
141
+ supplyUsd = !boost
142
+ ? supplyUsd - debtAdjustmentUsdAbs
143
+ : supplyUsd + swapOutputUsd;
144
+ debtUsd = boost ? debtUsd + debtAdjustmentUsdAbs : debtUsd - swapOutputUsd;
145
+ return (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, client.solautoPositionState?.liqThresholdBps ?? 0);
146
+ }
128
147
  function insufficientLiquidity(amountNeeded, liquidity, tokenDecimals, tokenPrice) {
129
148
  return amountNeeded > (0, numberUtils_1.fromBaseUnit)(liquidity, tokenDecimals) * tokenPrice;
130
149
  }
@@ -166,7 +185,6 @@ async function getFlashLoanRequirements(client, values, attemptNum) {
166
185
  throw new Error(`Need at least ${values.debtAdjustmentUsd / debtPrice} ${(0, generalUtils_2.tokenInfo)(client.debtMint).ticker} or ${values.debtAdjustmentUsd / supplyPrice} ${(0, generalUtils_2.tokenInfo)(client.supplyMint).ticker} to perform the transaction`);
167
186
  }
168
187
  }
169
- // TODO: if not sufficient signer liquidity, throw error with details on how much liquidity is needed and of what token
170
188
  (0, generalUtils_2.consoleLog)("Requires flash loan:", requiresFlashLoan);
171
189
  (0, generalUtils_2.consoleLog)("Use debt liquidity:", useDebtLiquidity);
172
190
  (0, generalUtils_2.consoleLog)("Intermediary liq utilization rate:", tempLiqUtilizationRateBps, `$${supplyUsd}`, `$${debtUsd}`, "Max:", maxLiqUtilizationRateBps);
@@ -195,6 +213,31 @@ function getFlashLoanDetails(client, flRequirements, values, jupQuote) {
195
213
  mint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(flashLoanToken.mint),
196
214
  };
197
215
  }
216
+ async function findSufficientQuote(client, values, jupSwapInput, criteria) {
217
+ let jupQuote;
218
+ let insufficient = false;
219
+ for (let i = 0; i < 5; i++) {
220
+ (0, generalUtils_2.consoleLog)("Finding sufficient quote...");
221
+ jupQuote = await (0, jupiterUtils_1.getJupQuote)(jupSwapInput);
222
+ const outputAmount = parseInt(jupQuote.outAmount);
223
+ const postRebalanceRate = postRebalanceLiqUtilizationRateBps(client, values);
224
+ insufficient = criteria.minOutputAmount
225
+ ? outputAmount < Number(criteria.minOutputAmount)
226
+ : criteria.minLiqUtilizationRateBps
227
+ ? postRebalanceRate < criteria.minLiqUtilizationRateBps
228
+ : postRebalanceRate > criteria.maxLiqUtilizationRateBps;
229
+ if (insufficient) {
230
+ jupSwapInput.amount =
231
+ jupSwapInput.amount +
232
+ BigInt(Math.round(Number(jupSwapInput.amount) * 0.005));
233
+ (0, generalUtils_2.consoleLog)(jupQuote);
234
+ }
235
+ else {
236
+ break;
237
+ }
238
+ }
239
+ return jupQuote;
240
+ }
198
241
  async function getJupSwapRebalanceDetails(client, values, flRequirements, targetLiqUtilizationRateBps, attemptNum) {
199
242
  const input = values.rebalanceDirection === generated_1.RebalanceDirection.Boost
200
243
  ? client.solautoPositionState.debt
@@ -217,6 +260,9 @@ async function getJupSwapRebalanceDetails(client, values, flRequirements, target
217
260
  const exactOut = flashLoanRepayFromDebt && !rebalanceToZero;
218
261
  // || rebalanceToZero
219
262
  const exactIn = !exactOut;
263
+ if (exactIn && rebalanceToZero) {
264
+ inputAmount = inputAmount + BigInt(Math.round(Number(inputAmount) * 0.005));
265
+ }
220
266
  const jupSwapInput = {
221
267
  inputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(input.mint),
222
268
  outputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(output.mint),
@@ -226,13 +272,13 @@ async function getJupSwapRebalanceDetails(client, values, flRequirements, target
226
272
  };
227
273
  (0, generalUtils_2.consoleLog)(jupSwapInput);
228
274
  let jupQuote = undefined;
229
- if (rebalanceToZero) {
230
- do {
231
- jupSwapInput.amount =
232
- jupSwapInput.amount +
233
- BigInt(Math.round(Number(jupSwapInput.amount) * 0.01));
234
- jupQuote = await (0, jupiterUtils_1.getJupQuote)(jupSwapInput);
235
- } while (parseInt(jupQuote.outAmount) < outputAmount);
275
+ if (exactIn && (rebalanceToZero || values.repayingCloseToMaxLtv)) {
276
+ jupQuote = await findSufficientQuote(client, values, jupSwapInput, {
277
+ minOutputAmount: rebalanceToZero ? outputAmount : undefined,
278
+ maxLiqUtilizationRateBps: values.repayingCloseToMaxLtv
279
+ ? (0, numberUtils_1.maxRepayToBps)(client.solautoPositionState?.maxLtvBps ?? 0, client.solautoPositionState?.liqThresholdBps ?? 0)
280
+ : undefined,
281
+ });
236
282
  }
237
283
  const addPadding = exactOut;
238
284
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.528",
3
+ "version": "1.0.530",
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",
@@ -55,7 +55,7 @@ export async function getJupQuote(swapDetails: JupSwapInput) {
55
55
  tokenInfo(swapDetails.outputMint).isMeme;
56
56
 
57
57
  return await retryWithExponentialBackoff(
58
- async () =>
58
+ async (attemptNum: number) =>
59
59
  await jupApi.quoteGet({
60
60
  amount: Number(swapDetails.amount),
61
61
  inputMint: swapDetails.inputMint.toString(),
@@ -66,11 +66,9 @@ export async function getJupQuote(swapDetails: JupSwapInput) {
66
66
  ? "ExactIn"
67
67
  : undefined,
68
68
  slippageBps: memecoinSwap ? 500 : 200,
69
- maxAccounts: !swapDetails.exactOut
70
- ? 15
71
- : undefined,
69
+ maxAccounts: !swapDetails.exactOut ? 15 + attemptNum * 5 : undefined,
72
70
  }),
73
- 2,
71
+ 3,
74
72
  200
75
73
  );
76
74
  }
@@ -99,7 +97,7 @@ export async function getJupSwapTransaction(
99
97
  (1 + (swapDetails.slippageIncFactor ?? 0))
100
98
  );
101
99
  quoteResponse.slippageBps = finalPriceSlippageBps;
102
- consoleLog(quoteResponse);
100
+ consoleLog("Quote:", quoteResponse);
103
101
 
104
102
  consoleLog("Getting jup instructions...");
105
103
  const instructions = await retryWithExponentialBackoff(
@@ -27,7 +27,6 @@ import {
27
27
  fromBaseUnit,
28
28
  getLiqUtilzationRateBps,
29
29
  toBaseUnit,
30
- toBps,
31
30
  } from "../numberUtils";
32
31
  import { getReferralState } from "../accountUtils";
33
32
  import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
@@ -39,7 +38,6 @@ import {
39
38
  import {
40
39
  findMarginfiAccounts,
41
40
  getAllMarginfiAccountsByAuthority,
42
- getMarginfiMaxLtvAndLiqThreshold,
43
41
  } from "../marginfiUtils";
44
42
  import { RebalanceAction, SolautoPositionDetails } from "../../types/solauto";
45
43
  import { fetchTokenPrices } from "../priceUtils";
@@ -260,6 +260,47 @@ export function getRebalanceValues(
260
260
  };
261
261
  }
262
262
 
263
+ function postRebalanceLiqUtilizationRateBps(
264
+ client: SolautoClient,
265
+ values: RebalanceValues,
266
+ swapOutputAmount?: bigint
267
+ ) {
268
+ let supplyUsd =
269
+ fromBaseUnit(
270
+ client.solautoPositionState!.supply.amountUsed.baseAmountUsdValue,
271
+ USD_DECIMALS
272
+ ) +
273
+ (values.dcaTokenType === TokenType.Supply ? values.amountUsdToDcaIn : 0);
274
+ let debtUsd = fromBaseUnit(
275
+ client.solautoPositionState!.debt.amountUsed.baseAmountUsdValue,
276
+ USD_DECIMALS
277
+ );
278
+
279
+ const boost = values.rebalanceDirection === RebalanceDirection.Boost;
280
+
281
+ const outputToken = toWeb3JsPublicKey(
282
+ boost
283
+ ? client.solautoPositionState!.supply.mint
284
+ : client.solautoPositionState!.debt.mint
285
+ );
286
+ const debtAdjustmentUsdAbs = Math.abs(values.debtAdjustmentUsd);
287
+ const swapOutputUsd = swapOutputAmount
288
+ ? fromBaseUnit(swapOutputAmount, tokenInfo(outputToken).decimals) *
289
+ (safeGetPrice(outputToken) ?? 0)
290
+ : debtAdjustmentUsdAbs;
291
+
292
+ supplyUsd = !boost
293
+ ? supplyUsd - debtAdjustmentUsdAbs
294
+ : supplyUsd + swapOutputUsd;
295
+ debtUsd = boost ? debtUsd + debtAdjustmentUsdAbs : debtUsd - swapOutputUsd;
296
+
297
+ return getLiqUtilzationRateBps(
298
+ supplyUsd,
299
+ debtUsd,
300
+ client.solautoPositionState?.liqThresholdBps ?? 0
301
+ );
302
+ }
303
+
263
304
  function insufficientLiquidity(
264
305
  amountNeeded: number,
265
306
  liquidity: bigint,
@@ -316,7 +357,7 @@ export async function getFlashLoanRequirements(
316
357
  const supplyPrice = safeGetPrice(client.supplyMint) ?? 0;
317
358
  const debtPrice = safeGetPrice(client.debtMint) ?? 0;
318
359
  const debtAdjustmentUsd = Math.abs(values.debtAdjustmentUsd);
319
-
360
+
320
361
  const insufficientSupplyLiquidity = insufficientLiquidity(
321
362
  debtAdjustmentUsd,
322
363
  client.supplyLiquidityAvailable(),
@@ -364,8 +405,6 @@ export async function getFlashLoanRequirements(
364
405
  }
365
406
  }
366
407
 
367
- // TODO: if not sufficient signer liquidity, throw error with details on how much liquidity is needed and of what token
368
-
369
408
  consoleLog("Requires flash loan:", requiresFlashLoan);
370
409
  consoleLog("Use debt liquidity:", useDebtLiquidity);
371
410
  consoleLog(
@@ -419,6 +458,48 @@ export function getFlashLoanDetails(
419
458
  };
420
459
  }
421
460
 
461
+ async function findSufficientQuote(
462
+ client: SolautoClient,
463
+ values: RebalanceValues,
464
+ jupSwapInput: JupSwapInput,
465
+ criteria: {
466
+ minOutputAmount?: bigint;
467
+ minLiqUtilizationRateBps?: number;
468
+ maxLiqUtilizationRateBps?: number;
469
+ }
470
+ ): Promise<QuoteResponse> {
471
+ let jupQuote: QuoteResponse;
472
+ let insufficient: boolean = false;
473
+
474
+ for (let i = 0; i < 5; i++) {
475
+ consoleLog("Finding sufficient quote...");
476
+ jupQuote = await getJupQuote(jupSwapInput);
477
+
478
+ const outputAmount = parseInt(jupQuote.outAmount);
479
+ const postRebalanceRate = postRebalanceLiqUtilizationRateBps(
480
+ client,
481
+ values
482
+ );
483
+ insufficient = criteria.minOutputAmount
484
+ ? outputAmount < Number(criteria.minOutputAmount)
485
+ : criteria.minLiqUtilizationRateBps
486
+ ? postRebalanceRate < criteria.minLiqUtilizationRateBps
487
+ : postRebalanceRate > criteria.maxLiqUtilizationRateBps!;
488
+
489
+ if (insufficient) {
490
+ jupSwapInput.amount =
491
+ jupSwapInput.amount +
492
+ BigInt(Math.round(Number(jupSwapInput.amount) * 0.005));
493
+
494
+ consoleLog(jupQuote);
495
+ } else {
496
+ break;
497
+ }
498
+ }
499
+
500
+ return jupQuote!;
501
+ }
502
+
422
503
  export async function getJupSwapRebalanceDetails(
423
504
  client: SolautoClient,
424
505
  values: RebalanceValues,
@@ -464,6 +545,9 @@ export async function getJupSwapRebalanceDetails(
464
545
  // || rebalanceToZero
465
546
  const exactIn = !exactOut;
466
547
 
548
+ if (exactIn && rebalanceToZero) {
549
+ inputAmount = inputAmount + BigInt(Math.round(Number(inputAmount) * 0.005));
550
+ }
467
551
  const jupSwapInput: JupSwapInput = {
468
552
  inputMint: toWeb3JsPublicKey(input.mint),
469
553
  outputMint: toWeb3JsPublicKey(output.mint),
@@ -474,13 +558,16 @@ export async function getJupSwapRebalanceDetails(
474
558
  consoleLog(jupSwapInput);
475
559
 
476
560
  let jupQuote: QuoteResponse | undefined = undefined;
477
- if (rebalanceToZero) {
478
- do {
479
- jupSwapInput.amount =
480
- jupSwapInput.amount +
481
- BigInt(Math.round(Number(jupSwapInput.amount) * 0.01));
482
- jupQuote = await getJupQuote(jupSwapInput);
483
- } while (parseInt(jupQuote.outAmount) < outputAmount);
561
+ if (exactIn && (rebalanceToZero || values.repayingCloseToMaxLtv)) {
562
+ jupQuote = await findSufficientQuote(client, values, jupSwapInput, {
563
+ minOutputAmount: rebalanceToZero ? outputAmount : undefined,
564
+ maxLiqUtilizationRateBps: values.repayingCloseToMaxLtv
565
+ ? maxRepayToBps(
566
+ client.solautoPositionState?.maxLtvBps ?? 0,
567
+ client.solautoPositionState?.liqThresholdBps ?? 0
568
+ )
569
+ : undefined,
570
+ });
484
571
  }
485
572
 
486
573
  const addPadding = exactOut;
@@ -66,7 +66,7 @@ describe("Solauto Marginfi tests", async () => {
66
66
  await client.initialize({
67
67
  signer,
68
68
  positionId,
69
- authority: new PublicKey("7F6v4HWZsyFP6yVFq92HQWygUgoYm5khUX8pXWGLoqUN"),
69
+ authority: new PublicKey("EBhRj7jbF2EVE21i19JSuCX1BAbnZFYhoKW64HnaZ3kf"),
70
70
  // new: true,
71
71
  // marginfiAccount: new PublicKey(
72
72
  // ""
@@ -76,10 +76,6 @@ describe("Solauto Marginfi tests", async () => {
76
76
  // debtMint: new PublicKey(USDC),
77
77
  });
78
78
 
79
- await client.getFreshPositionState();
80
- console.log(fromBaseUnit(client.supplyLiquidityAvailable(), tokenInfo(client.supplyMint).decimals));
81
- console.log(fromBaseUnit(client.debtLiquidityAvailable(), tokenInfo(client.debtMint).decimals));
82
-
83
79
  const transactionItems: TransactionItem[] = [];
84
80
  // const settingParams: SolautoSettingsParametersInpArgs = {
85
81
  // boostToBps: maxBoostToBps(