@haven-fi/solauto-sdk 1.0.455 → 1.0.457

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":"referralStateManager.d.ts","sourceRoot":"","sources":["../../src/clients/referralStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAEL,MAAM,EAEN,kBAAkB,EAClB,GAAG,EACJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,aAAa,EAEd,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAEL,aAAa,EAGd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,mBAAmB,CAAC,EAAE,SAAS,CAAC;CACjC;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAC1C,GAAG,EAAG,GAAG,CAAC;IAEV,aAAa,EAAG,SAAS,CAAC;IAC1B,iBAAiB,EAAG,aAAa,GAAG,IAAI,CAAC;IACzC,SAAS,EAAG,SAAS,CAAC;IAEtB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,eAAe,CAAC,EAAE,SAAS,CAAC;IAE7B,UAAU,CAAC,IAAI,EAAE,wBAAwB;IA2B/C,mBAAmB,IAAI,MAAM,EAAE;IAS/B,aAAa,CAAC,UAAU,CAAC,EAAE,SAAS;IAsBpC,sBAAsB,CACpB,YAAY,CAAC,EAAE,SAAS,EACxB,WAAW,CAAC,EAAE,SAAS,GACtB,kBAAkB;IAerB,mBAAmB,IAAI,kBAAkB;IA0BnC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAC3D"}
1
+ {"version":3,"file":"referralStateManager.d.ts","sourceRoot":"","sources":["../../src/clients/referralStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAEL,MAAM,EAEN,kBAAkB,EAClB,GAAG,EACJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,aAAa,EAEd,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAEL,aAAa,EAGd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,mBAAmB,CAAC,EAAE,SAAS,CAAC;CACjC;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAC1C,GAAG,EAAG,GAAG,CAAC;IAEV,aAAa,EAAG,SAAS,CAAC;IAC1B,iBAAiB,EAAG,aAAa,GAAG,IAAI,CAAC;IACzC,SAAS,EAAG,SAAS,CAAC;IAEtB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,eAAe,CAAC,EAAE,SAAS,CAAC;IAE7B,UAAU,CAAC,IAAI,EAAE,wBAAwB;IAkC/C,mBAAmB,IAAI,MAAM,EAAE;IAS/B,aAAa,CAAC,UAAU,CAAC,EAAE,SAAS;IAsBpC,sBAAsB,CACpB,YAAY,CAAC,EAAE,SAAS,EACxB,WAAW,CAAC,EAAE,SAAS,GACtB,kBAAkB;IAerB,mBAAmB,IAAI,kBAAkB;IA0BnC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAC3D"}
@@ -19,9 +19,13 @@ class ReferralStateManager extends txHandler_1.TxHandler {
19
19
  ? (0, umi_1.signerIdentity)(args.signer, true)
20
20
  : (0, umi_signer_wallet_adapters_1.walletAdapterIdentity)(args.wallet, true));
21
21
  this.signer = this.umi.identity;
22
- this.authority = args.authority ?? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey);
23
- this.referralState = args.referralState ?? (0, utils_1.getReferralState)(this.authority, this.programId);
22
+ this.referralState =
23
+ args.referralState ??
24
+ (0, utils_1.getReferralState)(args.authority ?? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.programId);
24
25
  this.referralStateData = await (0, generated_1.safeFetchReferralState)(this.umi, (0, umi_1.publicKey)(this.referralState), { commitment: "confirmed" });
26
+ this.authority = this.referralStateData?.authority
27
+ ? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.referralStateData.authority)
28
+ : (args.authority ?? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey));
25
29
  this.setReferredBy(args.referredByAuthority);
26
30
  this.log("Authority:", this.authority.toString());
27
31
  this.log("Signer:", this.signer.publicKey.toString());
@@ -58,5 +58,7 @@ export declare abstract class SolautoClient extends ReferralStateManager {
58
58
  abstract flashRepay(flashLoanDetails: FlashLoanDetails): TransactionBuilder;
59
59
  abstract rebalance(rebalanceStep: "A" | "B", jupQuote: QuoteResponse, rebalanceType: SolautoRebalanceTypeArgs, rebalanceValues: RebalanceValues, flashLoan?: FlashLoanDetails, targetLiqUtilizationRateBps?: number): TransactionBuilder;
60
60
  getFreshPositionState(): Promise<PositionState | undefined>;
61
+ abstract supplyLiquidityAvailable(): bigint;
62
+ abstract debtLiquidityAvailable(): bigint;
61
63
  }
62
64
  //# sourceMappingURL=solautoClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,8 @@ export declare class SolautoMarginfiClient extends SolautoClient {
25
25
  intermediaryMarginfiAccountSigner?: Signer;
26
26
  intermediaryMarginfiAccountPk: PublicKey;
27
27
  intermediaryMarginfiAccount?: MarginfiAccount;
28
+ private supplyBank;
29
+ private debtBank;
28
30
  initialize(args: SolautoMarginfiClientArgs): Promise<void>;
29
31
  setIntermediaryMarginfiDetails(): Promise<void>;
30
32
  protocolAccount(): PublicKey;
@@ -42,5 +44,7 @@ export declare class SolautoMarginfiClient extends SolautoClient {
42
44
  flashBorrow(flashLoanDetails: FlashLoanDetails, destinationTokenAccount: PublicKey): TransactionBuilder;
43
45
  flashRepay(flashLoanDetails: FlashLoanDetails): TransactionBuilder;
44
46
  getFreshPositionState(): Promise<PositionState | undefined>;
47
+ supplyLiquidityAvailable(): bigint;
48
+ debtLiquidityAvailable(): bigint;
45
49
  }
46
50
  //# sourceMappingURL=solautoMarginfiClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EAGb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAEtB,OAAO,EAGL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AASzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,OAAO,CAAC,cAAc,CAAC,CAAY;IAE5B,eAAe,EAAG,SAAS,CAAC;IAE5B,sBAAsB,EAAE,MAAM,CAAa;IAC3C,eAAe,EAAG,SAAS,GAAG,MAAM,CAAC;IACrC,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAE1B,sBAAsB,EAAG,qBAAqB,CAAC;IAC/C,oBAAoB,EAAG,qBAAqB,CAAC;IAE7C,iBAAiB,EAAG,SAAS,CAAC;IAC9B,eAAe,EAAG,SAAS,CAAC;IAG5B,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,6BAA6B,EAAG,SAAS,CAAC;IAC1C,2BAA2B,CAAC,EAAE,eAAe,CAAC;IAE/C,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAiG1C,8BAA8B;IAwCpC,eAAe,IAAI,SAAS;IAI5B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAUzB,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IA0BvE,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,kBAAkB;IAStE,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,IAAI,kBAAkB;IAc7B,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAUhE,OAAO,CAAC,6BAA6B;IAmErC,OAAO,CAAC,oCAAoC;IA0D5C,SAAS,CACP,aAAa,EAAE,GAAG,GAAG,GAAG,EACxB,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,wBAAwB,EACvC,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,GACnC,kBAAkB;IA+ErB,WAAW,CACT,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IA2BrB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IAoF5D,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CA8ClE"}
