@haven-fi/solauto-sdk 1.0.174 → 1.0.176

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.
@@ -4,6 +4,7 @@ import { ReferralState } from "../generated";
4
4
  import { SolautoClient } from "../clients/solautoClient";
5
5
  export declare function rebalanceChoresBefore(client: SolautoClient, tx: TransactionBuilder, accountsGettingCreated: string[]): Promise<TransactionBuilder>;
6
6
  export declare function getTransactionChores(client: SolautoClient, tx: TransactionBuilder): Promise<[TransactionBuilder, TransactionBuilder]>;
7
+ export declare function requiresRefreshBeforeRebalance(client: SolautoClient): boolean;
7
8
  export declare function buildSolautoRebalanceTransaction(client: SolautoClient, targetLiqUtilizationRateBps?: number, attemptNum?: number): Promise<{
8
9
  tx: TransactionBuilder;
9
10
  lookupTableAddresses: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAEL,aAAa,EAUd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAyNzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA+G7B;AAmLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CACN;IACE,EAAE,EAAE,kBAAkB,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,GACD,SAAS,CACZ,CAoIA;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAmCrD"}
1
+ {"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAEL,aAAa,EAUd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAyNzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA+G7B;AAmLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,aAAa,WA6BnE;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CACN;IACE,EAAE,EAAE,kBAAkB,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,GACD,SAAS,CACZ,CAwHA;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAmCrD"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rebalanceChoresBefore = rebalanceChoresBefore;
4
4
  exports.getTransactionChores = getTransactionChores;
5
+ exports.requiresRefreshBeforeRebalance = requiresRefreshBeforeRebalance;
5
6
  exports.buildSolautoRebalanceTransaction = buildSolautoRebalanceTransaction;
6
7
  exports.convertReferralFeesToDestination = convertReferralFeesToDestination;
7
8
  const umi_1 = require("@metaplex-foundation/umi");
@@ -322,6 +323,26 @@ async function getTransactionChores(client, tx) {
322
323
  choresAfter = choresAfter.add(transactionChoresAfter(client, solautoActions, client.livePositionUpdates.cancellingDca));
323
324
  return [choresBefore, choresAfter];
324
325
  }
326
+ function requiresRefreshBeforeRebalance(client) {
327
+ if (client.solautoPositionState.liqUtilizationRateBps >
328
+ (0, numberUtils_1.getMaxLiqUtilizationRateBps)(client.solautoPositionState.maxLtvBps, client.solautoPositionState.liqThresholdBps, 0.01)) {
329
+ return true;
330
+ }
331
+ else if (client.solautoPositionData && !client.selfManaged) {
332
+ if (client.livePositionUpdates.supplyAdjustment > BigInt(0) || client.livePositionUpdates.debtAdjustment > BigInt(0)) {
333
+ return false;
334
+ }
335
+ const oldSupply = client.solautoPositionData.state.supply.amountUsed.baseUnit;
336
+ const oldDebt = client.solautoPositionData.state.debt.amountUsed.baseUnit;
337
+ const supplyDiff = (client.solautoPositionState?.supply.amountUsed.baseUnit ?? BigInt(0)) - oldSupply;
338
+ const debtDiff = (client.solautoPositionState?.debt.amountUsed.baseUnit ?? BigInt(0)) - oldDebt;
339
+ if (Math.abs(Number(supplyDiff)) / Number(oldSupply) >= 0.01 || Math.abs(Number(debtDiff)) / Number(oldDebt) >= 0.01) {
340
+ return true;
341
+ }
342
+ }
343
+ // Rebalance ix will already refresh internally if position is self managed, has automation to update, or position state last updated >= 1 day ago
344
+ return false;
345
+ }
325
346
  async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRateBps, attemptNum) {
326
347
  client.solautoPositionState = await client.getFreshPositionState();
327
348
  if ((client.solautoPositionState?.supply.amountUsed.baseUnit === BigInt(0) &&
@@ -336,8 +357,10 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
336
357
  const swapDetails = (0, rebalanceUtils_1.getJupSwapRebalanceDetails)(client, values, targetLiqUtilizationRateBps, attemptNum);
337
358
  const { jupQuote, priceImpactBps, lookupTableAddresses, setupInstructions, tokenLedgerIx, swapIx, } = await (0, jupiterUtils_1.getJupSwapTransaction)(client.signer, swapDetails, attemptNum);
338
359
  const flashLoan = (0, rebalanceUtils_1.getFlashLoanDetails)(client, values, jupQuote, priceImpactBps);
339
- console.log((0, generalUtils_1.safeGetPrice)(client.supplyMint), (0, generalUtils_1.safeGetPrice)(client.debtMint));
340
360
  let tx = (0, umi_1.transactionBuilder)();
361
+ if (requiresRefreshBeforeRebalance(client)) {
362
+ tx = tx.add(client.refresh());
363
+ }
341
364
  if (flashLoan) {
342
365
  client.log("Flash loan details: ", flashLoan);
343
366
  const addFirstRebalance = values.amountUsdToDcaIn > 0;
@@ -368,10 +391,6 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
368
391
  client.rebalance("B", swapDetails, rebalanceType, undefined, targetLiqUtilizationRateBps),
369
392
  ]);
370
393
  }
371
- if (client.solautoPositionState.liqUtilizationRateBps >
372
- (0, numberUtils_1.getMaxLiqUtilizationRateBps)(client.solautoPositionState.maxLtvBps, client.solautoPositionState.liqThresholdBps, 0.01)) {
373
- tx = tx.prepend(client.refresh());
374
- }
375
394
  return {
376
395
  tx,
377
396
  lookupTableAddresses,
@@ -1 +1 @@
1
- {"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAKzD,OAAO,EACL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAsC7D,qBAAa,eAAe;IAKjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CACV;QAAE,EAAE,EAAE,kBAAkB,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CACxE;IACM,IAAI,CAAC,EAAE,MAAM;IATtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;gBAGf,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CACV;QAAE,EAAE,EAAE,kBAAkB,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CACxE,EACM,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAIV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AAgFD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,EAAE,CAAC;AAEJ,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAVpB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;gBAGzB,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,YAAY,CAAC,EAAE,OAAO,YAAA,EACtB,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,OAAO,GAAE,MAAU,EACnB,UAAU,GAAE,MAAY;YAQpB,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YAwCN,aAAa;IAoBd,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,EAC/B,eAAe,CAAC,EAAE,kBAAkB,GACnC,OAAO,CAAC,0BAA0B,CAAC;IAyEzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,EACxB,eAAe,CAAC,EAAE,kBAAkB,EACpC,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,0BAA0B,CAAC;YA0GxB,eAAe;CAmC9B"}
1
+ {"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAKzD,OAAO,EACL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AA0C7D,qBAAa,eAAe;IAKjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CACV;QAAE,EAAE,EAAE,kBAAkB,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CACxE;IACM,IAAI,CAAC,EAAE,MAAM;IATtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;gBAGf,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CACV;QAAE,EAAE,EAAE,kBAAkB,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CACxE,EACM,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAIV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AAgFD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,EAAE,CAAC;AAEJ,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAVpB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;gBAGzB,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,YAAY,CAAC,EAAE,OAAO,YAAA,EACtB,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,OAAO,GAAE,MAAU,EACnB,UAAU,GAAE,MAAY;YAQpB,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YAwCN,aAAa;IAoBd,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,EAC/B,eAAe,CAAC,EAAE,kBAAkB,GACnC,OAAO,CAAC,0BAA0B,CAAC;IAyEzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,EACxB,eAAe,CAAC,EAAE,kBAAkB,EACpC,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,0BAA0B,CAAC;YA0GxB,eAAe;CA2D9B"}
@@ -9,6 +9,7 @@ const umi_1 = require("@metaplex-foundation/umi");
9
9
  const solanaUtils_1 = require("../utils/solanaUtils");
10
10
  const generalUtils_1 = require("../utils/generalUtils");
11
11
  const transactionUtils_1 = require("./transactionUtils");
12
+ const generated_1 = require("../generated");
12
13
  // import { sendJitoBundledTransactions } from "../utils/jitoUtils";
13
14
  class LookupTables {
14
15
  constructor(defaultLuts, umi) {
@@ -331,6 +332,23 @@ class TransactionsManager {
331
332
  this.updateStatus(txName, TransactionStatus.Successful, attemptNum, txSig ? bs58_1.default.encode(txSig) : undefined);
332
333
  }
333
334
  catch (e) {
335
+ try {
336
+ if (typeof e === "object" && e["InstructionError"]) {
337
+ const err = e["InstructionError"];
338
+ const errIx = err[0];
339
+ const errCode = err[1]["Custom"];
340
+ const solautoProgram = this.txHandler.umi.programs.get(generated_1.SOLAUTO_PROGRAM_ID);
341
+ const invalidRebalanceError = new generated_1.InvalidRebalanceConditionError(solautoProgram);
342
+ if (tx.getInstructions()[Math.max(0, errIx - 2)].programId ===
343
+ generated_1.SOLAUTO_PROGRAM_ID &&
344
+ solautoProgram.getErrorFromCode(errCode)?.name ===
345
+ invalidRebalanceError.name) {
346
+ this.updateStatus(txName, TransactionStatus.Skipped, attemptNum);
347
+ return;
348
+ }
349
+ }
350
+ }
351
+ catch { }
334
352
  this.updateStatus(txName, TransactionStatus.Failed, attemptNum);
335
353
  throw e;
336
354
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.174",
3
+ "version": "1.0.176",
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",
@@ -566,6 +566,37 @@ export async function getTransactionChores(
566
566
  return [choresBefore, choresAfter];
567
567
  }
568
568
 
569
+ export function requiresRefreshBeforeRebalance(client: SolautoClient) {
570
+ if (
571
+ client.solautoPositionState!.liqUtilizationRateBps >
572
+ getMaxLiqUtilizationRateBps(
573
+ client.solautoPositionState!.maxLtvBps,
574
+ client.solautoPositionState!.liqThresholdBps,
575
+ 0.01
576
+ )
577
+ ) {
578
+ return true;
579
+ } else if (client.solautoPositionData && !client.selfManaged) {
580
+ if (client.livePositionUpdates.supplyAdjustment > BigInt(0) || client.livePositionUpdates.debtAdjustment > BigInt(0)) {
581
+ return false;
582
+ }
583
+
584
+ const oldSupply = client.solautoPositionData.state.supply.amountUsed.baseUnit;
585
+ const oldDebt = client.solautoPositionData.state.debt.amountUsed.baseUnit;
586
+
587
+ const supplyDiff = (client.solautoPositionState?.supply.amountUsed.baseUnit ?? BigInt(0)) - oldSupply;
588
+ const debtDiff = (client.solautoPositionState?.debt.amountUsed.baseUnit ?? BigInt(0)) - oldDebt;
589
+
590
+ if (Math.abs(Number(supplyDiff)) / Number(oldSupply) >= 0.01 || Math.abs(Number(debtDiff)) / Number(oldDebt) >= 0.01) {
591
+ return true;
592
+ }
593
+ }
594
+
595
+ // Rebalance ix will already refresh internally if position is self managed, has automation to update, or position state last updated >= 1 day ago
596
+
597
+ return false;
598
+ }
599
+
569
600
  export async function buildSolautoRebalanceTransaction(
570
601
  client: SolautoClient,
571
602
  targetLiqUtilizationRateBps?: number,
@@ -625,13 +656,12 @@ export async function buildSolautoRebalanceTransaction(
625
656
  priceImpactBps
626
657
  );
627
658
 
628
- console.log(
629
- safeGetPrice(client.supplyMint),
630
- safeGetPrice(client.debtMint)
631
- )
632
-
633
659
  let tx = transactionBuilder();
634
660
 
661
+ if (requiresRefreshBeforeRebalance(client)) {
662
+ tx = tx.add(client.refresh());
663
+ }
664
+
635
665
  if (flashLoan) {
636
666
  client.log("Flash loan details: ", flashLoan);
637
667
  const addFirstRebalance = values.amountUsdToDcaIn > 0;
@@ -693,17 +723,6 @@ export async function buildSolautoRebalanceTransaction(
693
723
  ]);
694
724
  }
695
725
 
696
- if (
697
- client.solautoPositionState!.liqUtilizationRateBps >
698
- getMaxLiqUtilizationRateBps(
699
- client.solautoPositionState!.maxLtvBps,
700
- client.solautoPositionState!.liqThresholdBps,
701
- 0.01
702
- )
703
- ) {
704
- tx = tx.prepend(client.refresh());
705
- }
706
-
707
726
  return {
708
727
  tx,
709
728
  lookupTableAddresses,
@@ -17,6 +17,10 @@ import {
17
17
  import { getTransactionChores } from "./transactionUtils";
18
18
  import { PriorityFeeSetting, TransactionRunType } from "../types";
19
19
  import { ReferralStateManager, TxHandler } from "../clients";
20
+ import {
21
+ InvalidRebalanceConditionError,
22
+ SOLAUTO_PROGRAM_ID,
23
+ } from "../generated";
20
24
  // import { sendJitoBundledTransactions } from "../utils/jitoUtils";
21
25
 
22
26
  class LookupTables {
@@ -521,6 +525,30 @@ export class TransactionsManager {
521
525
  txSig ? bs58.encode(txSig) : undefined
522
526
  );
523
527
  } catch (e) {
528
+ try {
529
+ if (typeof e === "object" && (e as any)["InstructionError"]) {
530
+ const err = (e as any)["InstructionError"];
531
+ const errIx = err[0];
532
+ const errCode = err[1]["Custom"];
533
+
534
+ const solautoProgram =
535
+ this.txHandler.umi.programs.get(SOLAUTO_PROGRAM_ID);
536
+ const invalidRebalanceError = new InvalidRebalanceConditionError(
537
+ solautoProgram
538
+ );
539
+
540
+ if (
541
+ tx.getInstructions()[Math.max(0, errIx - 2)].programId ===
542
+ SOLAUTO_PROGRAM_ID &&
543
+ solautoProgram.getErrorFromCode(errCode)?.name ===
544
+ invalidRebalanceError.name
545
+ ) {
546
+ this.updateStatus(txName, TransactionStatus.Skipped, attemptNum);
547
+ return;
548
+ }
549
+ }
550
+ } catch {}
551
+
524
552
  this.updateStatus(txName, TransactionStatus.Failed, attemptNum);
525
553
  throw e;
526
554
  }
@@ -24,7 +24,7 @@ describe("Solauto Marginfi tests", async () => {
24
24
  // const signer = setupTest();
25
25
  const signer = setupTest("solauto-manager");
26
26
 
27
- const payForTransactions = true;
27
+ const payForTransactions = false;
28
28
  const useJitoBundle = false;
29
29
  const positionId = 1;
30
30
 
@@ -40,7 +40,7 @@ describe("Solauto Marginfi tests", async () => {
40
40
  {
41
41
  signer,
42
42
  positionId,
43
- authority: new PublicKey("E5BBsR1sUToPc3jXVwhrK5ttSiy6xhWJDMdQLvkgNppe")
43
+ authority: new PublicKey("AprYCPiVeKMCgjQ2ZufwChMzvQ5kFjJo2ekTLSkXsQDm")
44
44
  // marginfiAccount: new PublicKey(
45
45
  // "4nNvUXF5YqHFcH2nGweSiuvy1ct7V5FXfoCLKFYUN36z"
46
46
  // ),