@haven-fi/solauto-sdk 1.0.667 → 1.0.669

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.
Files changed (50) hide show
  1. package/dist/marginfi-sdk/errors/marginfi.d.ts +209 -23
  2. package/dist/marginfi-sdk/errors/marginfi.d.ts.map +1 -1
  3. package/dist/marginfi-sdk/errors/marginfi.js +465 -123
  4. package/dist/marginfi-sdk/instructions/lendingAccountDeposit.d.ts +3 -1
  5. package/dist/marginfi-sdk/instructions/lendingAccountDeposit.d.ts.map +1 -1
  6. package/dist/marginfi-sdk/instructions/lendingAccountDeposit.js +1 -0
  7. package/dist/services/rebalance/rebalanceTxBuilder.js +1 -1
  8. package/dist/services/solauto/solautoMarginfiClient.d.ts.map +1 -1
  9. package/dist/services/solauto/solautoMarginfiClient.js +2 -1
  10. package/dist/services/transactions/transactionUtils.d.ts.map +1 -1
  11. package/dist/services/transactions/transactionUtils.js +1 -0
  12. package/dist/solautoPosition/positionUtils.d.ts.map +1 -1
  13. package/dist/solautoPosition/solautoPositionEx.d.ts +3 -3
  14. package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -1
  15. package/dist/solautoPosition/solautoPositionEx.js +14 -8
  16. package/dist/utils/index.d.ts +1 -1
  17. package/dist/utils/index.d.ts.map +1 -1
  18. package/dist/utils/index.js +1 -1
  19. package/dist/utils/marginfi/data.d.ts +41 -0
  20. package/dist/utils/marginfi/data.d.ts.map +1 -0
  21. package/dist/utils/{marginfiUtils.js → marginfi/data.js} +8 -145
  22. package/dist/utils/marginfi/general.d.ts +27 -0
  23. package/dist/utils/marginfi/general.d.ts.map +1 -0
  24. package/dist/utils/marginfi/general.js +146 -0
  25. package/dist/utils/marginfi/index.d.ts +3 -0
  26. package/dist/utils/marginfi/index.d.ts.map +1 -0
  27. package/dist/utils/marginfi/index.js +18 -0
  28. package/dist/utils/solanaUtils.d.ts.map +1 -1
  29. package/dist/utils/solanaUtils.js +14 -13
  30. package/dist/utils/solautoUtils.d.ts.map +1 -1
  31. package/dist/utils/solautoUtils.js +4 -4
  32. package/local/txSandbox.ts +3 -3
  33. package/package.json +1 -1
  34. package/src/marginfi-sdk/errors/marginfi.ts +583 -122
  35. package/src/marginfi-sdk/instructions/lendingAccountDeposit.ts +7 -0
  36. package/src/services/rebalance/rebalanceTxBuilder.ts +1 -1
  37. package/src/services/solauto/solautoMarginfiClient.ts +2 -1
  38. package/src/services/transactions/transactionUtils.ts +1 -0
  39. package/src/solautoPosition/positionUtils.ts +0 -1
  40. package/src/solautoPosition/solautoPositionEx.ts +24 -9
  41. package/src/utils/index.ts +1 -1
  42. package/src/utils/{marginfiUtils.ts → marginfi/data.ts} +10 -220
  43. package/src/utils/marginfi/general.ts +226 -0
  44. package/src/utils/marginfi/index.ts +2 -0
  45. package/src/utils/solanaUtils.ts +12 -17
  46. package/src/utils/solautoUtils.ts +1 -4
  47. package/tests/transactions/shared.ts +3 -1
  48. package/tests/transactions/solautoMarginfi.ts +4 -2
  49. package/dist/utils/marginfiUtils.d.ts +0 -62
  50. package/dist/utils/marginfiUtils.d.ts.map +0 -1
@@ -47,7 +47,7 @@ import {
47
47
  retryWithExponentialBackoff,
48
48
  } from "./generalUtils";
49
49
  import { createDynamicSolautoProgram } from "./solautoUtils";
50
- import { createDynamicMarginfiProgram } from "./marginfiUtils";
50
+ import { createDynamicMarginfiProgram } from "./marginfi";
51
51
 