1
+ {"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EAGb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAEtB,OAAO,EAGL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAUzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,OAAO,CAAC,cAAc,CAAC,CAAY;IAE5B,eAAe,EAAG,SAAS,CAAC;IAE5B,sBAAsB,EAAE,MAAM,CAAa;IAC3C,eAAe,EAAG,SAAS,GAAG,MAAM,CAAC;IACrC,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAE1B,sBAAsB,EAAG,qBAAqB,CAAC;IAC/C,oBAAoB,EAAG,qBAAqB,CAAC;IAE7C,iBAAiB,EAAG,SAAS,CAAC;IAC9B,eAAe,EAAG,SAAS,CAAC;IAG5B,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,6BAA6B,EAAG,SAAS,CAAC;IAC1C,2BAA2B,CAAC,EAAE,eAAe,CAAC;IAErD,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAqB;IAE/B,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAiG1C,8BAA8B;IAwCpC,eAAe,IAAI,SAAS;IAI5B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAUzB,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IA0BvE,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,kBAAkB;IAStE,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,IAAI,kBAAkB;IAc7B,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAUhE,OAAO,CAAC,6BAA6B;IAmErC,OAAO,CAAC,oCAAoC;IA0D5C,SAAS,CACP,aAAa,EAAE,GAAG,GAAG,GAAG,EACxB,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,wBAAwB,EACvC,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,GACnC,kBAAkB;IA+ErB,WAAW,CACT,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IA2BrB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IAoF5D,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAmDjE,wBAAwB,IAAI,MAAM;IAIlC,sBAAsB,IAAI,MAAM;CAGjC"}
@@ -16,6 +16,8 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
16
16
  constructor() {
17
17
  super(...arguments);
18
18
  this.marginfiAccountSeedIdx = BigInt(0);
19
+ this.supplyBank = null;
20
+ this.debtBank = null;
19
21
  }
20
22
  async initialize(args) {
21
23
  await super.initialize(args);
@@ -454,8 +456,11 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
454
456
  const useDesignatedMint = !this.selfManaged &&
455
457
  (this.solautoPositionData === null ||
456
458
  !(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey).equals(this.authority));
457
- const freshState = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, { pk: this.marginfiAccountPk }, this.marginfiGroup, useDesignatedMint ? { mint: this.supplyMint } : undefined, useDesignatedMint ? { mint: this.debtMint } : undefined, this.livePositionUpdates);
458
- if (freshState) {
459
+ const resp = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, { pk: this.marginfiAccountPk }, this.marginfiGroup, useDesignatedMint ? { mint: this.supplyMint } : undefined, useDesignatedMint ? { mint: this.debtMint } : undefined, this.livePositionUpdates);
460
+ if (resp) {
461
+ this.supplyBank = resp?.supplyBank;
462
+ this.debtBank = resp?.debtBank;
463
+ const freshState = resp.state;
459
464
  this.log("Fresh state", freshState);
460
465
  const supplyPrice = (0, utils_1.safeGetPrice)(freshState?.supply.mint);
461
466
  const debtPrice = (0, utils_1.safeGetPrice)(freshState?.debt.mint);
@@ -466,7 +471,13 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
466
471
  this.log("Supply USD:", (0, numberUtils_1.fromBaseUnit)(freshState.supply.amountUsed.baseUnit, freshState.supply.decimals) * supplyPrice);
467
472
  this.log("Debt USD:", (0, numberUtils_1.fromBaseUnit)(freshState.debt.amountUsed.baseUnit, freshState.debt.decimals) * debtPrice);
468
473
  }
469
- return freshState;
474
+ return resp?.state;
475
+ }
476
+ supplyLiquidityAvailable() {
477
+ return (0, marginfiUtils_1.getBankLiquidityAvailableBaseUnit)(this.supplyBank, false);
478
+ }
479
+ debtLiquidityAvailable() {
480
+ return (0, marginfiUtils_1.getBankLiquidityAvailableBaseUnit)(this.debtBank, false);
470
481
  }
471
482
  }
472
483
  exports.SolautoMarginfiClient = SolautoMarginfiClient;
@@ -1,12 +1,11 @@
1
1
  import { TransactionBuilder, Umi } from "@metaplex-foundation/umi";
2
2
  import { PublicKey } from "@solana/web3.js";
3
3
  import { SolautoClient } from "../clients/solautoClient";
4
- import { RebalanceValues } from "../utils/solauto/rebalanceUtils";
5
4
  import { ReferralStateManager } from "../clients";
6
5
  import { TransactionItemInputs } from "../types";
7
6
  export declare function rebalanceChoresBefore(client: SolautoClient, tx: TransactionBuilder, accountsGettingCreated: string[]): Promise<TransactionBuilder>;
8
7
  export declare function getTransactionChores(client: SolautoClient, tx: TransactionBuilder): Promise<[TransactionBuilder, TransactionBuilder]>;
9
- export declare function requiresRefreshBeforeRebalance(client: SolautoClient, values: RebalanceValues): Promise<boolean>;
8
+ export declare function requiresRefreshBeforeRebalance(client: SolautoClient): Promise<boolean>;
10
9
  export declare function buildSolautoRebalanceTransaction(client: SolautoClient, targetLiqUtilizationRateBps?: number, attemptNum?: number): Promise<TransactionItemInputs | undefined>;
11
10
  export declare function convertReferralFeesToDestination(referralManager: ReferralStateManager, tokenAccount: PublicKey, destinationMint: PublicKey): Promise<TransactionItemInputs | undefined>;
