@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
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDynamicMarginfiProgram = createDynamicMarginfiProgram;
4
+ exports.umiWithMarginfiProgram = umiWithMarginfiProgram;
5
+ exports.getAllBankRelatedAccounts = getAllBankRelatedAccounts;
6
+ exports.fetchBankAddresses = fetchBankAddresses;
7
+ exports.getMarginfiPriceOracle = getMarginfiPriceOracle;
8
+ exports.findMarginfiAccounts = findMarginfiAccounts;
9
+ exports.getRemainingAccountsForMarginfiHealthCheck = getRemainingAccountsForMarginfiHealthCheck;
10
+ exports.calcMarginfiMaxLtvAndLiqThresholdBps = calcMarginfiMaxLtvAndLiqThresholdBps;
11
+ exports.marginfiAccountEmpty = marginfiAccountEmpty;
12
+ const web3_js_1 = require("@solana/web3.js");
13
+ const umi_1 = require("@metaplex-foundation/umi");
14
+ const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
15
+ const constants_1 = require("../../constants");
16
+ const marginfi_sdk_1 = require("../../marginfi-sdk");
17
+ const numberUtils_1 = require("../numberUtils");
18
+ const accountUtils_1 = require("../accountUtils");
19
+ const pythUtils_1 = require("../pythUtils");
20
+ const solanaUtils_1 = require("../solanaUtils");
21
+ function createDynamicMarginfiProgram(env) {
22
+ return {
23
+ name: "marginfi",
24
+ publicKey: (0, umi_1.publicKey)((0, constants_1.getMarginfiAccounts)(env ?? "Prod").program),
25
+ getErrorFromCode(code, cause) {
26
+ return (0, marginfi_sdk_1.getMarginfiErrorFromCode)(code, this, cause);
27
+ },
28
+ getErrorFromName(name, cause) {
29
+ return (0, marginfi_sdk_1.getMarginfiErrorFromName)(name, this, cause);
30
+ },
31
+ isOnCluster() {
32
+ return true;
33
+ },
34
+ };
35
+ }
36
+ function umiWithMarginfiProgram(umi, marginfiEnv) {
37
+ return umi.use({
38
+ install(umi) {
39
+ umi.programs.add(createDynamicMarginfiProgram(marginfiEnv ?? "Prod"), false);
40
+ },
41
+ });
42
+ }
43
+ async function getAllBankRelatedAccounts(umi, bankAccountsMap) {
44
+ const banks = Object.values(bankAccountsMap).flatMap((group) => Object.values(group).map((accounts) => accounts.bank));
45
+ const banksData = await (0, marginfi_sdk_1.safeFetchAllBank)(umi, banks.map((x) => (0, umi_1.publicKey)(x)));
46
+ const oracles = banksData
47
+ .map((bank) => {
48
+ const oracleKey = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.config.oracleKeys[0]);
49
+ return bank.config.oracleSetup === marginfi_sdk_1.OracleSetup.PythPushOracle
50
+ ? [
51
+ (0, pythUtils_1.getPythPushOracleAddress)(oracleKey, constants_1.PYTH_SPONSORED_SHARD_ID),
52
+ (0, pythUtils_1.getPythPushOracleAddress)(oracleKey, constants_1.MARGINFI_SPONSORED_SHARD_ID),
53
+ ]
54
+ : [oracleKey];
55
+ })
56
+ .flat()
57
+ .map((x) => x.toString());
58
+ const otherAccounts = Object.entries(bankAccountsMap).flatMap(([groupName, tokenMap]) => Object.values(tokenMap).flatMap((accounts) => [
59
+ groupName,
60
+ accounts.liquidityVault,
61
+ accounts.vaultAuthority,
62
+ ]));
63
+ return Array.from(new Set([...banks, ...oracles, ...otherAccounts]))
64
+ .filter((x) => x !== web3_js_1.PublicKey.default.toString())
65
+ .map((x) => new web3_js_1.PublicKey(x));
66
+ }
67
+ async function fetchBankAddresses(umi, bankPk) {
68
+ const bank = await (0, marginfi_sdk_1.fetchBank)(umi, (0, umi_web3js_adapters_1.fromWeb3JsPublicKey)(bankPk));
69
+ const liquidityVault = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.liquidityVault);
70
+ const vaultAuthority = (await (0, accountUtils_1.getTokenAccountData)(umi, liquidityVault))
71
+ ?.owner;
72
+ const priceOracle = await getMarginfiPriceOracle(umi, { data: bank });
73
+ return {
74
+ bank: bankPk,
75
+ liquidityVault,
76
+ vaultAuthority,
77
+ priceOracle,
78
+ };
79
+ }
80
+ async function getMarginfiPriceOracle(umi, bank) {
81
+ if (!bank.data) {
82
+ bank.data = await (0, marginfi_sdk_1.fetchBank)(umi, (0, umi_web3js_adapters_1.fromWeb3JsPublicKey)(bank.pk));
83
+ }
84
+ const oracleKey = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.data.config.oracleKeys[0]);
85
+ const priceOracle = bank.data.config.oracleSetup === marginfi_sdk_1.OracleSetup.PythPushOracle
86
+ ? await (0, pythUtils_1.getMostUpToDatePythOracle)(umi, [
87
+ (0, pythUtils_1.getPythPushOracleAddress)(oracleKey, constants_1.PYTH_SPONSORED_SHARD_ID),
88
+ (0, pythUtils_1.getPythPushOracleAddress)(oracleKey, constants_1.MARGINFI_SPONSORED_SHARD_ID),
89
+ ])
90
+ : oracleKey;
91
+ return priceOracle;
92
+ }
93
+ function findMarginfiAccounts(bank) {
94
+ const search = (bankAccounts) => {
95
+ for (const group in bankAccounts) {
96
+ for (const key in bankAccounts[group]) {
97
+ const account = bankAccounts[group][key];
98
+ if (account.bank.toString().toLowerCase() ===
99
+ bank.toString().toLowerCase()) {
100
+ return { ...account, mint: new web3_js_1.PublicKey(key) };
101
+ }
102
+ }
103
+ }
104
+ };
105
+ let res = search((0, constants_1.getMarginfiAccounts)("Prod").bankAccounts);
106
+ if (res) {
107
+ return res;
108
+ }
109
+ res = search((0, constants_1.getMarginfiAccounts)("Staging").bankAccounts);
110
+ if (res) {
111
+ return res;
112
+ }
113
+ throw new Error(`Marginfi accounts not found by the bank: ${bank}`);
114
+ }
115
+ async function getRemainingAccountsForMarginfiHealthCheck(umi, balance) {
116
+ if (!balance.active) {
117
+ return [];
118
+ }
119
+ const priceOracle = await getMarginfiPriceOracle(umi, {
120
+ pk: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(balance.bankPk),
121
+ });
122
+ return [
123
+ (0, solanaUtils_1.getAccountMeta)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(balance.bankPk)),
124
+ (0, solanaUtils_1.getAccountMeta)(priceOracle),
125
+ ];
126
+ }
127
+ function calcMarginfiMaxLtvAndLiqThresholdBps(supplyBank, debtBank, supplyPrice) {
128
+ let maxLtv = (0, numberUtils_1.bytesToI80F48)(supplyBank.config.assetWeightInit.value) /
129
+ (0, numberUtils_1.bytesToI80F48)(debtBank.config.liabilityWeightInit.value);
130
+ const liqThreshold = (0, numberUtils_1.bytesToI80F48)(supplyBank.config.assetWeightMaint.value) /
131
+ (0, numberUtils_1.bytesToI80F48)(debtBank.config.liabilityWeightMaint.value);
132
+ const totalDepositedUsdValue = (0, numberUtils_1.fromBaseUnit)(BigInt(Math.round((0, numberUtils_1.bytesToI80F48)(supplyBank.totalAssetShares.value) *
133
+ (0, numberUtils_1.bytesToI80F48)(supplyBank.assetShareValue.value))), supplyBank.mintDecimals) * supplyPrice;
134
+ if (supplyBank.config.totalAssetValueInitLimit !== BigInt(0) &&
135
+ totalDepositedUsdValue > supplyBank.config.totalAssetValueInitLimit) {
136
+ const discount = Number(supplyBank.config.totalAssetValueInitLimit) /
137
+ totalDepositedUsdValue;
138
+ maxLtv = maxLtv * Number(discount);
139
+ }
140
+ return [(0, numberUtils_1.toBps)(maxLtv, "Floor"), (0, numberUtils_1.toBps)(liqThreshold, "Floor")];
141
+ }
142
+ function marginfiAccountEmpty(marginfiAccount) {
143
+ return (marginfiAccount.lendingAccount.balances.find((x) => x.bankPk.toString() !== web3_js_1.PublicKey.default.toString() &&
144
+ ((0, numberUtils_1.bytesToI80F48)(x.assetShares.value) > 0.000001 ||
145
+ (0, numberUtils_1.bytesToI80F48)(x.liabilityShares.value) > 0.000001)) === undefined);
146
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./data";
2
+ export * from "./general";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/marginfi/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./data"), exports);
18
+ __exportStar(require("./general"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ const marginfi_sdk_1 = require("../marginfi-sdk");
30
30
  const accountUtils_1 = require("./accountUtils");
31
31
  const generalUtils_1 = require("./generalUtils");
32
32
  const solautoUtils_1 = require("./solautoUtils");
33
- const marginfiUtils_1 = require("./marginfiUtils");
33
+ const marginfi_1 = require("./marginfi");
34
34
  function getSolanaRpcConnection(rpcUrl, programId, lpEnv) {
35
35
  const connection = new web3_js_1.Connection(rpcUrl, {
36
36
  commitment: "confirmed",
@@ -38,7 +38,7 @@ function getSolanaRpcConnection(rpcUrl, programId, lpEnv) {
38
38
  const umi = (0, umi_bundle_defaults_1.createUmi)(connection).use({
39
39
  install(umi) {
40
40
  umi.programs.add((0, solautoUtils_1.createDynamicSolautoProgram)(programId), false);
41
- umi.programs.add((0, marginfiUtils_1.createDynamicMarginfiProgram)(lpEnv), false);
41
+ umi.programs.add((0, marginfi_1.createDynamicMarginfiProgram)(lpEnv), false);
42
42
  },
43
43
  });
44
44
  return [connection, umi];
@@ -111,12 +111,16 @@ function addTxOptimizations(umi, tx, computeUnitPrice, computeUnitLimit) {
111
111
  ? setComputeUnitLimitUmiIx(umi.identity, computeUnitLimit)
112
112
  : (0, umi_1.transactionBuilder)();
113
113
  const allOptimizations = tx.prepend(computePriceIx).prepend(computeLimitIx);
114
- const oneOptimization = tx.prepend(computePriceIx);
114
+ const withCuPrice = tx.prepend(computePriceIx);
115
+ const withCuLimit = tx.prepend(computeLimitIx);
115
116
  if (allOptimizations.fitsInOneTransaction(umi)) {
116
117
  return allOptimizations;
117
118
  }
118
- else if (oneOptimization.fitsInOneTransaction(umi)) {
119
- return oneOptimization;
119
+ else if (withCuPrice.fitsInOneTransaction(umi)) {
120
+ return withCuPrice;
121
+ }
122
+ else if (withCuLimit.fitsInOneTransaction(umi)) {
123
+ return withCuLimit;
120
124
  }
121
125
  else {
122
126
  return tx;
@@ -259,24 +263,21 @@ async function sendSingleOptimizedTransaction(umi, connection, tx, txType, prior
259
263
  ]);
260
264
  (0, generalUtils_1.consoleLog)("Unique account locks: ", Array.from(new Set(accounts)).length);
261
265
  const blockhash = await connection.getLatestBlockhash("confirmed");
262
- let computeUnitLimit = undefined;
266
+ let cuLimit = undefined;
263
267
  if (txType !== "skip-simulation") {
264
268
  const simulationResult = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await simulateTransaction(umi, connection, assembleFinalTransaction(umi, tx, undefined, 1400000).setBlockhash(blockhash)), 3);
265
- computeUnitLimit = Math.round(simulationResult.value.unitsConsumed * 1.15);
266
- (0, generalUtils_1.consoleLog)("Compute unit limit: ", computeUnitLimit);
269
+ cuLimit = Math.round(simulationResult.value.unitsConsumed * 1.15);
270
+ (0, generalUtils_1.consoleLog)("Compute unit limit: ", cuLimit);
267
271
  }
268
272
  let cuPrice;
269
273
  if (prioritySetting !== types_1.PriorityFeeSetting.None) {
270
274
  cuPrice = await getComputeUnitPriceEstimate(umi, tx, prioritySetting);
271
- if (!cuPrice) {
272
- cuPrice = 1000000;
273
- }
274
- cuPrice = Math.min(cuPrice, 100 * 1000000);
275
+ cuPrice = Math.min(cuPrice ?? 0, 100000000);
275
276
  (0, generalUtils_1.consoleLog)("Compute unit price: ", cuPrice);
276
277
  }
277
278
  if (txType !== "only-simulate") {
278
279
  onAwaitingSign?.();
279
- const signedTx = await assembleFinalTransaction(umi, tx, cuPrice, computeUnitLimit)
280
+ const signedTx = await assembleFinalTransaction(umi, tx, cuPrice, cuLimit)
280
281
  .setBlockhash(blockhash)
281
282
  .buildAndSign(umi);
282
283
  const txSig = await spamSendTransactionUntilConfirmed(connection, (0, umi_web3js_adapters_1.toWeb3JsTransaction)(signedTx), blockhash);
@@ -1 +1 @@
1
- {"version":3,"file":"solautoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solautoUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solautoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solautoUtils.ts"],"names":[],"mappings":"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"}
@@ -23,8 +23,8 @@ const solautoPosition_1 = require("../solautoPosition");
23
23
  const accountUtils_1 = require("./accountUtils");
24
24
  const numberUtils_1 = require("./numberUtils");
25
25
  const priceUtils_1 = require("./priceUtils");
26
- const marginfiUtils_1 = require("./marginfiUtils");
27
26
  const generalUtils_1 = require("./generalUtils");
27
+ const marginfi_1 = require("./marginfi");
28
28
  function createDynamicSolautoProgram(programId) {
29
29
  return {
30
30
  name: "solauto",
@@ -120,8 +120,8 @@ async function getSolautoManagedPositions(umi, authority, positionTypeFilter) {
120
120
  let tokens;
121
121
  if (position.position.lendingPlatform === generated_1.LendingPlatform.Marginfi) {
122
122
  tokens = [
123
- (0, marginfiUtils_1.findMarginfiAccounts)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(position.position.lpSupplyAccount)).mint,
124
- (0, marginfiUtils_1.findMarginfiAccounts)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(position.position.lpDebtAccount))
123
+ (0, marginfi_1.findMarginfiAccounts)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(position.position.lpSupplyAccount)).mint,
124
+ (0, marginfi_1.findMarginfiAccounts)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(position.position.lpDebtAccount))
125
125
  .mint,
126
126
  ];
127
127
  }
@@ -193,7 +193,7 @@ async function getAllPositionsByAuthority(umi, user, positionTypeFilter) {
193
193
  if (positionTypeFilter === generated_1.PositionType.SafeLoan) {
194
194
  return [];
195
195
  }
196
- let marginfiPositions = await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(umi, user, undefined, true);
196
+ let marginfiPositions = await (0, marginfi_1.getAllMarginfiAccountsByAuthority)(umi, user, undefined, true);
197
197
  marginfiPositions = marginfiPositions.filter((x) => (0, generalUtils_1.validPubkey)(x.supplyMint) && (0, generalUtils_1.validPubkey)(x.debtMint));
198
198
  return marginfiPositions.map((x) => ({
199
199
  publicKey: x.marginfiAccount,
@@ -17,7 +17,7 @@ import {
17
17
  import { getSecretKey } from "./shared";
18
18
 
19
19
  const payForTransaction = false;
20
- const testProgram = true;
20
+ const testProgram = false;
21
21
  const lpEnv: ProgramEnv = "Prod";
22
22
 
23
23
  export async function main() {
@@ -29,7 +29,7 @@ export async function main() {
29
29
 
30
30
  const signer = createSignerFromKeypair(
31
31
  umi,
32
- fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey("solauto-manager")))
32
+ fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey()))
33
33
  );
34
34
 
35
35
  const client = getClient(LendingPlatform.Marginfi, {
@@ -54,7 +54,7 @@ export async function main() {
54
54
  client,
55
55
  undefined,
56
56
  payForTransaction ? "normal" : "only-simulate",
57
- PriorityFeeSetting.Min,
57
+ PriorityFeeSetting.High,
58
58
  true,
59
59
  undefined,
60
60
  { totalRetries: 5 }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.667",
3
+ "version": "1.0.669",
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",