@haven-fi/solauto-sdk 1.0.305 → 1.0.306

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.
@@ -21,6 +21,7 @@ export declare function getAllMarginfiAccountsByAuthority(conn: Connection, umi:
21
21
  supplyMint?: PublicKey;
22
22
  debtMint?: PublicKey;
23
23
  }[]>;
24
+ export declare function getAmountAvailableFromBank(bank: Bank | null, isAsset: boolean): number;
24
25
  interface BankSelection {
25
26
  mint?: PublicKey;
26
27
  banksCache?: BanksCache;
@@ -35,6 +36,6 @@ export declare function getMarginfiAccountPositionState(umi: Umi, protocolAccoun
35
36
  data?: MarginfiAccount;
36
37
  }, marginfiGroup?: PublicKey, supply?: BankSelection, debt?: BankSelection, livePositionUpdates?: LivePositionUpdates): Promise<PositionState | undefined>;
37
38
  export declare function calculateAnnualAPYs(bank: Bank): [number, number];
38
- export declare function getUpToDateShareValues(bank: Bank): Promise<[number, number]>;
39
+ export declare function getUpToDateShareValues(bank: Bank): [number, number];
39
40
  export {};
40
41
  //# sourceMappingURL=marginfiUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,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,yBAAyB,CACvC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,wBAAwB,CAC5C,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,CAwC3B;AAED,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,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,CAuDA;AA+DD,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,CAiLpC;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgB3B"}
1
+ {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,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,yBAAyB,CACvC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,wBAAwB,CAC5C,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,CAwC3B;AAED,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,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,CAuDA;AAED,wBAAgB,0BAA0B,CACxC,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,CAiLpC;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE"}
@@ -4,6 +4,7 @@ exports.findMarginfiAccounts = findMarginfiAccounts;
4
4
  exports.calcMaxLtvAndLiqThreshold = calcMaxLtvAndLiqThreshold;
5
5
  exports.getMaxLtvAndLiqThreshold = getMaxLtvAndLiqThreshold;
6
6
  exports.getAllMarginfiAccountsByAuthority = getAllMarginfiAccountsByAuthority;
7
+ exports.getAmountAvailableFromBank = getAmountAvailableFromBank;
7
8
  exports.getMarginfiAccountPositionState = getMarginfiAccountPositionState;
8
9
  exports.calculateAnnualAPYs = calculateAnnualAPYs;
9
10
  exports.getUpToDateShareValues = getUpToDateShareValues;
@@ -107,23 +108,29 @@ async function getAllMarginfiAccountsByAuthority(conn, umi, authority, compatibl
107
108
  }));
108
109
  }
109
110
  }