12
11
  export declare function getErrorInfo(umi: Umi, txs: TransactionBuilder[], error: Error, simulationSuccessful?: boolean): {
@@ -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;AAqBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,OAAO,EAIL,eAAe,EAChB,MAAM,iCAAiC,CAAC;AA2BzC,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,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,oBAkElG;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAqI5C;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;;;;EAiG/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;AAqCzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA4LjD,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,CAAC,MAAM,EAAE,aAAa,oBAqDzE;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAoI5C;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;;;;EAiG/B"}
@@ -329,17 +329,7 @@ async function getTransactionChores(client, tx) {
329
329
  choresAfter = choresAfter.add(transactionChoresAfter(client, solautoActions, client.livePositionUpdates.cancellingDca));
330
330
  return [choresBefore, choresAfter];
331
331
  }
332
- async function requiresRefreshBeforeRebalance(client, values) {
333
- // REMOVE ME
334
- const state = client.solautoPositionState;
335
- const settings = client.solautoPositionSettings();
336
- if ((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.supply.mint).equals(new web3_js_1.PublicKey(constants_1.JUP)) &&
337
- (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.debt.mint).equals(new web3_js_1.PublicKey(constants_1.USDC)) &&
338
- settings &&
339
- settings.boostToBps ===
340
- (0, numberUtils_1.maxBoostToBps)(state.maxLtvBps, state.liqThresholdBps) && values.targetRateBps === 6500) {
341
- return true;
342
- }
332
+ async function requiresRefreshBeforeRebalance(client) {
343
333
  const neverRefreshedBefore = client.solautoPositionData &&
344
334
  client.solautoPositionData.state.supply.amountCanBeUsed.baseUnit ===
345
335
  BigInt(0) &&
@@ -387,8 +377,7 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
387
377
  const { jupQuote, lookupTableAddresses, setupInstructions, tokenLedgerIx, swapIx, } = await (0, jupiterUtils_1.getJupSwapTransaction)(client.signer, swapDetails, attemptNum);
388
378
  const flashLoan = (0, rebalanceUtils_1.getFlashLoanDetails)(client, values, jupQuote);
389
379
  let tx = (0, umi_1.transactionBuilder)();
390
- // REVERT ME
391
- if (await requiresRefreshBeforeRebalance(client, values)) {
380
+ if (await requiresRefreshBeforeRebalance(client)) {
392
381
  tx = tx.add(client.refresh());
393
382
  }
394
383
  if (flashLoan) {
@@ -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;AAMzD,OAAO,EACL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAW7D,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAqCD,qBAAa,eAAe;IAMjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM;IARtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACjB,WAAW,EAAE,OAAO,CAAS;gBAG3B,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAKV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AA0FD,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,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa,CAAC;IAZxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;gBAGjB,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,kBAAkB,GAAE,kBAA2C,EAC/D,UAAU,GAAE,OAAe,EAC3B,aAAa,CAAC,EAAE,aAAa,YAAA,EACrC,WAAW,CAAC,EAAE,WAAW;YAab,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB;YAoBb,SAAS;IAiBV,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,OAAO,CAAC,0BAA0B,CAAC;IA+FzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YA4BxB,6BAA6B;YAiI7B,qBAAqB;YAmDrB,cAAc;YAqCd,eAAe;CA0D9B"}
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;AAMzD,OAAO,EACL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAW7D,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAqCD,qBAAa,eAAe;IAMjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM;IARtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACjB,WAAW,EAAE,OAAO,CAAS;gBAG3B,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAKV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AA0FD,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,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa,CAAC;IAZxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;gBAGjB,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,kBAAkB,GAAE,kBAA2C,EAC/D,UAAU,GAAE,OAAe,EAC3B,aAAa,CAAC,EAAE,aAAa,YAAA,EACrC,WAAW,CAAC,EAAE,WAAW;YAab,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB;YAoBb,SAAS;IAiBV,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,OAAO,CAAC,0BAA0B,CAAC;IA+FzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YA4BxB,6BAA6B;YAmI7B,qBAAqB;YAmDrB,cAAc;YAqCd,eAAe;CA4D9B"}
@@ -379,13 +379,14 @@ class TransactionsManager {
379
379
  this.txHandler.log("Capturing error info...");
380
380
  const errorDetails = (0, transactionUtils_1.getErrorInfo)(this.txHandler.umi, transactions, e, itemSets.filter((x) => this.statuses.find((y) => x.name() === y.name)?.simulationSuccessful).length === itemSets.length);
381
381
  const errorString = `${errorDetails.errorName ?? "Unknown error"}: ${errorDetails.errorInfo?.split("\n")[0] ?? "unknown"}`;
382
+ const errorInfo = errorDetails.errorName || errorDetails.errorInfo
383
+ ? errorString
384
+ : e.message;
382
385
  this.updateStatusForSets(itemSets, errorDetails.canBeIgnored
383
386
  ? TransactionStatus.Skipped
384
- : TransactionStatus.Failed, num, undefined, undefined, errorDetails.errorName || errorDetails.errorInfo
385
- ? errorString
386
- : e.message);
387
+ : TransactionStatus.Failed, num, undefined, undefined, errorInfo);
387
388
  if (!errorDetails.canBeIgnored) {
388
- throw e;
389
+ throw new Error(errorInfo);
389
390
  }
390
391
  });
391
392
  }
@@ -442,13 +443,14 @@ class TransactionsManager {
442
443
  this.txHandler.log("Capturing error info...");
443
444
  const errorDetails = (0, transactionUtils_1.getErrorInfo)(this.txHandler.umi, [tx], e, this.statuses.find((x) => x.name === txName)?.simulationSuccessful);
444
445
  const errorString = `${errorDetails.errorName ?? "Unknown error"}: ${errorDetails.errorInfo?.split("\n")[0] ?? "unknown"}`;
446
+ const errorInfo = errorDetails.errorName || errorDetails.errorInfo
447
+ ? errorString
448
+ : e.message;
445
449
  this.updateStatus(txName, errorDetails.canBeIgnored
446
450
  ? TransactionStatus.Skipped
447
- : TransactionStatus.Failed, attemptNum, undefined, undefined, errorDetails.errorName || errorDetails.errorInfo
448
- ? errorString
449
- : e.message);
451
+ : TransactionStatus.Failed, attemptNum, undefined, undefined, errorInfo);
450
452
  if (!errorDetails.canBeIgnored) {
451
- throw e;
453
+ throw new Error(errorInfo);
452
454
  }
453
455
  }
454
456
  }
@@ -21,7 +21,7 @@ export declare function getAllMarginfiAccountsByAuthority(umi: Umi, authority: P
21
21
  supplyMint?: PublicKey;
22
22
  debtMint?: PublicKey;
23
23
  }[]>;
24
- export declare function getBankLiquidityAvailableBaseUnit(bank: Bank | null, isAsset: boolean): number;
24
+ export declare function getBankLiquidityAvailableBaseUnit(bank: Bank | null, availableToDeposit: boolean): bigint;
25
25
  interface BankSelection {
26
26
  mint?: PublicKey;
27
27
  banksCache?: BanksCache;
@@ -34,7 +34,11 @@ type BanksCache = {
34
34
  export declare function getMarginfiAccountPositionState(umi: Umi, protocolAccount: {
35
35
  pk: PublicKey;
36
36
  data?: MarginfiAccount;
37
- }, marginfiGroup?: PublicKey, supply?: BankSelection, debt?: BankSelection, livePositionUpdates?: LivePositionUpdates): Promise<PositionState | undefined>;
37
+ }, marginfiGroup?: PublicKey, supply?: BankSelection, debt?: BankSelection, livePositionUpdates?: LivePositionUpdates): Promise<{
38
+ supplyBank: Bank | null;
39
+ debtBank: Bank | null;
40
+ state: PositionState;
41
+ } | undefined>;
38
42
  export declare function calculateAnnualAPYs(bank: Bank): [number, number];
39
43
  export declare function getUpToDateShareValues(bank: Bank): [number, number];
40
44
  export declare function marginfiAccountEmpty(marginfiAccount: MarginfiAccount): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAGJ,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAY1B;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,SAAS,EACxB,MAAM,EAAE;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4C3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR;IAAE,eAAe,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,CAC/E,CAiEA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,OAAO,UAejB;AAsDD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,KAAK,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC;AAEhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,eAAe,EAAE;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,EAC1D,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA6LpC;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,WASpE"}
1
+ {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAGJ,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAY1B;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,SAAS,EACxB,MAAM,EAAE;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4C3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR;IAAE,eAAe,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,CAC/E,CAmEA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,kBAAkB,EAAE,OAAO,UAe5B;AAsDD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,KAAK,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC;AAEhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,eAAe,EAAE;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,EAC1D,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CACN;IAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACxE,SAAS,CACZ,CA8LA;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,WASpE"}
@@ -99,9 +99,9 @@ async function getAllMarginfiAccountsByAuthority(umi, authority, group, compatib
99
99
  if (compatibleWithSolauto) {
100
100
  const positionStates = await Promise.all(marginfiAccounts.map(async (x) => ({
101
101
  publicKey: x.publicKey,
102
- state: await getMarginfiAccountPositionState(umi, {
102
+ state: (await getMarginfiAccountPositionState(umi, {
103
103
  pk: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.publicKey),
104
- }),
104
+ }))?.state,
105
105
  })));
106
106
  return positionStates
107
107
  .sort((a, b) => (0, numberUtils_1.fromBaseUnit)(b.state?.netWorth.baseAmountUsdValue ?? BigInt(0), generalAccounts_1.USD_DECIMALS) -
@@ -119,21 +119,21 @@ async function getAllMarginfiAccountsByAuthority(umi, authority, group, compatib
119
119
  }));
120
120
  }
121
121
  }
