@haven-fi/solauto-sdk 1.0.539 → 1.0.541

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":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAoBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAuCzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA6LjD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAoH7B;AA2LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,aAAa,oBAsDtB;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAyI5C;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsC5C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO;;;;EA0G/B"}
1
+ {"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAoBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAuCzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA6LjD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAoH7B;AA2LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,aAAa,oBAsDtB;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsI5C;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsC5C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO;;;;EA0G/B"}
@@ -375,7 +375,7 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
375
375
  client.log("Rebalance values: ", values);
376
376
  const flRequirements = await (0, rebalanceUtils_1.getFlashLoanRequirements)(client, values, attemptNum);
377
377
  const swapDetails = await (0, rebalanceUtils_1.getJupSwapRebalanceDetails)(client, values, flRequirements, targetLiqUtilizationRateBps, attemptNum);
378
- const { jupQuote, lookupTableAddresses, setupInstructions, tokenLedgerIx, swapIx, } = await (0, jupiterUtils_1.getJupSwapTransaction)(client.signer, swapDetails, attemptNum);
378
+ const { jupQuote, lookupTableAddresses, setupInstructions, swapIx, } = await (0, jupiterUtils_1.getJupSwapTransaction)(client.signer, swapDetails, attemptNum);
379
379
  const flashLoan = flRequirements
380
380
  ? (0, rebalanceUtils_1.getFlashLoanDetails)(client, flRequirements, values, jupQuote)
381
381
  : undefined;
@@ -401,7 +401,6 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
401
401
  : (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(client.signer.publicKey), rebalanceThenSwap ? swapDetails.outputMint : swapDetails.inputMint);
