@haven-fi/solauto-sdk 1.0.456 → 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) {
@@ -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,CA0LpC;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),
@@ -254,19 +254,23 @@ async function getMarginfiAccountPositionState(umi, protocolAccount, marginfiGro
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
256
  return {
257
- liqUtilizationRateBps: (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, (0, numberUtils_1.toBps)(liqThreshold)),
258
- netWorth: {
259
- baseAmountUsdValue: (0, numberUtils_1.toBaseUnit)(supplyUsd - debtUsd, generalAccounts_1.USD_DECIMALS),
260
- 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: [],
261
273
  },
262
- supply: supplyUsage,
263
- debt: debtUsage,
264
- maxLtvBps: (0, numberUtils_1.toBps)(maxLtv),
265
- liqThresholdBps: (0, numberUtils_1.toBps)(liqThreshold),
266
- lastUpdated: BigInt((0, generalUtils_1.currentUnixSeconds)()),
267
- padding1: [],
268
- padding2: [],
269
- padding: [],
270
274
  };
271
275
  }
272
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.456",
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
 
@@ -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), {
@@ -465,26 +470,30 @@ export async function getMarginfiAccountPositionState(
465
470
  );
466
471
 
467
472
  return {
468
- liqUtilizationRateBps: getLiqUtilzationRateBps(
469
- supplyUsd,
470
- debtUsd,
471
- toBps(liqThreshold)
472
- ),
473
- netWorth: {
474
- baseAmountUsdValue: toBaseUnit(supplyUsd - debtUsd, USD_DECIMALS),
475
- baseUnit: toBaseUnit(
476
- (supplyUsd - debtUsd) / supplyPrice,
477
- supplyUsage!.decimals
473
+ supplyBank,
474
+ debtBank,
475
+ state: {
476
+ liqUtilizationRateBps: getLiqUtilzationRateBps(
477
+ supplyUsd,
478
+ debtUsd,
479
+ toBps(liqThreshold)
478
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: [],
479
496
  },
480
- supply: supplyUsage!,
481
- debt: debtUsage!,
482
- maxLtvBps: toBps(maxLtv),
483
- liqThresholdBps: toBps(liqThreshold),
484
- lastUpdated: BigInt(currentUnixSeconds()),
485
- padding1: [],
486
- padding2: [],
487
- padding: [],
488
497
  };
489
498
  }
490
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 {
@@ -9,9 +13,6 @@ import {
9
13
  } from "../../src/generated";
10
14
  import { buildSolautoRebalanceTransaction } from "../../src/transactions/transactionUtils";
11
15
  import {
12
- bytesToI80F48,
13
- getLiqUtilzationRateBps,
14
- getMaxLiqUtilizationRateBps,
15
16
  maxBoostToBps,
16
17
  maxRepayFromBps,
17
18
  maxRepayToBps,
@@ -24,39 +25,24 @@ import {
24
25
  } from "../../src/transactions/transactionsManager";
25
26
  import { PublicKey } from "@solana/web3.js";
26
27
  import {
27
- DEFAULT_MARGINFI_GROUP,
28
- MARGINFI_ACCOUNTS,
29
28
  SOLAUTO_PROD_PROGRAM,
30
29
  SOLAUTO_TEST_PROGRAM,
31
30
  USDC,
32
- USDT,
33
31
  } from "../../src/constants";
34
32
  import {
35
33
  buildHeliusApiUrl,
36
- getMarginfiAccountPositionState,
37
34
  getSolautoManagedPositions,
38
- retryWithExponentialBackoff,
39
35
  } from "../../src/utils";
40
36
  import { PriorityFeeSetting } from "../../src/types";
41
- import { buildIronforgeApiUrl, fetchSolautoPosition, fetchTokenPrices } from "../../dist";
42
- import { safeFetchBank } from "../../src/marginfi-sdk";
43
-
44
- export function getFlooredTimestampByMinute(
45
- unixSeconds: number,
46
- intervalInMinutes: number = 1
47
- ): number {
48
- const unixTime = Math.floor(new Date(unixSeconds * 1000).getTime() / 1000);
49
- const interval = intervalInMinutes * 60;
50
- return Math.floor(unixTime / interval) * interval;
51
- }
37
+ import { buildIronforgeApiUrl } from "../../dist";
52
38
 
53
39
  describe("Solauto Marginfi tests", async () => {
54
- const signer = setupTest();
55
- // const signer = setupTest("solauto-manager");
40
+ // const signer = setupTest();
41
+ const signer = setupTest("solauto-manager");
56
42
 
57
43
  const payForTransactions = false;
58
44
  const testProgram = false;
59
- const positionId = 3;
45
+ const positionId = 1;
60
46
 
61
47
  it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
62
48
  const client = new SolautoMarginfiClient(
@@ -72,7 +58,7 @@ describe("Solauto Marginfi tests", async () => {
72
58
  await client.initialize({
73
59
  signer,
74
60
  positionId,
75
- authority: new PublicKey("7GMmfZdCgJSCawA7roGiGgvueU3XoEHQXUtiCnuDYUde"),
61
+ authority: new PublicKey("He4ka5Q3N1UvZikZvykdi47xyk5PoVP2tcQL5sVp31Sz"),
76
62
  // new: true,
77
63
  // marginfiAccount: new PublicKey(
78
64
  // ""
@@ -82,22 +68,7 @@ describe("Solauto Marginfi tests", async () => {
82
68
  // debtMint: new PublicKey(USDC),
83
69
  });
84
70
 
85
- // console.log(await client.getFreshPositionState());
86
-
87
- // const debtBank = await safeFetchBank(
88
- // client.umi,
89
- // publicKey(MARGINFI_ACCOUNTS[DEFAULT_MARGINFI_GROUP][USDC].bank)
90
- // );
91
- // const state = await getMarginfiAccountPositionState(client.umi, {
92
- // pk: new PublicKey("85YaXXB1uyDMLYf4ob6jfV1kr29muVNm7mpmM8qjbVq6"),
93
- // });
94
- // console.log(state);
95
- // console.log(maxBoostToBps(state.maxLtvBps, state.liqThresholdBps));
96
- // console.log(
97
- // getMaxLiqUtilizationRateBps(state.maxLtvBps, state.liqThresholdBps, 0)
98
- // );
99
- // console.log(getLiqUtilzationRateBps(18.78, 7.47, state.liqThresholdBps));
100
- // return;
71
+ // console.log(await getSolautoManagedPositions(client.umi));
101
72
 
102
73
  const transactionItems: TransactionItem[] = [];
103
74
  // const settingParams: SolautoSettingsParametersInpArgs = {
@@ -115,15 +86,6 @@ describe("Solauto Marginfi tests", async () => {
115
86
  // targetBoostToBps: none(),
116
87
  // };
117
88
 
118
- const settingParams: SolautoSettingsParametersInpArgs = {
119
- boostToBps: client.solautoPositionSettings().boostToBps - 150,
120
- boostGap: 50,
121
- repayToBps: client.solautoPositionSettings().repayToBps - 150,
122
- repayGap: 50,
123
- automation: none(),
124
- targetBoostToBps: none(),
125
- };
126
-
127
89
  // if (client.solautoPositionData === null) {
128
90
  // transactionItems.push(
129
91
  // new TransactionItem(async () => {
@@ -169,18 +131,11 @@ describe("Solauto Marginfi tests", async () => {
169
131
  transactionItems.push(
170
132
  new TransactionItem(
171
133
  async (attemptNum) =>
172
- await buildSolautoRebalanceTransaction(client, 4000, attemptNum),
134
+ await buildSolautoRebalanceTransaction(client, undefined, attemptNum),
173
135
  "rebalance"
174
136
  )
175
137
  );
176
138
 
177
- // transactionItems.push(
178
- // new TransactionItem(
179
- // async () => ({ tx: client.refresh() }),
180
- // "refresh"
181
- // )
182
- // );
183
-
184
139
  // transactionItems.push(
185
140
  // new TransactionItem(
186
141
  // async (attemptNum) =>