122
- function getBankLiquidityAvailableBaseUnit(bank, isAsset) {
122
+ function getBankLiquidityAvailableBaseUnit(bank, availableToDeposit) {
123
123
  let amountCanBeUsed = 0;
124
124
  if (bank !== null) {
125
125
  const [assetShareValue, liabilityShareValue] = getUpToDateShareValues(bank);
126
126
  const totalDeposited = (0, numberUtils_1.bytesToI80F48)(bank.totalAssetShares.value) * assetShareValue;
127
- amountCanBeUsed = isAsset
127
+ amountCanBeUsed = availableToDeposit
128
128
  ? Number(bank.config.depositLimit) - totalDeposited
129
129
  : totalDeposited -
130
130
  (0, numberUtils_1.bytesToI80F48)(bank.totalLiabilityShares.value) * liabilityShareValue;
131
131
  }
132
- return amountCanBeUsed;
132
+ return BigInt(Math.round(amountCanBeUsed));
133
133
  }
134
134
  async function getTokenUsage(bank, isAsset, shares, amountUsedAdjustment) {
135
135
  let amountUsed = 0;
136
- let amountCanBeUsed = 0;
136
+ let amountCanBeUsed = BigInt(0);
137
137
  let marketPrice = 0;
138
138
  if (bank !== null) {
139
139
  [marketPrice] = await (0, priceUtils_1.fetchTokenPrices)([(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.mint)]);
@@ -153,9 +153,9 @@ async function getTokenUsage(bank, isAsset, shares, amountUsedAdjustment) {
153
153
  : BigInt(0),
154
154
  },
155
155
  amountCanBeUsed: {
156
- baseUnit: BigInt(Math.round(amountCanBeUsed)),
156
+ baseUnit: amountCanBeUsed,
157
157
  baseAmountUsdValue: bank
158
- ? (0, numberUtils_1.toBaseUnit)((0, numberUtils_1.fromBaseUnit)(BigInt(Math.round(amountCanBeUsed)), bank.mintDecimals) * marketPrice, generalAccounts_1.USD_DECIMALS)
158
+ ? (0, numberUtils_1.toBaseUnit)((0, numberUtils_1.fromBaseUnit)(amountCanBeUsed, bank.mintDecimals) * marketPrice, generalAccounts_1.USD_DECIMALS)
159
159
  : BigInt(0),
160
160
  },
161
161
  baseAmountMarketPriceUsd: (0, numberUtils_1.toBaseUnit)(marketPrice, generalAccounts_1.USD_DECIMALS),
@@ -253,22 +253,24 @@ async function getMarginfiAccountPositionState(umi, protocolAccount, marginfiGro
253
253
  }, supplyPrice);
254
254
  const supplyUsd = (0, numberUtils_1.fromBaseUnit)(supplyUsage.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
255
255
  const debtUsd = (0, numberUtils_1.fromBaseUnit)(debtUsage?.amountUsed?.baseAmountUsdValue ?? BigInt(0), generalAccounts_1.USD_DECIMALS);
256
- console.log("Asset weight init", (0, numberUtils_1.bytesToI80F48)(supplyBank.config.assetWeightInit.value));
257
- console.log("Liability weight init", (0, numberUtils_1.bytesToI80F48)(debtBank.config.liabilityWeightInit.value));
258
256
  return {
259
- liqUtilizationRateBps: (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, (0, numberUtils_1.toBps)(liqThreshold)),
260
- netWorth: {
261
- baseAmountUsdValue: (0, numberUtils_1.toBaseUnit)(supplyUsd - debtUsd, generalAccounts_1.USD_DECIMALS),
262
- baseUnit: (0, numberUtils_1.toBaseUnit)((supplyUsd - debtUsd) / supplyPrice, supplyUsage.decimals),
257
+ supplyBank,
258
+ debtBank,
259
+ state: {
260
+ liqUtilizationRateBps: (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, (0, numberUtils_1.toBps)(liqThreshold)),
261
+ netWorth: {
262
+ baseAmountUsdValue: (0, numberUtils_1.toBaseUnit)(supplyUsd - debtUsd, generalAccounts_1.USD_DECIMALS),
263
+ baseUnit: (0, numberUtils_1.toBaseUnit)((supplyUsd - debtUsd) / supplyPrice, supplyUsage.decimals),
264
+ },
265
+ supply: supplyUsage,
266
+ debt: debtUsage,
267
+ maxLtvBps: (0, numberUtils_1.toBps)(maxLtv),
268
+ liqThresholdBps: (0, numberUtils_1.toBps)(liqThreshold),
269
+ lastUpdated: BigInt((0, generalUtils_1.currentUnixSeconds)()),
270
+ padding1: [],
271
+ padding2: [],
272
+ padding: [],
263
273
  },
264
- supply: supplyUsage,
265
- debt: debtUsage,
266
- maxLtvBps: (0, numberUtils_1.toBps)(maxLtv),
267
- liqThresholdBps: (0, numberUtils_1.toBps)(liqThreshold),
268
- lastUpdated: BigInt((0, generalUtils_1.currentUnixSeconds)()),
269
- padding1: [],
270
- padding2: [],
271
- padding: [],
272
274
  };
273
275
  }
274
276
  function marginfiInterestRateCurve(bank, utilizationRatio) {
@@ -13,7 +13,6 @@ export interface RebalanceValues {
13
13
  rebalanceAction: RebalanceAction;
14
14
  rebalanceDirection: RebalanceDirection;
15
15
  feesUsd: number;
16
- targetRateBps: number;
17
16
  }
18
17
  export declare function getRebalanceValues(state: PositionState, settings: SolautoSettingsParameters | undefined, dca: DCASettings | undefined, currentUnixTime: number, supplyPrice: number, debtPrice: number, targetLiqUtilizationRateBps?: number): RebalanceValues;
19
18
  export declare function rebalanceRequiresFlashLoan(client: SolautoClient, values: RebalanceValues): {
@@ -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;AAcjD,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;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;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe;;;EAsDxB;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,CAmC9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CA4DhB"}
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,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe;;;EAqDxB;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,CAmC9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CA2DhB"}
@@ -4,7 +4,6 @@ exports.getRebalanceValues = getRebalanceValues;
4
4
  exports.rebalanceRequiresFlashLoan = rebalanceRequiresFlashLoan;
5
5
  exports.getFlashLoanDetails = getFlashLoanDetails;
6
6
  exports.getJupSwapRebalanceDetails = getJupSwapRebalanceDetails;
7
- const web3_js_1 = require("@solana/web3.js");
8
7
  const generated_1 = require("../../generated");
9
8
  const generalUtils_1 = require("./generalUtils");
10
9
  const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
@@ -12,7 +11,6 @@ const generalUtils_2 = require("../generalUtils");
12
11
  const numberUtils_1 = require("../numberUtils");
13
12
  const generalAccounts_1 = require("../../constants/generalAccounts");
14
13
  const priceUtils_1 = require("../priceUtils");
15
- const constants_1 = require("../../constants");
16
14
  function getAdditionalAmountToDcaIn(dca) {
17
15
  if (dca.dcaInBaseUnit === BigInt(0)) {
18
16
  return 0;
@@ -84,15 +82,7 @@ function getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, target
84
82
  }
85
83
  }
86
84
  function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice, debtPrice, targetLiqUtilizationRateBps) {
87
- let { targetRateBps, amountToDcaIn } = getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, targetLiqUtilizationRateBps);
88
- // REVERT ME AND GET TO THE ROOT OF THIS ISSUE
89
- if ((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.supply.mint).equals(new web3_js_1.PublicKey(constants_1.JUP)) &&
90
- (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.debt.mint).equals(new web3_js_1.PublicKey(constants_1.USDC)) &&
91
- settings &&
92
- settings.boostToBps === (0, numberUtils_1.maxBoostToBps)(state.maxLtvBps, state.liqThresholdBps) &&
93
- targetRateBps === settings.boostToBps) {
94
- targetRateBps = 6500;
95
- }
85
+ const { targetRateBps, amountToDcaIn } = getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, targetLiqUtilizationRateBps);
96
86
  const amountUsdToDcaIn = (0, numberUtils_1.fromBaseUnit)(BigInt(Math.round(amountToDcaIn ?? 0)), state.debt.decimals) *
97
87
  (dca?.tokenType === generated_1.TokenType.Debt ? debtPrice : supplyPrice);
98
88
  const rebalanceDirection = amountUsdToDcaIn > 0 || state.liqUtilizationRateBps <= targetRateBps
@@ -103,7 +93,6 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
103
93
  amountUsdToDcaIn;
104
94
  const debtUsd = (0, numberUtils_1.fromBaseUnit)(state.debt.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
105
95
  let debtAdjustmentUsd = (0, numberUtils_1.getDebtAdjustmentUsd)(state.liqThresholdBps, supplyUsd, debtUsd, targetRateBps, adjustmentFeeBps);
106
- (0, generalUtils_2.consoleLog)("Target rate:", targetRateBps, (0, numberUtils_1.maxBoostToBps)(state.maxLtvBps, state.liqThresholdBps));
107
96
  const maxRepayTo = (0, numberUtils_1.maxRepayToBps)(state.maxLtvBps, state.liqThresholdBps);
108
97
  return {
109
98
  debtAdjustmentUsd,
@@ -118,7 +107,6 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
118
107
  : "repay",
119
108
  rebalanceDirection,
120
109
  feesUsd: Math.abs(debtAdjustmentUsd * (0, numberUtils_1.fromBps)(adjustmentFeeBps)),
121
- targetRateBps
122
110
  };
123
111
  }
124
112
  function rebalanceRequiresFlashLoan(client, values) {
@@ -137,11 +125,12 @@ function rebalanceRequiresFlashLoan(client, values) {
137
125
  const tempLiqUtilizationRateBps = (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, client.solautoPositionState.liqThresholdBps);
138
126
  const maxLiqUtilizationRateBps = (0, numberUtils_1.getMaxLiqUtilizationRateBps)(client.solautoPositionState.maxLtvBps, client.solautoPositionState.liqThresholdBps, 0.02);
139
127
  const requiresFlashLoan = supplyUsd <= 0 || tempLiqUtilizationRateBps > maxLiqUtilizationRateBps;
128
+ const useDebtLiquidity = Math.abs(values.debtAdjustmentUsd) * 0.9 >
129
+ (0, numberUtils_1.fromBaseUnit)(client.supplyLiquidityAvailable(), generalAccounts_1.USD_DECIMALS) *
130
+ ((0, priceUtils_1.safeGetPrice)(client.supplyMint) ?? 0);
140
131
  (0, generalUtils_2.consoleLog)("Requires flash loan:", requiresFlashLoan);
132
+ (0, generalUtils_2.consoleLog)("Use debt liquidity:", useDebtLiquidity);
141
133
  (0, generalUtils_2.consoleLog)("Intermediary liq utilization rate:", tempLiqUtilizationRateBps, `$${supplyUsd}`, `$${debtUsd}`, "Max:", maxLiqUtilizationRateBps);
142
- const useDebtLiquidity = Math.abs(values.debtAdjustmentUsd) * 1.1 <=
143
- (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState?.debt.amountCanBeUsed.baseAmountUsdValue ??
144
- BigInt(0), generalAccounts_1.USD_DECIMALS);
145
134
  return { requiresFlashLoan, useDebtLiquidity };
146
135
  }
147
136
  function getFlashLoanDetails(client, values, jupQuote) {
@@ -194,7 +183,6 @@ function getJupSwapRebalanceDetails(client, values, targetLiqUtilizationRateBps,
194
183
  values.repayingCloseToMaxLtv ||
195
184
  flashLoanRepayFromDebt;
196
185
  const exactIn = !exactOut;
197
- // const addPadding = targetLiqUtilizationRateBps === 0;
198
186
  const addPadding = exactOut;
199
187
  return {
200
188
  inputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(input.mint),
@@ -204,8 +192,8 @@ function getJupSwapRebalanceDetails(client, values, targetLiqUtilizationRateBps,
204
192
  : client.solautoPosition,
205
193
  slippageIncFactor: 0.2 + (attemptNum ?? 0) * 0.25,
206
194
  amount: exactOut ? outputAmount : inputAmount,
207
- exactIn: exactIn,
208
- exactOut: exactOut,
195
+ exactIn,
196
+ exactOut,
209
197
  addPadding,
210
198
  };
211
199
  }
@@ -188,6 +188,8 @@ async function main(filterWhitelist: boolean) {
188
188
 
189
189
  const latestStates: PositionState[] = [];
190
190
  let unhealthyPositions = 0;
191
+ let awaitingBoostPositions = 0;
192
+
191
193
  for (const pos of solautoPositionsData) {
192
194
  const latestState = await positionStateWithLatestPrices(
193
195
  pos.state,
@@ -201,21 +203,42 @@ async function main(filterWhitelist: boolean) {
201
203
  toWeb3JsPublicKey(pos.state.debt.mint)
202
204
  );
203
205
 
204
- const repayFrom = pos.position.settingParams.repayToBps + pos.position.settingParams.repayGap;
206
+ const repayFrom =
207
+ pos.position.settingParams.repayToBps +
208
+ pos.position.settingParams.repayGap;
205
209
  const unhealthy = latestState.liqUtilizationRateBps > repayFrom;
206
- const healthText = unhealthy ? `(Unhealthy: ${latestState.liqUtilizationRateBps - repayFrom}bps)` : "";
210
+ const healthText = unhealthy
211
+ ? `(Unhealthy: ${latestState.liqUtilizationRateBps - repayFrom}bps)`
212
+ : "";
207
213
  if (unhealthy) {
208
214
  unhealthyPositions += 1;
209
215
  }
210
216
 
211
- console.log(pos.publicKey.toString(), `(${pos.authority.toString()} ${pos.positionId})`);
217
+ const awaitingBoost =
218
+ latestState.liqUtilizationRateBps <
219
+ pos.position.settingParams.boostToBps -
220
+ pos.position.settingParams.boostGap;
221
+ const boostText = awaitingBoost ? " (awaiting boost)" : "";
222
+ if (awaitingBoost) {
223
+ awaitingBoostPositions += 1;
224
+ }
225
+
212
226
  console.log(
213
- `${strategy}: $${formatNumber(fromBaseUnit(latestState.netWorth.baseAmountUsdValue, USD_DECIMALS), 2, 10000, 2)} ${healthText}`
227
+ pos.publicKey.toString(),
228
+ `(${pos.authority.toString()} ${pos.positionId})`
229
+ );
230
+ console.log(
231
+ `${strategy}: $${formatNumber(fromBaseUnit(latestState.netWorth.baseAmountUsdValue, USD_DECIMALS), 2, 10000, 2)} ${healthText} ${boostText}`
214
232
  );
215
233
  // console.log(latestState.liqUtilizationRateBps, repayFrom);
216
234
  }
217
235
 
218
- console.log("\nTotal positions:", solautoPositionsData.length, unhealthyPositions ? ` (unhealthy: ${unhealthyPositions})` : "");
236
+ console.log(
237
+ "\nTotal positions:",
238
+ solautoPositionsData.length,
239
+ unhealthyPositions ? ` (unhealthy: ${unhealthyPositions})` : "",
240
+ awaitingBoostPositions ? ` (awaiting boost: ${awaitingBoostPositions})` : ""
241
+ );
219
242
  console.log(
220
243
  "Total users:",
221
244
  Array.from(new Set(solautoPositionsData.map((x) => x.authority.toString())))
@@ -229,4 +252,4 @@ async function main(filterWhitelist: boolean) {
229
252
  }
230
253
 
231
254
  const filterWhitelist = true;
232
- main(filterWhitelist).then((x) => x);
255
+ main(filterWhitelist).then((x) => x);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.455",
3
+ "version": "1.0.457",
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",
@@ -50,15 +50,22 @@ export class ReferralStateManager extends TxHandler {
50
50
  : walletAdapterIdentity(args.wallet!, true)
51
51
  );
52
52
  this.signer = this.umi.identity;
53
- this.authority = args.authority ?? toWeb3JsPublicKey(this.signer.publicKey);
54
53
 
55
- this.referralState = args.referralState ?? getReferralState(this.authority, this.programId);
54
+ this.referralState =
55
+ args.referralState ??
56
+ getReferralState(
57
+ args.authority ?? toWeb3JsPublicKey(this.signer.publicKey),
58
+ this.programId
59
+ );
56
60
 
57
61
  this.referralStateData = await safeFetchReferralState(
58
62
  this.umi,
59
63
  publicKey(this.referralState),
60
64
  { commitment: "confirmed" }
61
65
  );
66
+ this.authority = this.referralStateData?.authority
67
+ ? toWeb3JsPublicKey(this.referralStateData.authority)
68
+ : (args.authority ?? toWeb3JsPublicKey(this.signer.publicKey));
62
69
 
63
70
  this.setReferredBy(args.referredByAuthority);
64
71
 
@@ -576,4 +576,7 @@ export abstract class SolautoClient extends ReferralStateManager {
576
576
 
577
577
  return undefined;
578
578
  }
579
+
580
+ abstract supplyLiquidityAvailable(): bigint;
581
+ abstract debtLiquidityAvailable(): bigint;
579
582
  }
@@ -55,6 +55,7 @@ import {
55
55
  import {
56
56
  findMarginfiAccounts,
57
57
  getAllMarginfiAccountsByAuthority,
58
+ getBankLiquidityAvailableBaseUnit,
58
59
  getMarginfiAccountPositionState,
59
60
  getMarginfiMaxLtvAndLiqThreshold,
60
61
  marginfiAccountEmpty,
@@ -90,6 +91,9 @@ export class SolautoMarginfiClient extends SolautoClient {
90
91
  public intermediaryMarginfiAccountPk!: PublicKey;
91
92
  public intermediaryMarginfiAccount?: MarginfiAccount;
92
93
 
94
+ private supplyBank: Bank | null = null;
95
+ private debtBank: Bank | null = null;
96
+
93
97
  async initialize(args: SolautoMarginfiClientArgs) {
94
98
  await super.initialize(args);
95
99
 
@@ -694,7 +698,7 @@ export class SolautoMarginfiClient extends SolautoClient {
694
698
  (this.solautoPositionData === null ||
695
699
  !toWeb3JsPublicKey(this.signer.publicKey).equals(this.authority));
696
700
 
697
- const freshState = await getMarginfiAccountPositionState(
701
+ const resp = await getMarginfiAccountPositionState(
698
702
  this.umi,
699
703
  { pk: this.marginfiAccountPk },
700
704
  this.marginfiGroup,
@@ -703,7 +707,11 @@ export class SolautoMarginfiClient extends SolautoClient {
703
707
  this.livePositionUpdates
704
708
  );
705
709
 
706
- if (freshState) {
710
+ if (resp) {
711
+ this.supplyBank = resp?.supplyBank;
712
+ this.debtBank = resp?.debtBank;
713
+ const freshState = resp.state;
714
+
707
715
  this.log("Fresh state", freshState);
708
716
  const supplyPrice = safeGetPrice(freshState?.supply.mint)!;
709
717
  const debtPrice = safeGetPrice(freshState?.debt.mint)!;
@@ -727,6 +735,14 @@ export class SolautoMarginfiClient extends SolautoClient {
727
735
  );
728
736
  }
729
737
 
730
- return freshState;
738
+ return resp?.state;
739
+ }
740
+
741
+ supplyLiquidityAvailable(): bigint {
742
+ return getBankLiquidityAvailableBaseUnit(this.supplyBank, false);
743
+ }
744
+
745
+ debtLiquidityAvailable(): bigint {
746
+ return getBankLiquidityAvailableBaseUnit(this.debtBank, false);
731
747
  }
732
748
  }
@@ -19,7 +19,6 @@ import {
19
19
  RebalanceDirection,
20
20
  SolautoAction,
21
21
  SolautoRebalanceType,
22
- SolautoSettingsParameters,
23
22
  TokenType,
24
23
  convertReferralFees,
25
24
  createSolautoProgram,
@@ -40,7 +39,6 @@ import {
40
39
  getFlashLoanDetails,
41
40
  getJupSwapRebalanceDetails,
42
41
  getRebalanceValues,
43
- RebalanceValues,
44
42
  } from "../utils/solauto/rebalanceUtils";
45
43
  import {
46
44
  consoleLog,
@@ -51,7 +49,6 @@ import {
51
49
  import { SolautoMarginfiClient } from "../clients/solautoMarginfiClient";
52
50
  import {
53
51
  getMaxLiqUtilizationRateBps,
54
- maxBoostToBps,
55
52
  uint8ArrayToBigInt,
56
53
  } from "../utils/numberUtils";
57
54
  import {
@@ -74,11 +71,10 @@ import {
74
71
  getJupiterErrorFromCode,
75
72
  JUPITER_PROGRAM_ID,
76
73
  } from "../jupiter-sdk";
77
- import { JUP, PRICES, USDC } from "../constants";
74
+ import { PRICES } from "../constants";
78
75
  import { TransactionItemInputs } from "../types";
79
76
  import { safeGetPrice } from "../utils";
80
77
  import { BundleSimulationError } from "../types/transactions";
81
- import { getPackedSettings } from "http2";
82
78
 
83
79
  interface wSolTokenUsage {
84
80
  wSolTokenAccount: PublicKey;
@@ -602,20 +598,7 @@ export async function getTransactionChores(
602
598
  return [choresBefore, choresAfter];
603
599
  }
604
600
 
605
- export async function requiresRefreshBeforeRebalance(client: SolautoClient, values: RebalanceValues) {
606
- // REMOVE ME
607
- const state = client.solautoPositionState!;
608
- const settings = client.solautoPositionSettings();
609
- if (
610
- toWeb3JsPublicKey(state.supply.mint).equals(new PublicKey(JUP)) &&
611
- toWeb3JsPublicKey(state.debt.mint).equals(new PublicKey(USDC)) &&
612
- settings &&
613
- settings.boostToBps ===
614
- maxBoostToBps(state.maxLtvBps, state.liqThresholdBps) && values.targetRateBps === 6500
615
- ) {
616
- return true;
617
- }
618
-
601
+ export async function requiresRefreshBeforeRebalance(client: SolautoClient) {
619
602
  const neverRefreshedBefore =
620
603
  client.solautoPositionData &&
621
604
  client.solautoPositionData.state.supply.amountCanBeUsed.baseUnit ===
@@ -724,8 +707,7 @@ export async function buildSolautoRebalanceTransaction(
724
707
 
725
708
  let tx = transactionBuilder();
726
709
 
727
- // REVERT ME
728
- if (await requiresRefreshBeforeRebalance(client, values)) {
710
+ if (await requiresRefreshBeforeRebalance(client)) {
729
711
  tx = tx.add(client.refresh());
730
712
  }
731
713
 
@@ -646,6 +646,10 @@ export class TransactionsManager {
646
646
  );
647
647
 
648
648
  const errorString = `${errorDetails.errorName ?? "Unknown error"}: ${errorDetails.errorInfo?.split("\n")[0] ?? "unknown"}`;
649
+ const errorInfo =
650
+ errorDetails.errorName || errorDetails.errorInfo
651
+ ? errorString
652
+ : e.message;
649
653
  this.updateStatusForSets(
650
654
  itemSets,
651
655
  errorDetails.canBeIgnored
@@ -654,13 +658,11 @@ export class TransactionsManager {
654
658
  num,
655
659
  undefined,
656
660
  undefined,
657
- errorDetails.errorName || errorDetails.errorInfo
658
- ? errorString
659
- : e.message
661
+ errorInfo
660
662
  );
661
663
 
662
664
  if (!errorDetails.canBeIgnored) {
663
- throw e;
665
+ throw new Error(errorInfo);
664
666
  }
665
667
  });
666
668
  }
@@ -793,6 +795,10 @@ export class TransactionsManager {
793
795
  );
794
796
 
795
797
  const errorString = `${errorDetails.errorName ?? "Unknown error"}: ${errorDetails.errorInfo?.split("\n")[0] ?? "unknown"}`;
798
+ const errorInfo =
799
+ errorDetails.errorName || errorDetails.errorInfo
800
+ ? errorString
801
+ : e.message;
796
802
  this.updateStatus(
797
803
  txName,
798
804
  errorDetails.canBeIgnored
@@ -801,13 +807,11 @@ export class TransactionsManager {
801
807
  attemptNum,
802
808
  undefined,
803
809
  undefined,
804
- errorDetails.errorName || errorDetails.errorInfo
805
- ? errorString
806
- : e.message
810
+ errorInfo
807
811
  );
808
812
 
809
813
  if (!errorDetails.canBeIgnored) {
810
- throw e;
814
+ throw new Error(errorInfo);
811
815
  }
812
816
  }
813
817
  }
@@ -185,9 +185,11 @@ export async function getAllMarginfiAccountsByAuthority(
185
185
  const positionStates = await Promise.all(
186
186
  marginfiAccounts.map(async (x) => ({
187
187
  publicKey: x.publicKey,
188
- state: await getMarginfiAccountPositionState(umi, {
189
- pk: toWeb3JsPublicKey(x.publicKey),
190
- }),
188
+ state: (
189
+ await getMarginfiAccountPositionState(umi, {
190
+ pk: toWeb3JsPublicKey(x.publicKey),
191
+ })
192
+ )?.state,
191
193
  }))
192
194
  );
193
195
  return positionStates
@@ -217,7 +219,7 @@ export async function getAllMarginfiAccountsByAuthority(
217
219
 
218
220
  export function getBankLiquidityAvailableBaseUnit(
219
221
  bank: Bank | null,
220
- isAsset: boolean
222
+ availableToDeposit: boolean
221
223
  ) {
222
224
  let amountCanBeUsed = 0;
223
225
 
@@ -225,13 +227,13 @@ export function getBankLiquidityAvailableBaseUnit(
225
227
  const [assetShareValue, liabilityShareValue] = getUpToDateShareValues(bank);
226
228
  const totalDeposited =
227
229
  bytesToI80F48(bank.totalAssetShares.value) * assetShareValue;
228
- amountCanBeUsed = isAsset
230
+ amountCanBeUsed = availableToDeposit
229
231
  ? Number(bank.config.depositLimit) - totalDeposited
230
232
  : totalDeposited -
231
233
  bytesToI80F48(bank.totalLiabilityShares.value) * liabilityShareValue;
232
234
  }
233
235
 
234
- return amountCanBeUsed;
236
+ return BigInt(Math.round(amountCanBeUsed));
235
237
  }
236
238
 
237
239
  async function getTokenUsage(
@@ -241,7 +243,7 @@ async function getTokenUsage(
241
243
  amountUsedAdjustment?: bigint
242
244
  ): Promise<PositionTokenUsage> {
243
245
  let amountUsed = 0;
244
- let amountCanBeUsed = 0;
246
+ let amountCanBeUsed = BigInt(0);
245
247
  let marketPrice = 0;
246
248
 
247
249
  if (bank !== null) {
@@ -266,11 +268,11 @@ async function getTokenUsage(
266
268
  : BigInt(0),
267
269
  },
268
270
  amountCanBeUsed: {
269
- baseUnit: BigInt(Math.round(amountCanBeUsed)),
271
+ baseUnit: amountCanBeUsed,
270
272
  baseAmountUsdValue: bank
271
273
  ? toBaseUnit(
272
274
  fromBaseUnit(
273
- BigInt(Math.round(amountCanBeUsed)),
275
+ amountCanBeUsed,
274
276
  bank.mintDecimals
275
277
  ) * marketPrice,
276
278
  USD_DECIMALS
@@ -300,7 +302,10 @@ export async function getMarginfiAccountPositionState(
300
302
  supply?: BankSelection,
301
303
  debt?: BankSelection,
302
304
  livePositionUpdates?: LivePositionUpdates
303
- ): Promise<PositionState | undefined> {
305
+ ): Promise<
306
+ | { supplyBank: Bank | null; debtBank: Bank | null; state: PositionState }
307
+ | undefined
308
+ > {
304
309
  let marginfiAccount =
305
310
  protocolAccount.data ??
306
311
  (await safeFetchMarginfiAccount(umi, publicKey(protocolAccount.pk), {
@@ -464,30 +469,31 @@ export async function getMarginfiAccountPositionState(
464
469
  USD_DECIMALS
465
470
  );
466
471
 
467
- console.log("Asset weight init", bytesToI80F48(supplyBank.config.assetWeightInit.value));
468
- console.log("Liability weight init", bytesToI80F48(debtBank.config.liabilityWeightInit.value));
469
-
470
472
  return {
471
- liqUtilizationRateBps: getLiqUtilzationRateBps(
472
- supplyUsd,
473
- debtUsd,
474
- toBps(liqThreshold)
475
- ),
476
- netWorth: {
477
- baseAmountUsdValue: toBaseUnit(supplyUsd - debtUsd, USD_DECIMALS),
478
- baseUnit: toBaseUnit(
479
- (supplyUsd - debtUsd) / supplyPrice,
480
- supplyUsage!.decimals
473
+ supplyBank,
474
+ debtBank,
475
+ state: {
476
+ liqUtilizationRateBps: getLiqUtilzationRateBps(
477
+ supplyUsd,
478
+ debtUsd,
479
+ toBps(liqThreshold)
481
480
  ),
481
+ netWorth: {
482
+ baseAmountUsdValue: toBaseUnit(supplyUsd - debtUsd, USD_DECIMALS),
483
+ baseUnit: toBaseUnit(
484
+ (supplyUsd - debtUsd) / supplyPrice,
485
+ supplyUsage!.decimals
486
+ ),
487
+ },
488
+ supply: supplyUsage!,
489
+ debt: debtUsage!,
490
+ maxLtvBps: toBps(maxLtv),
491
+ liqThresholdBps: toBps(liqThreshold),
492
+ lastUpdated: BigInt(currentUnixSeconds()),
493
+ padding1: [],
494
+ padding2: [],
495
+ padding: [],
482
496
  },
483
- supply: supplyUsage!,
484
- debt: debtUsage!,
485
- maxLtvBps: toBps(maxLtv),
486
- liqThresholdBps: toBps(liqThreshold),
487
- lastUpdated: BigInt(currentUnixSeconds()),
488
- padding1: [],
489
- padding2: [],
490
- padding: [],
491
497
  };
492
498
  }
493
499
 
@@ -24,14 +24,13 @@ import {
24
24
  getLiqUtilzationRateBps,
25
25
  getMaxLiqUtilizationRateBps,
26
26
  getSolautoFeesBps,
27
- maxBoostToBps,
28
27
  maxRepayToBps,
29
28
  toBaseUnit,
30
29
  } from "../numberUtils";
31
30
  import { USD_DECIMALS } from "../../constants/generalAccounts";
32
31
  import { RebalanceAction } from "../../types";
33
32
  import { safeGetPrice } from "../priceUtils";
34
- import { JUP, TOKEN_INFO, USDC } from "../../constants";
33
+ import { TOKEN_INFO } from "../../constants";
35
34
 
36
35
  function getAdditionalAmountToDcaIn(dca: DCASettings): number {
37
36
  if (dca.dcaInBaseUnit === BigInt(0)) {
@@ -170,7 +169,6 @@ export interface RebalanceValues {
170
169
  rebalanceAction: RebalanceAction;
171
170
  rebalanceDirection: RebalanceDirection;
172
171
  feesUsd: number;
173
- targetRateBps: number;
174
172
  }
175
173
 
176
174
  export function getRebalanceValues(
@@ -182,7 +180,7 @@ export function getRebalanceValues(
182
180
  debtPrice: number,
183
181
  targetLiqUtilizationRateBps?: number
184
182
  ): RebalanceValues {
185
- let { targetRateBps, amountToDcaIn } = getTargetRateAndDcaAmount(
183
+ const { targetRateBps, amountToDcaIn } = getTargetRateAndDcaAmount(
186
184
  state,
187
185
  settings,
188
186
  dca,
@@ -190,17 +188,6 @@ export function getRebalanceValues(
190
188
  targetLiqUtilizationRateBps
191
189
  );
192
190
 
193
- // REVERT ME AND GET TO THE ROOT OF THIS ISSUE
194
- if (
195
- toWeb3JsPublicKey(state.supply.mint).equals(new PublicKey(JUP)) &&
196
- toWeb3JsPublicKey(state.debt.mint).equals(new PublicKey(USDC)) &&
197
- settings &&
198
- settings.boostToBps === maxBoostToBps(state.maxLtvBps, state.liqThresholdBps) &&
199
- targetRateBps === settings.boostToBps
200
- ) {
201
- targetRateBps = 6500;
202
- }
203
-
204
191
  const amountUsdToDcaIn =
205
192
  fromBaseUnit(BigInt(Math.round(amountToDcaIn ?? 0)), state.debt.decimals) *
206
193
  (dca?.tokenType === TokenType.Debt ? debtPrice : supplyPrice);
@@ -231,7 +218,6 @@ export function getRebalanceValues(
231
218
  adjustmentFeeBps
232
219
  );
233
220
 
234
- consoleLog("Target rate:", targetRateBps, maxBoostToBps(state.maxLtvBps, state.liqThresholdBps));
235
221
  const maxRepayTo = maxRepayToBps(state.maxLtvBps, state.liqThresholdBps);
236
222
  return {
237
223
  debtAdjustmentUsd,
@@ -248,7 +234,6 @@ export function getRebalanceValues(
248
234
  : "repay",
249
235
  rebalanceDirection,
250
236
  feesUsd: Math.abs(debtAdjustmentUsd * fromBps(adjustmentFeeBps)),
251
- targetRateBps
252
237
  };
253
238
  }
254
239
 
@@ -290,7 +275,13 @@ export function rebalanceRequiresFlashLoan(
290
275
  const requiresFlashLoan =
291
276
  supplyUsd <= 0 || tempLiqUtilizationRateBps > maxLiqUtilizationRateBps;
292
277
 
278
+ const useDebtLiquidity =
279
+ Math.abs(values.debtAdjustmentUsd) * 0.9 >
280
+ fromBaseUnit(client.supplyLiquidityAvailable(), USD_DECIMALS) *
281
+ (safeGetPrice(client.supplyMint) ?? 0);
282
+
293
283
  consoleLog("Requires flash loan:", requiresFlashLoan);
284
+ consoleLog("Use debt liquidity:", useDebtLiquidity);
294
285
  consoleLog(
295
286
  "Intermediary liq utilization rate:",
296
287
  tempLiqUtilizationRateBps,
@@ -300,13 +291,6 @@ export function rebalanceRequiresFlashLoan(
300
291
  maxLiqUtilizationRateBps
301
292
  );
302
293
 
303
- const useDebtLiquidity =
304
- Math.abs(values.debtAdjustmentUsd) * 1.1 <=
305
- fromBaseUnit(
306
- client.solautoPositionState?.debt.amountCanBeUsed.baseAmountUsdValue ??
307
- BigInt(0),
308
- USD_DECIMALS
309
- );
310
294
  return { requiresFlashLoan, useDebtLiquidity };
311
295
  }
312
296
 
@@ -407,7 +391,6 @@ export function getJupSwapRebalanceDetails(
407
391
  flashLoanRepayFromDebt;
408
392
  const exactIn = !exactOut;
409
393
 
410
- // const addPadding = targetLiqUtilizationRateBps === 0;
411
394
  const addPadding = exactOut;
412
395
 
413
396
  return {
@@ -418,8 +401,8 @@ export function getJupSwapRebalanceDetails(
418
401
  : client.solautoPosition,
419
402
  slippageIncFactor: 0.2 + (attemptNum ?? 0) * 0.25,
420
403
  amount: exactOut ? outputAmount : inputAmount,
421
- exactIn: exactIn,
422
- exactOut: exactOut,
404
+ exactIn,
405
+ exactOut,
423
406
  addPadding,
424
407
  };
425
408
  }
@@ -1,5 +1,9 @@
1
1
  import { describe, it } from "mocha";
2
- import { none, publicKey, some } from "@metaplex-foundation/umi";
2
+ import {
3
+ none,
4
+ publicKey,
5
+ some,
6
+ } from "@metaplex-foundation/umi";
3
7
  import { setupTest } from "../shared";
4
8
  import { SolautoMarginfiClient } from "../../src/clients/solautoMarginfiClient";
5
9
  import {
@@ -25,16 +29,19 @@ import {
25
29
  SOLAUTO_TEST_PROGRAM,
26
30
  USDC,
27
31
  } from "../../src/constants";
28
- import { buildHeliusApiUrl, getSolautoManagedPositions } from "../../src/utils";
32
+ import {
33
+ buildHeliusApiUrl,
34
+ getSolautoManagedPositions,
35
+ } from "../../src/utils";
29
36
  import { PriorityFeeSetting } from "../../src/types";
30
- import { buildIronforgeApiUrl, fetchSolautoPosition } from "../../dist";
37
+ import { buildIronforgeApiUrl } from "../../dist";
31
38
 
32
39
  describe("Solauto Marginfi tests", async () => {
33
40
  // const signer = setupTest();
34
41
  const signer = setupTest("solauto-manager");
35
42
 
36
- const payForTransactions = true;
37
- const testProgram = true;
43
+ const payForTransactions = false;
44
+ const testProgram = false;
38
45
  const positionId = 1;
39
46
 
40
47
  it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
@@ -51,7 +58,7 @@ describe("Solauto Marginfi tests", async () => {
51
58
  await client.initialize({
52
59
  signer,
53
60
  positionId,
54
- authority: new PublicKey("rC5dMP5dmSsfQ66rynzfFzuc122Eex9h1RJHVDkeH6D"),
61
+ authority: new PublicKey("He4ka5Q3N1UvZikZvykdi47xyk5PoVP2tcQL5sVp31Sz"),
55
62
  // new: true,
56
63
  // marginfiAccount: new PublicKey(
57
64
  // ""
@@ -61,7 +68,7 @@ describe("Solauto Marginfi tests", async () => {
61
68
  // debtMint: new PublicKey(USDC),
62
69
  });
63
70
 
64
- // console.log(await client.getFreshPositionState());
71
+ // console.log(await getSolautoManagedPositions(client.umi));
65
72
 
66
73
  const transactionItems: TransactionItem[] = [];
67
74
  // const settingParams: SolautoSettingsParametersInpArgs = {
@@ -79,15 +86,6 @@ describe("Solauto Marginfi tests", async () => {
79
86
  // targetBoostToBps: none(),
80
87
  // };
81
88
 
82
- const settingParams: SolautoSettingsParametersInpArgs = {
83
- boostToBps: client.solautoPositionSettings().boostToBps - 150,
84
- boostGap: 50,
85
- repayToBps: client.solautoPositionSettings().repayToBps - 150,
86
- repayGap: 50,
87
- automation: none(),
88
- targetBoostToBps: none(),
89
- };
90
-
91
89
  // if (client.solautoPositionData === null) {
92
90
  // transactionItems.push(
93
91
  // new TransactionItem(async () => {
@@ -138,13 +136,6 @@ describe("Solauto Marginfi tests", async () => {
138
136
  )
139
137
  );
140
138
 
141
- // transactionItems.push(
142
- // new TransactionItem(
143
- // async () => ({ tx: client.refresh() }),
144
- // "refresh"
145
- // )
146
- // );
147
-
148
139
  // transactionItems.push(
149
140
  // new TransactionItem(
150
141
  // async (attemptNum) =>