52
52
  export function getSolanaRpcConnection(
53
53
  rpcUrl: string,
@@ -223,11 +223,14 @@ export function addTxOptimizations(
223
223
  : transactionBuilder();
224
224
 
225
225
  const allOptimizations = tx.prepend(computePriceIx).prepend(computeLimitIx);
226
- const oneOptimization = tx.prepend(computePriceIx);
226
+ const withCuPrice = tx.prepend(computePriceIx);
227
+ const withCuLimit = tx.prepend(computeLimitIx);
227
228
  if (allOptimizations.fitsInOneTransaction(umi)) {
228
229
  return allOptimizations;
229
- } else if (oneOptimization.fitsInOneTransaction(umi)) {
230
- return oneOptimization;
230
+ } else if (withCuPrice.fitsInOneTransaction(umi)) {
231
+ return withCuPrice;
232
+ } else if (withCuLimit.fitsInOneTransaction(umi)) {
233
+ return withCuLimit;
231
234
  } else {
232
235
  return tx;
233
236
  }
@@ -448,7 +451,7 @@ export async function sendSingleOptimizedTransaction(
448
451
 
449
452
  const blockhash = await connection.getLatestBlockhash("confirmed");
450
453
 
451
- let computeUnitLimit = undefined;
454
+ let cuLimit = undefined;
452
455
  if (txType !== "skip-simulation") {
453
456
  const simulationResult = await retryWithExponentialBackoff(
454
457
  async () =>
@@ -461,28 +464,20 @@ export async function sendSingleOptimizedTransaction(
461
464
  ),
462
465
  3
463
466
  );
464
- computeUnitLimit = Math.round(simulationResult.value.unitsConsumed! * 1.15);
465
- consoleLog("Compute unit limit: ", computeUnitLimit);
467
+ cuLimit = Math.round(simulationResult.value.unitsConsumed! * 1.15);
468
+ consoleLog("Compute unit limit: ", cuLimit);
466
469
  }
467
470
 
468
471
  let cuPrice: number | undefined;
469
472
  if (prioritySetting !== PriorityFeeSetting.None) {
470
473
  cuPrice = await getComputeUnitPriceEstimate(umi, tx, prioritySetting);
471
- if (!cuPrice) {
472
- cuPrice = 1_000_000;
473
- }
474
- cuPrice = Math.min(cuPrice, 100 * 1_000_000);
474
+ cuPrice = Math.min(cuPrice ?? 0, 100_000_000);
475
475
  consoleLog("Compute unit price: ", cuPrice);
476
476
  }
477
477
 
478
478
  if (txType !== "only-simulate") {
479
479
  onAwaitingSign?.();
480
- const signedTx = await assembleFinalTransaction(
481
- umi,
482
- tx,
483
- cuPrice,
484
- computeUnitLimit
485
- )
480
+ const signedTx = await assembleFinalTransaction(umi, tx, cuPrice, cuLimit)
486
481
  .setBlockhash(blockhash)
487
482
  .buildAndSign(umi);
488
483
  const txSig = await spamSendTransactionUntilConfirmed(
@@ -37,11 +37,8 @@ import {
37
37
  toRoundedUsdValue,
38
38
  } from "./numberUtils";
39
39
  import { fetchTokenPrices } from "./priceUtils";
40
- import {
41
- findMarginfiAccounts,
42
- getAllMarginfiAccountsByAuthority,
43
- } from "./marginfiUtils";
44
40
  import { validPubkey } from "./generalUtils";
41
+ import { findMarginfiAccounts, getAllMarginfiAccountsByAuthority } from "./marginfi";
45
42
 
46
43
  export function createDynamicSolautoProgram(programId?: PublicKey): Program {
47
44
  return {
@@ -27,10 +27,12 @@ export async function e2eTransactionTest(
27
27
  signer: Signer,
28
28
  testProgram: boolean,
29
29
  lendingPlatform: LendingPlatform,
30
- withFlashLoan: boolean
30
+ withFlashLoan: boolean,
31
+ showLogs?: boolean
31
32
  ) {
32
33
  const client = getClient(lendingPlatform, {
33
34
  signer,
35
+ showLogs,
34
36
  rpcUrl: LOCAL_IRONFORGE_API_URL,
35
37
  programId: testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
36
38
  });
@@ -5,13 +5,14 @@ import { e2eTransactionTest } from "./shared";
5
5
 
6
6
  describe("Solauto Marginfi tests", async () => {
7
7
  const signer = setupTest();
8
- const testProgram = true;
8
+ const testProgram = false;
9
9
 
10
10
  it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
11
11
  await e2eTransactionTest(
12
12
  signer,
13
13
  testProgram,
14
14
  LendingPlatform.Marginfi,
15
+ false,
15
16
  false
16
17
  );
17
18
  });
@@ -21,7 +22,8 @@ describe("Solauto Marginfi tests", async () => {
21
22
  signer,
22
23
  testProgram,
23
24
  LendingPlatform.Marginfi,
24
- true
25
+ true,
26
+ false
25
27
  );
26
28
  });
27
29
  });
@@ -1,62 +0,0 @@
1
- import { PublicKey } from "@solana/web3.js";
2
- import { AccountMeta, Program, Umi } from "@metaplex-foundation/umi";
3
- import { ProgramEnv, MarginfiAssetAccounts } from "../types";
4
- import { PositionState, PriceType } from "../generated";
5
- import { MarginfiBankAccountsMap } from "../constants";
6
- import { Balance, Bank, MarginfiAccount } from "../marginfi-sdk";
7
- import { ContextUpdates } from "./solautoUtils";
8
- export declare function createDynamicMarginfiProgram(env?: ProgramEnv): Program;
9
- export declare function umiWithMarginfiProgram(umi: Umi, marginfiEnv?: ProgramEnv): Umi;
10
- export declare function getAllBankRelatedAccounts(umi: Umi, bankAccountsMap: MarginfiBankAccountsMap): Promise<PublicKey[]>;
11
- export declare function fetchBankAddresses(umi: Umi, bankPk: PublicKey): Promise<{
12
- bank: PublicKey;
13
- liquidityVault: PublicKey;
14
- vaultAuthority: PublicKey | undefined;
15
- priceOracle: PublicKey;
16
- }>;
17
- export declare function getMarginfiPriceOracle(umi: Umi, bank: {
18
- pk?: PublicKey;
19
- data?: Bank;
20
- }): Promise<PublicKey>;
21
- interface AllMarginfiAssetAccounts extends MarginfiAssetAccounts {
22
- mint: PublicKey;
23
- }
24
- export declare function findMarginfiAccounts(bank: PublicKey): AllMarginfiAssetAccounts;
25
- export declare function getRemainingAccountsForMarginfiHealthCheck(umi: Umi, balance: Balance): Promise<AccountMeta[]>;
26
- export declare function calcMarginfiMaxLtvAndLiqThresholdBps(supplyBank: Bank, debtBank: Bank, supplyPrice: number): [number, number];
27
- export declare function getMarginfiMaxLtvAndLiqThresholdBps(umi: Umi, marginfiGroup: PublicKey, supply: {
28
- mint: PublicKey;
29
- bank?: Bank | null;
30
- }, debt: {
31
- mint: PublicKey;
32
- bank?: Bank | null;
33
- }, supplyPrice?: number): Promise<[number, number]>;
34
- export declare function getEmptyMarginfiAccountsByAuthority(umi: Umi, authority: PublicKey): Promise<MarginfiAccount[]>;
35
- export declare function getAllMarginfiAccountsByAuthority(umi: Umi, authority: PublicKey, group?: PublicKey, compatibleWithSolauto?: boolean): Promise<{
36
- marginfiAccount: PublicKey;
37
- supplyMint?: PublicKey;
38
- debtMint?: PublicKey;
39
- }[]>;
40
- export declare function getBankLiquidityAvailableBaseUnit(bank: Bank | null, availableToDeposit: boolean): bigint;
41
- interface BankSelection {
42
- mint?: PublicKey;
43
- banksCache?: BanksCache;
44
- }
45
- type BanksCache = {
46
- [group: string]: {
47
- [mint: string]: Bank;
48
- };
49
- };
50
- export declare function getMarginfiAccountPositionState(umi: Umi, lpUserAccount: {
51
- pk?: PublicKey;
52
- data?: MarginfiAccount | null;
53
- }, marginfiGroup?: PublicKey, supply?: BankSelection, debt?: BankSelection, programEnv?: ProgramEnv, contextUpdates?: ContextUpdates, priceType?: PriceType): Promise<{
54
- supplyBank: Bank | null;
55
- debtBank: Bank | null;
56
- state: PositionState;
57
- } | undefined>;
58
- export declare function calculateAnnualAPYs(bank: Bank): [number, number];
59
- export declare function getUpToDateShareValues(bank: Bank): [number, number];
60
- export declare function marginfiAccountEmpty(marginfiAccount: MarginfiAccount): boolean;
61
- export {};
62
- //# sourceMappingURL=marginfiUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"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"}