402
402
  tx = tx.add([
403
403
  setupInstructions,
404
- tokenLedgerIx,
405
404
  client.flashBorrow(rebalanceType, flashLoan, flashBorrowDest),
406
405
  ...(addFirstRebalance ? [firstRebalance] : []),
407
406
  ...(rebalanceThenSwap
@@ -414,7 +413,6 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
414
413
  const rebalanceType = generated_1.SolautoRebalanceType.Regular;
415
414
  tx = tx.add([
416
415
  setupInstructions,
417
- tokenLedgerIx,
418
416
  client.rebalance("A", jupQuote, rebalanceType, values, undefined, targetLiqUtilizationRateBps),
419
417
  swapIx,
420
418
  client.rebalance("B", jupQuote, rebalanceType, values, undefined, targetLiqUtilizationRateBps),
@@ -20,11 +20,11 @@ export interface JupSwapTransaction {
20
20
  priceImpactBps: number;
21
21
  lookupTableAddresses: string[];
22
22
  setupInstructions: TransactionBuilder;
23
- tokenLedgerIx: TransactionBuilder;
23
+ tokenLedgerIx?: TransactionBuilder;
24
24
  swapIx: TransactionBuilder;
25
25
  }
26
26
  export declare function getJupSwapTransaction(signer: Signer, swapDetails: JupSwapDetails, attemptNum?: number): Promise<JupSwapTransaction>;
27
- export declare function getJupPriceData(mints: PublicKey[], extraInfo?: boolean, mayIncludeSpamTokens?: boolean): Promise<{
27
+ export declare function getJupPriceData(mints: PublicKey[], mayIncludeSpamTokens?: boolean): Promise<{
28
28
  [key: string]: any;
29
29
  }>;
30
30
  //# sourceMappingURL=jupiterUtils.d.ts.map
@@ -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,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,EAAE,oBAAoB,CAAC,EAAE,OAAO;;GA6B5G"}
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,CAAC,EAAE,kBAAkB,CAAC;IACnC,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,CAoF7B;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,SAAS,EAAE,EAClB,oBAAoB,CAAC,EAAE,OAAO;;GAwC/B"}
@@ -79,17 +79,17 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
79
79
  priceImpactBps: finalPriceImpactBps,
80
80
  lookupTableAddresses: instructions.addressLookupTableAddresses,
81
81
  setupInstructions: (0, umi_1.transactionBuilder)().add((instructions.setupInstructions ?? []).map((ix) => (0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(ix)))),
82
- tokenLedgerIx: (0, umi_1.transactionBuilder)().add(instructions.tokenLedgerInstruction !== undefined
83
- ? (0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(instructions.tokenLedgerInstruction))
84
- : (0, umi_1.transactionBuilder)()),
82
+ tokenLedgerIx: instructions.tokenLedgerInstruction !== undefined
83
+ ? (0, umi_1.transactionBuilder)().add((0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(instructions.tokenLedgerInstruction)))
84
+ : undefined,
85
85
  swapIx: (0, umi_1.transactionBuilder)().add((0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(instructions.swapInstruction))),
86
86
  };
87
87
  }
88
- async function getJupPriceData(mints, extraInfo, mayIncludeSpamTokens) {
88
+ async function getJupPriceData(mints, mayIncludeSpamTokens) {
89
89
  const data = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => {
90
90
  const res = await (await fetch("https://api.jup.ag/price/v2?ids=" +
91
91
  mints.map((x) => x.toString()).join(",") +
92
- (extraInfo ? "&showExtraInfo=true" : ""))).json();
92
+ "&showExtraInfo=true")).json();
93
93
  const result = res.data;
94
94
  if (!result || result === null || typeof result !== "object") {
95
95
  throw new Error("Failed to get token prices using Jupiter");
@@ -101,7 +101,10 @@ async function getJupPriceData(mints, extraInfo, mayIncludeSpamTokens) {
101
101
  if (invalidValues && !mayIncludeSpamTokens) {
102
102
  throw new Error("Invalid price values");
103
103
  }
104
- return result;
104
+ const trueData = Object.entries(result).reduce((acc, [key, val]) => val.extraInfo?.quotedPrice?.sellAt === null
105
+ ? { ...acc, [key]: { ...val, price: "0" } }
106
+ : { ...acc, [key]: val }, {});
107
+ return trueData;
105
108
  }, 8);
106
109
  return data;
107
110
  }
@@ -122,7 +122,7 @@ async function getJupTokenPrices(mints, mayIncludeSpamTokens) {
122
122
  if (mints.length == 0) {
123
123
  return [];
124
124
  }
125
- const data = await (0, jupiterUtils_1.getJupPriceData)(mints, false, mayIncludeSpamTokens);
125
+ const data = await (0, jupiterUtils_1.getJupPriceData)(mints, mayIncludeSpamTokens);
126
126
  const sortedData = {};
127
127
  for (const mint of mints) {
128
128
  const key = mint.toString();
@@ -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;AAiB5E,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,CAqEjB;AA6CD,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,CA8F5C;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,CA4EzB"}
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;AAiB5E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAkI9C,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,CAqEjB;AA6CD,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,CA8F5C;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,CA4EzB"}
@@ -23,12 +23,10 @@ function getAdditionalAmountToDcaIn(dca) {
23
23
  }
24
24
  function getStandardTargetLiqUtilizationRateBps(state, settings) {
25
25
  const adjustedSettings = (0, generalUtils_1.getAdjustedSettingsFromAutomation)(settings, (0, generalUtils_2.currentUnixSeconds)());
26
- const repayFrom = settings.repayToBps + settings.repayGap;
27
- const boostFrom = adjustedSettings.boostToBps - settings.boostGap;
28
- if (state.liqUtilizationRateBps <= boostFrom) {
26
+ if (state.liqUtilizationRateBps < adjustedSettings.boostToBps) {
29
27
  return adjustedSettings.boostToBps;
30
28
  }
31
- else if (state.liqUtilizationRateBps >= repayFrom) {
29
+ else if (state.liqUtilizationRateBps > settings.repayToBps) {
32
30
  return adjustedSettings.repayToBps;
33
31
  }
34
32
  else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.539",
3
+ "version": "1.0.541",
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",
@@ -707,7 +707,6 @@ export async function buildSolautoRebalanceTransaction(
707
707
  jupQuote,
708
708
  lookupTableAddresses,
709
709
  setupInstructions,
710
- tokenLedgerIx,
711
710
  swapIx,
712
711
  } = await getJupSwapTransaction(client.signer, swapDetails, attemptNum);
713
712
 
@@ -762,7 +761,6 @@ export async function buildSolautoRebalanceTransaction(
762
761
 
763
762
  tx = tx.add([
764
763
  setupInstructions,
765
- tokenLedgerIx,
766
764
  client.flashBorrow(rebalanceType, flashLoan, flashBorrowDest),
767
765
  ...(addFirstRebalance ? [firstRebalance] : []),
768
766
  ...(rebalanceThenSwap
@@ -774,7 +772,6 @@ export async function buildSolautoRebalanceTransaction(
774
772
  const rebalanceType = SolautoRebalanceType.Regular;
775
773
  tx = tx.add([
776
774
  setupInstructions,
777
- tokenLedgerIx,
778
775
  client.rebalance(
779
776
  "A",
780
777
  jupQuote,
@@ -78,7 +78,7 @@ export interface JupSwapTransaction {
78
78
  priceImpactBps: number;
79
79
  lookupTableAddresses: string[];
80
80
  setupInstructions: TransactionBuilder;
81
- tokenLedgerIx: TransactionBuilder;
81
+ tokenLedgerIx?: TransactionBuilder;
82
82
  swapIx: TransactionBuilder;
83
83
  }
84
84
 
@@ -154,14 +154,15 @@ export async function getJupSwapTransaction(
154
154
  getWrappedInstruction(signer, createTransactionInstruction(ix))
155
155
  )
156
156
  ),
157
- tokenLedgerIx: transactionBuilder().add(
157
+ tokenLedgerIx:
158
158
  instructions.tokenLedgerInstruction !== undefined
159
- ? getWrappedInstruction(
160
- signer,
161
- createTransactionInstruction(instructions.tokenLedgerInstruction)
159
+ ? transactionBuilder().add(
160
+ getWrappedInstruction(
161
+ signer,
162
+ createTransactionInstruction(instructions.tokenLedgerInstruction)
163
+ )
162
164
  )
163
- : transactionBuilder()
164
- ),
165
+ : undefined,
165
166
  swapIx: transactionBuilder().add(
166
167
  getWrappedInstruction(
167
168
  signer,
@@ -171,13 +172,16 @@ export async function getJupSwapTransaction(
171
172
  };
172
173
  }
173
174
 
174
- export async function getJupPriceData(mints: PublicKey[], extraInfo?: boolean, mayIncludeSpamTokens?: boolean) {
175
+ export async function getJupPriceData(
176
+ mints: PublicKey[],
177
+ mayIncludeSpamTokens?: boolean
178
+ ) {
175
179
  const data = await retryWithExponentialBackoff(async () => {
176
180
  const res = await (
177
181
  await fetch(
178
182
  "https://api.jup.ag/price/v2?ids=" +
179
183
  mints.map((x) => x.toString()).join(",") +
180
- (extraInfo ? "&showExtraInfo=true" : "")
184
+ "&showExtraInfo=true"
181
185
  )
182
186
  ).json();
183
187
  const result = res.data;
@@ -185,7 +189,7 @@ export async function getJupPriceData(mints: PublicKey[], extraInfo?: boolean, m
185
189
  throw new Error("Failed to get token prices using Jupiter");
186
190
  }
187
191
 
188
- const invalidValues =
192
+ const invalidValues =
189
193
  Boolean(Object.values(result).filter((x) => x === null).length) ||
190
194
  Boolean(
191
195
  Object.values(result)
@@ -196,8 +200,18 @@ export async function getJupPriceData(mints: PublicKey[], extraInfo?: boolean, m
196
200
  throw new Error("Invalid price values");
197
201
  }
198
202
 
199
- return result;
203
+ const trueData: { [key: string]: any } = Object.entries(
204
+ result as { [key: string]: any }
205
+ ).reduce(
206
+ (acc, [key, val]) =>
207
+ val.extraInfo?.quotedPrice?.sellAt === null
208
+ ? { ...acc, [key]: { ...val, price: "0" } }
209
+ : { ...acc, [key]: val },
210
+ {}
211
+ );
212
+
213
+ return trueData;
200
214
  }, 8);
201
215
 
202
- return data as { [key: string]: any };
216
+ return data;
203
217
  }
@@ -163,7 +163,7 @@ export async function getJupTokenPrices(
163
163
  return [];
164
164
  }
165
165
 
166
- const data = await getJupPriceData(mints, false, mayIncludeSpamTokens);
166
+ const data = await getJupPriceData(mints, mayIncludeSpamTokens);
167
167
 
168
168
  const sortedData: { [key: string]: any } = {};
169
169
  for (const mint of mints) {
@@ -62,12 +62,9 @@ function getStandardTargetLiqUtilizationRateBps(
62
62
  currentUnixSeconds()
63
63
  );
64
64
 
65
- const repayFrom = settings.repayToBps + settings.repayGap;
66
- const boostFrom = adjustedSettings.boostToBps - settings.boostGap;
67
-
68
- if (state.liqUtilizationRateBps <= boostFrom) {
65
+ if (state.liqUtilizationRateBps < adjustedSettings.boostToBps) {
69
66
  return adjustedSettings.boostToBps;
70
- } else if (state.liqUtilizationRateBps >= repayFrom) {
67
+ } else if (state.liqUtilizationRateBps > settings.repayToBps) {
71
68
  return adjustedSettings.repayToBps;
72
69
  } else {
73
70
  throw new Error("Invalid rebalance condition");