@haven-fi/solauto-sdk 1.0.304 → 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.
@@ -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;AAmBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAoCzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA2LjD,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,oBA4CzE;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsH5C;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,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG;;;;EA0DxE"}
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;AAmBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAoCzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA2LjD,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,oBA2CzE;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsH5C;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,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG;;;;EA0DxE"}
@@ -338,7 +338,7 @@ async function requiresRefreshBeforeRebalance(client) {
338
338
  client.livePositionUpdates.debtAdjustment > BigInt(0)) {
339
339
  return false;
340
340
  }
341
- const oldStateWithLatestPrices = await (0, generalUtils_2.positionStateWithLatestPrices)(client.connection, client.solautoPositionData.state, constants_1.PRICES[client.supplyMint.toString()].price, constants_1.PRICES[client.debtMint.toString()].price);
341
+ const oldStateWithLatestPrices = await (0, generalUtils_2.positionStateWithLatestPrices)(client.solautoPositionData.state, constants_1.PRICES[client.supplyMint.toString()].price, constants_1.PRICES[client.debtMint.toString()].price);
342
342
  const utilizationRateDiff = Math.abs((client.solautoPositionState?.liqUtilizationRateBps ?? 0) -
343
343
  oldStateWithLatestPrices.liqUtilizationRateBps);
344
344
  client.log("Liq utilization rate diff:", utilizationRateDiff);
@@ -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 [
@@ -13,11 +13,12 @@ export declare function getSolautoManagedPositions(umi: Umi, authority?: PublicK
13
13
  export declare function getAllReferralStates(umi: Umi): Promise<PublicKey[]>;
14
14
  export declare function getReferralsByUser(umi: Umi, user: PublicKey): Promise<PublicKey[]>;
15
15
  export declare function getAllPositionsByAuthority(conn: Connection, umi: Umi, user: PublicKey, positionTypeFilter?: PositionType): Promise<SolautoPositionDetails[]>;
16
- export declare function positionStateWithLatestPrices(conn: Connection, state: PositionState, supplyPrice?: number, debtPrice?: number): Promise<PositionState>;
16
+ export declare function positionStateWithLatestPrices(state: PositionState, supplyPrice?: number, debtPrice?: number): Promise<PositionState>;
17
17
  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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"}
@@ -257,7 +257,7 @@ async function getAllPositionsByAuthority(conn, umi, user, positionTypeFilter) {
257
257
  ]);
258
258
  return solautoCompatiblePositions.flat();
259
259
  }
260
- async function positionStateWithLatestPrices(conn, state, supplyPrice, debtPrice) {
260
+ async function positionStateWithLatestPrices(state, supplyPrice, debtPrice) {
261
261
  if (!supplyPrice || !debtPrice) {
262
262
  [supplyPrice, debtPrice] = await (0, priceUtils_1.fetchTokenPrices)([
263
263
  (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.supply.mint),
@@ -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.304",
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",
@@ -614,7 +614,6 @@ export async function requiresRefreshBeforeRebalance(client: SolautoClient) {
614
614
  }
615
615
 
616
616
  const oldStateWithLatestPrices = await positionStateWithLatestPrices(
617
- client.connection,
618
617
  client.solautoPositionData.state,
619
618
  PRICES[client.supplyMint.toString()].price,
620
619
  PRICES[client.debtMint.toString()].price
@@ -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
 
@@ -398,7 +398,6 @@ export async function getAllPositionsByAuthority(
398
398
  }
399
399
 
400
400
  export async function positionStateWithLatestPrices(
401
- conn: Connection,
402
401
  state: PositionState,
403
402
  supplyPrice?: number,
404
403
  debtPrice?: number
@@ -451,6 +450,7 @@ interface AssetProps {
451
450
  mint: PublicKey;
452
451
  price?: number;
453
452
  amountUsed?: number;
453
+ amountCanBeUsed?: number;
454
454
  }
455
455
 
456
456
  export function createFakePositionState(
@@ -477,8 +477,10 @@ export function createFakePositionState(
477
477
  baseAmountUsdValue: toBaseUnit(supplyUsd, USD_DECIMALS),
478
478
  },
479
479
  amountCanBeUsed: {
480
- baseUnit: toBaseUnit(1000000, supplyDecimals),
481
- 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
+ ),
482
484
  },
483
485
  baseAmountMarketPriceUsd: toBaseUnit(supply.price ?? 0, USD_DECIMALS),
484
486
  borrowFeeBps: 0,
@@ -495,8 +497,10 @@ export function createFakePositionState(
495
497
  baseAmountUsdValue: toBaseUnit(debtUsd, USD_DECIMALS),
496
498
  },
497
499
  amountCanBeUsed: {
498
- baseUnit: toBaseUnit(1000000, debtDecimals),
499
- 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
+ ),
500
504
  },
501
505
  baseAmountMarketPriceUsd: toBaseUnit(debt.price ?? 0, USD_DECIMALS),
502
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;
@@ -76,7 +77,6 @@ describe("Solauto Marginfi tests", async () => {
76
77
  automation: none(),
77
78
  targetBoostToBps: none(),
78
79
  };
79
- console.log(settingParams);
80
80
 
81
81
  // if (client.solautoPositionData === null) {
82
82
  // transactionItems.push(
@@ -156,13 +156,13 @@ describe("Solauto Marginfi tests", async () => {
156
156
  // )
157
157
  // );
158
158
 
159
- const statuses = await new TransactionsManager(
160
- client,
161
- undefined,
162
- !payForTransactions ? "only-simulate" : "normal",
163
- PriorityFeeSetting.Low
164
- ).clientSend(transactionItems);
159
+ // const statuses = await new TransactionsManager(
160
+ // client,
161
+ // undefined,
162
+ // !payForTransactions ? "only-simulate" : "normal",
163
+ // PriorityFeeSetting.Low
164
+ // ).clientSend(transactionItems);
165
165
 
166
- console.log(statuses);
166
+ // console.log(statuses);
167
167
  });
168
168
  });
@@ -127,7 +127,6 @@ async function getFakePosition(
127
127
  const maxLtvBps = 6400;
128
128
  const liqThresholdBps = 8181;
129
129
  client.solautoPositionState = await positionStateWithLatestPrices(
130
- conn,
131
130
  createFakePositionState(
132
131
  {
133
132
  amountUsed: supplyUsd / supplyPrice,