110
- async function getTokenUsage(bank, isAsset, shares, amountUsedAdjustment) {
111
- let amountUsed = 0;
111
+ function getAmountAvailableFromBank(bank, isAsset) {
112
112
  let amountCanBeUsed = 0;
113
- let marketPrice = 0;
114
113
  if (bank !== null) {
115
- [marketPrice] = await (0, priceUtils_1.fetchTokenPrices)([
116
- (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.mint),
117
- ]);
118
- const [assetShareValue, liabilityShareValue] = await getUpToDateShareValues(bank);
119
- const shareValue = isAsset ? assetShareValue : liabilityShareValue;
120
- amountUsed = shares * shareValue + Number(amountUsedAdjustment ?? 0);
114
+ const [assetShareValue, liabilityShareValue] = getUpToDateShareValues(bank);
121
115
  const totalDeposited = (0, numberUtils_1.bytesToI80F48)(bank.totalAssetShares.value) * assetShareValue;
122
116
  amountCanBeUsed = isAsset
123
117
  ? Number(bank.config.depositLimit) - totalDeposited
124
118
  : totalDeposited -
125
119
  (0, numberUtils_1.bytesToI80F48)(bank.totalLiabilityShares.value) * liabilityShareValue;
126
120
  }
121
+ return amountCanBeUsed;
122
+ }
123
+ async function getTokenUsage(bank, isAsset, shares, amountUsedAdjustment) {
124
+ let amountUsed = 0;
125
+ let amountCanBeUsed = 0;
126
+ let marketPrice = 0;
127
+ if (bank !== null) {
128
+ [marketPrice] = await (0, priceUtils_1.fetchTokenPrices)([(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.mint)]);
129
+ const [assetShareValue, liabilityShareValue] = getUpToDateShareValues(bank);
130
+ const shareValue = isAsset ? assetShareValue : liabilityShareValue;
131
+ amountUsed = shares * shareValue + Number(amountUsedAdjustment ?? 0);
132
+ amountCanBeUsed = getAmountAvailableFromBank(bank, isAsset);
133
+ }
127
134
  return {
128
135
  mint: bank?.mint ?? (0, umi_1.publicKey)(web3_js_1.PublicKey.default),
129
136
  decimals: bank?.mintDecimals ?? 0,
@@ -281,7 +288,7 @@ function calculateAnnualAPYs(bank) {
281
288
  const utilizationRatio = totalLiabilities / totalAssets;
282
289
  return calcInterestRate(bank, utilizationRatio);
283
290
  }
284
- async function getUpToDateShareValues(bank) {
291
+ function getUpToDateShareValues(bank) {
285
292
  let timeDelta = (0, generalUtils_1.currentUnixSeconds)() - Number(bank.lastUpdate);
286
293
  const [lendingApr, borrowingApr] = calculateAnnualAPYs(bank);
287
294
  return [
@@ -18,6 +18,7 @@ interface AssetProps {
18
18
  mint: PublicKey;
19
19
  price?: number;
20
20
  amountUsed?: number;
21
+ amountCanBeUsed?: number;
21
22
  }
22
23
  export declare function createFakePositionState(supply: AssetProps, debt: AssetProps, maxLtvBps: number, liqThresholdBps: number): PositionState;
23
24
  export declare function createSolautoSettings(settings: SolautoSettingsParametersInpArgs): SolautoSettingsParameters;
@@ -1 +1 @@
1
- {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
@@ -304,8 +304,8 @@ function createFakePositionState(supply, debt, maxLtvBps, liqThresholdBps) {
304
304
  baseAmountUsdValue: (0, numberUtils_1.toBaseUnit)(supplyUsd, constants_1.USD_DECIMALS),
305
305
  },
306
306
  amountCanBeUsed: {
307
- baseUnit: (0, numberUtils_1.toBaseUnit)(1000000, supplyDecimals),
308
- baseAmountUsdValue: BigInt(Math.round(1000000 * (supply.price ?? 0))),
307
+ baseUnit: (0, numberUtils_1.toBaseUnit)(supply.amountCanBeUsed ?? 0, supplyDecimals),
308
+ baseAmountUsdValue: BigInt(Math.round((supply.amountUsed ?? 0) * (supply.price ?? 0))),
309
309
  },
310
310
  baseAmountMarketPriceUsd: (0, numberUtils_1.toBaseUnit)(supply.price ?? 0, constants_1.USD_DECIMALS),
311
311
  borrowFeeBps: 0,
@@ -322,8 +322,8 @@ function createFakePositionState(supply, debt, maxLtvBps, liqThresholdBps) {
322
322
  baseAmountUsdValue: (0, numberUtils_1.toBaseUnit)(debtUsd, constants_1.USD_DECIMALS),
323
323
  },
324
324
  amountCanBeUsed: {
325
- baseUnit: (0, numberUtils_1.toBaseUnit)(1000000, debtDecimals),
326
- baseAmountUsdValue: BigInt(Math.round(1000000 * (debt.price ?? 0))),
325
+ baseUnit: (0, numberUtils_1.toBaseUnit)(debt.amountCanBeUsed ?? 0, debtDecimals),
326
+ baseAmountUsdValue: BigInt(Math.round((debt.amountCanBeUsed ?? 0) * (debt.price ?? 0))),
327
327
  },
328
328
  baseAmountMarketPriceUsd: (0, numberUtils_1.toBaseUnit)(debt.price ?? 0, constants_1.USD_DECIMALS),
329
329
  borrowFeeBps: 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.305",
3
+ "version": "1.0.306",
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",
@@ -201,6 +201,25 @@ export async function getAllMarginfiAccountsByAuthority(
201
201
  }
202
202
  }
203
203
 
204
+ export function getAmountAvailableFromBank(
205
+ bank: Bank | null,
206
+ isAsset: boolean
207
+ ) {
208
+ let amountCanBeUsed = 0;
209
+
210
+ if (bank !== null) {
211
+ const [assetShareValue, liabilityShareValue] = getUpToDateShareValues(bank);
212
+ const totalDeposited =
213
+ bytesToI80F48(bank.totalAssetShares.value) * assetShareValue;
214
+ amountCanBeUsed = isAsset
215
+ ? Number(bank.config.depositLimit) - totalDeposited
216
+ : totalDeposited -
217
+ bytesToI80F48(bank.totalLiabilityShares.value) * liabilityShareValue;
218
+ }
219
+
220
+ return amountCanBeUsed;
221
+ }
222
+
204
223
  async function getTokenUsage(
205
224
  bank: Bank | null,
206
225
  isAsset: boolean,
@@ -212,20 +231,11 @@ async function getTokenUsage(
212
231
  let marketPrice = 0;
213
232
 
214
233
  if (bank !== null) {
215
- [marketPrice] = await fetchTokenPrices([
216
- toWeb3JsPublicKey(bank.mint),
217
- ]);
218
- const [assetShareValue, liabilityShareValue] =
219
- await getUpToDateShareValues(bank);
234
+ [marketPrice] = await fetchTokenPrices([toWeb3JsPublicKey(bank.mint)]);
235
+ const [assetShareValue, liabilityShareValue] = getUpToDateShareValues(bank);
220
236
  const shareValue = isAsset ? assetShareValue : liabilityShareValue;
221
237
  amountUsed = shares * shareValue + Number(amountUsedAdjustment ?? 0);
222
-
223
- const totalDeposited =
224
- bytesToI80F48(bank.totalAssetShares.value) * assetShareValue;
225
- amountCanBeUsed = isAsset
226
- ? Number(bank.config.depositLimit) - totalDeposited
227
- : totalDeposited -
228
- bytesToI80F48(bank.totalLiabilityShares.value) * liabilityShareValue;
238
+ amountCanBeUsed = getAmountAvailableFromBank(bank, isAsset);
229
239
  }
230
240
 
231
241
  return {
@@ -528,9 +538,7 @@ export function calculateAnnualAPYs(bank: Bank) {
528
538
  return calcInterestRate(bank, utilizationRatio);
529
539
  }
530
540
 
531
- export async function getUpToDateShareValues(
532
- bank: Bank
533
- ): Promise<[number, number]> {
541
+ export function getUpToDateShareValues(bank: Bank): [number, number] {
534
542
  let timeDelta = currentUnixSeconds() - Number(bank.lastUpdate);
535
543
  const [lendingApr, borrowingApr] = calculateAnnualAPYs(bank);
536
544
 
@@ -450,6 +450,7 @@ interface AssetProps {
450
450
  mint: PublicKey;
451
451
  price?: number;
452
452
  amountUsed?: number;
453
+ amountCanBeUsed?: number;
453
454
  }
454
455
 
455
456
  export function createFakePositionState(
@@ -476,8 +477,10 @@ export function createFakePositionState(
476
477
  baseAmountUsdValue: toBaseUnit(supplyUsd, USD_DECIMALS),
477
478
  },
478
479
  amountCanBeUsed: {
479
- baseUnit: toBaseUnit(1000000, supplyDecimals),
480
- baseAmountUsdValue: BigInt(Math.round(1000000 * (supply.price ?? 0))),
480
+ baseUnit: toBaseUnit(supply.amountCanBeUsed ?? 0, supplyDecimals),
481
+ baseAmountUsdValue: BigInt(
482
+ Math.round((supply.amountUsed ?? 0) * (supply.price ?? 0))
483
+ ),
481
484
  },
482
485
  baseAmountMarketPriceUsd: toBaseUnit(supply.price ?? 0, USD_DECIMALS),
483
486
  borrowFeeBps: 0,
@@ -494,8 +497,10 @@ export function createFakePositionState(
494
497
  baseAmountUsdValue: toBaseUnit(debtUsd, USD_DECIMALS),
495
498
  },
496
499
  amountCanBeUsed: {
497
- baseUnit: toBaseUnit(1000000, debtDecimals),
498
- baseAmountUsdValue: BigInt(Math.round(1000000 * (debt.price ?? 0))),
500
+ baseUnit: toBaseUnit(debt.amountCanBeUsed ?? 0, debtDecimals),
501
+ baseAmountUsdValue: BigInt(
502
+ Math.round((debt.amountCanBeUsed ?? 0) * (debt.price ?? 0))
503
+ ),
499
504
  },
500
505
  baseAmountMarketPriceUsd: toBaseUnit(debt.price ?? 0, USD_DECIMALS),
501
506
  borrowFeeBps: 0,
@@ -3,6 +3,7 @@ import { none, publicKey, some } from "@metaplex-foundation/umi";
3
3
  import { setupTest } from "../shared";
4
4
  import { SolautoMarginfiClient } from "../../src/clients/solautoMarginfiClient";
5
5
  import {
6
+ safeFetchSolautoPosition,
6
7
  solautoAction,
7
8
  SolautoSettingsParametersInpArgs,
8
9
  } from "../../src/generated";
@@ -26,7 +27,7 @@ import {
26
27
  SOLAUTO_TEST_PROGRAM,
27
28
  USDC,
28
29
  } from "../../src/constants";
29
- import { buildHeliusApiUrl } from "../../src/utils";
30
+ import { buildHeliusApiUrl, getSolautoManagedPositions, positionStateWithLatestPrices } from "../../src/utils";
30
31
  import { PriorityFeeSetting } from "../../src/types";
31
32
 
32
33
  describe("Solauto Marginfi tests", async () => {
@@ -40,8 +41,8 @@ describe("Solauto Marginfi tests", async () => {
40
41
  it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
41
42
  const client = new SolautoMarginfiClient(
42
43
  buildHeliusApiUrl(process.env.HELIUS_API_KEY!),
43
- true,
44
- testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM
44
+ true
45
+ // testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM
45
46
  );
46
47
 
47
48
  const supply = NATIVE_MINT;
@@ -155,13 +156,13 @@ describe("Solauto Marginfi tests", async () => {
155
156
  // )
156
157
  // );
157
158
 
158
- const statuses = await new TransactionsManager(
159
- client,
160
- undefined,
161
- !payForTransactions ? "only-simulate" : "normal",
162
- PriorityFeeSetting.Low
163
- ).clientSend(transactionItems);
159
+ // const statuses = await new TransactionsManager(
160
+ // client,
161
+ // undefined,
162
+ // !payForTransactions ? "only-simulate" : "normal",
163
+ // PriorityFeeSetting.Low
164
+ // ).clientSend(transactionItems);
164
165
 
165
- console.log(statuses);
166
+ // console.log(statuses);
166
167
  });
167
168
  });