@haven-fi/solauto-sdk 1.0.761 → 1.0.762

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.
@@ -19,7 +19,7 @@ function createSolautoSettings(settings) {
19
19
  };
20
20
  }
21
21
  async function getPositionExBulk(umi, publicKeys) {
22
- const batches = (0, utils_1.getBatches)(publicKeys, 50);
22
+ const batches = (0, utils_1.getBatches)(publicKeys, 100);
23
23
  const data = (await Promise.all(batches.map(async (pubkeys) => {
24
24
  return (0, utils_1.retryWithExponentialBackoff)(async () => await (0, generated_1.safeFetchAllSolautoPosition)(umi, pubkeys.map((x) => (0, umi_web3js_adapters_1.fromWeb3JsPublicKey)(x))));
25
25
  }))).flat();
@@ -1 +1 @@
1
- {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../src/utils/generalUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,eAAe,EAEf,GAAG,EACH,SAAS,IAAI,YAAY,EAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAc,SAAS,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,UAErD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,UAE3D;AAED,wBAAgB,UAAU,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAI/C;AAED,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAErD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAW1D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,yBAQ/C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAMlE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,SAAS,GACZ,OAAO,CAAC,OAAO,CAAC,CAKlB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAEnE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAU1E;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAS1D;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC;AAEjE,wBAAgB,2BAA2B,CAAC,CAAC,EAC3C,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,EACvD,OAAO,GAAE,MAAU,EACnB,KAAK,GAAE,MAAY,EACnB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,CAAC,CAAC,CAqCZ;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAC1C,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,MAAM,GACZ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAUxB;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,gBAuBzE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAU5D;AAED,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,WAErE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,CAAC,EAAE,GACV,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAInB"}
1
+ {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../src/utils/generalUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,eAAe,EAEf,GAAG,EACH,SAAS,IAAI,YAAY,EAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAc,SAAS,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,UAErD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,UAE3D;AAED,wBAAgB,UAAU,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAI/C;AAED,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAErD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAW1D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,yBAQ/C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAMlE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,SAAS,GACZ,OAAO,CAAC,OAAO,CAAC,CAKlB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAEnE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAU1E;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAS1D;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC;AAEjE,wBAAgB,2BAA2B,CAAC,CAAC,EAC3C,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,EACvD,OAAO,GAAE,MAAU,EACnB,KAAK,GAAE,MAAY,EACnB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,CAAC,CAAC,CA8BZ;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAC1C,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,MAAM,GACZ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAUxB;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,gBAuBzE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAU5D;AAED,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,WAErE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,CAAC,EAAE,GACV,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAInB"}
@@ -116,8 +116,6 @@ function retryWithExponentialBackoff(fn, retries = 5, delay = 150, errorsToThrow
116
116
  .then(resolve)
117
117
  .catch((error) => {
118
118
  attemptNum++;
119
- console.log(error.name, error.message);
120
- console.log(errorsToThrow?.length, (errorsToThrow ?? []).some((errorType) => error instanceof errorType));
121
119
  if (errorsToThrow?.length &&
122
120
  errorsToThrow.some((errorType) => error instanceof errorType)) {
123
121
  reject(error);
@@ -1,6 +1,7 @@
1
1
  import { PublicKey } from "@solana/web3.js";
2
2
  import { PositionState } from "../generated";
3
3
  import { RoundAction } from "../types";
4
+ import { StrategyType } from "./stringUtils";
4
5
  export declare function calcNetWorthUsd(state?: PositionState): number;
5
6
  export declare function calcSupplyUsd(state?: PositionState): number;
6
7
  export declare function calcDebtUsd(state?: PositionState): number;
@@ -25,4 +26,6 @@ export declare function maxRepayFromBps(maxLtvBps: number, liqThresholdBps: numb
25
26
  export declare function maxRepayToBps(maxLtvBps: number, liqThresholdBps: number): number;
26
27
  export declare function maxBoostToBps(maxLtvBps: number, liqThresholdBps: number): number;
27
28
  export declare function realtimeUsdToEmaUsd(realtimeAmountUsd: number, mint: PublicKey): number;
29
+ export declare function boostSettingToLeverageFactor(supplyMint: PublicKey, debtMint: PublicKey, boostToBps: number, liqThresholdBps: number): number;
30
+ export declare function getLeverageFactor(strategyType: StrategyType, supplyUsd: number, debtUsd: number): number;
28
31
  //# sourceMappingURL=numberUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO5C,OAAO,EAAE,aAAa,EAAa,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAEpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlD;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,UAIhD;AAED,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,aAAa,UAKjD;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAKpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAKlD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE,aAAa,UAK3D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,EAAE,aAAa,UAI9D;AAED,wBAAgB,0BAA0B,CAAC,KAAK,CAAC,EAAE,aAAa,UAK/D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,UAEjD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAE/C;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,MAAM,CAMR;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,WAAqB,GACjC,MAAM,CAKR;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,KAAK,CACnB,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,WAAqB,GACjC,MAAM,CAGR;AAUD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBrD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAejE;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAKR;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UASzE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE;AAED,wBAAgB,mBAAmB,CACjC,iBAAiB,EAAE,MAAM,EACzB,IAAI,EAAE,SAAS,UAMhB"}
1
+ {"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO5C,OAAO,EAAE,aAAa,EAAa,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAC;AAG3D,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAEpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlD;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,UAIhD;AAED,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,aAAa,UAKjD;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAKpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAKlD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE,aAAa,UAK3D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,EAAE,aAAa,UAI9D;AAED,wBAAgB,0BAA0B,CAAC,KAAK,CAAC,EAAE,aAAa,UAK/D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,UAEjD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAE/C;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,MAAM,CAMR;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,WAAqB,GACjC,MAAM,CAKR;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,KAAK,CACnB,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,WAAqB,GACjC,MAAM,CAGR;AAUD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBrD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAejE;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAKR;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UASzE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE;AAED,wBAAgB,mBAAmB,CACjC,iBAAiB,EAAE,MAAM,EACzB,IAAI,EAAE,SAAS,UAMhB;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS,EACnB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,UAUxB;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,MAAM,CAOR"}
@@ -24,9 +24,13 @@ exports.maxRepayFromBps = maxRepayFromBps;
24
24
  exports.maxRepayToBps = maxRepayToBps;
25
25
  exports.maxBoostToBps = maxBoostToBps;
26
26
  exports.realtimeUsdToEmaUsd = realtimeUsdToEmaUsd;
27
+ exports.boostSettingToLeverageFactor = boostSettingToLeverageFactor;
28
+ exports.getLeverageFactor = getLeverageFactor;
27
29
  const constants_1 = require("../constants");
28
30
  const generated_1 = require("../generated");
29
31
  const priceUtils_1 = require("./priceUtils");
32
+ const stringUtils_1 = require("./stringUtils");
33
+ const services_1 = require("../services");
30
34
  function calcNetWorthUsd(state) {
31
35
  return fromRoundedUsdValue(state?.netWorth.baseAmountUsdValue ?? BigInt(0));
32
36
  }
@@ -138,3 +142,15 @@ function realtimeUsdToEmaUsd(realtimeAmountUsd, mint) {
138
142
  return ((realtimeAmountUsd / (0, priceUtils_1.safeGetPrice)(mint, generated_1.PriceType.Realtime)) *
139
143
  (0, priceUtils_1.safeGetPrice)(mint, generated_1.PriceType.Ema));
140
144
  }
145
+ function boostSettingToLeverageFactor(supplyMint, debtMint, boostToBps, liqThresholdBps) {
146
+ const strategy = (0, stringUtils_1.strategyType)(supplyMint, debtMint);
147
+ const supplyUsd = 100;
148
+ const debtUsd = (0, services_1.getDebtAdjustment)(liqThresholdBps, { supplyUsd: 100, debtUsd: 0 }, boostToBps).debtAdjustmentUsd;
149
+ return getLeverageFactor(strategy, supplyUsd + debtUsd, debtUsd);
150
+ }
151
+ function getLeverageFactor(strategyType, supplyUsd, debtUsd) {
152
+ return ((strategyType === "Long" || strategyType === "Ratio"
153
+ ? supplyUsd
154
+ : debtUsd) /
155
+ (supplyUsd - debtUsd));
156
+ }
package/local/.env CHANGED
@@ -1 +1 @@
1
- ADDRESS_WHITELIST=5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe,He4ka5Q3N1UvZikZvykdi47xyk5PoVP2tcQL5sVp31Sz,E5BBsR1sUToPc3jXVwhrK5ttSiy6xhWJDMdQLvkgNppe,DRP5cgM1JpnMySvwg3jqRP2VA2DXSWUjo6VGLkNZ2etb
1
+ ADDRESS_WHITELIST=5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe,He4ka5Q3N1UvZikZvykdi47xyk5PoVP2tcQL5sVp31Sz,E5BBsR1sUToPc3jXVwhrK5ttSiy6xhWJDMdQLvkgNppe,DRP5cgM1JpnMySvwg3jqRP2VA2DXSWUjo6VGLkNZ2etb,FtwMsLNn4kBy2kpawC4izM8oUPbmfmbjjKNTcTUUDPzN
@@ -7,33 +7,25 @@ import {
7
7
  consoleLog,
8
8
  fetchBank,
9
9
  fetchMarginfiAccount,
10
- fromBaseUnit,
11
- getBankLiquidityAvailableBaseUnit,
12
10
  getBatches,
13
11
  getClient,
14
- getMarginfiAccounts,
15
12
  getPositionExBulk,
16
13
  getSolanaRpcConnection,
17
14
  getSolautoManagedPositions,
18
- lendingAccountDeposit,
19
15
  LendingPlatform,
16
+ lendingPoolAccrueBankInterest,
20
17
  LOCAL_IRONFORGE_API_URL,
21
18
  PriceType,
22
19
  PriorityFeeSetting,
23
20
  ProgramEnv,
24
21
  rebalance,
25
- SOLAUTO_MANAGER,
26
22
  SOLAUTO_PROD_PROGRAM,
27
23
  SOLAUTO_TEST_PROGRAM,
28
24
  SolautoClient,
29
- toBaseUnit,
30
25
  TransactionItem,
31
- TransactionsManager,
32
- TxHandler,
33
- USDC,
34
26
  } from "../src";
35
27
  import { getSecretKey } from "./shared";
36
- import { getTokenAccount, tokenInfo } from "../dist";
28
+ import { fromBaseUnit } from "../dist";
37
29
 
38
30
  const payForTransaction = true;
39
31
  const testProgram = false;
@@ -51,72 +43,69 @@ const signer = createSignerFromKeypair(
51
43
  );
52
44
 
53
45
  export async function main() {
54
- const USDC_MINT = new PublicKey(USDC);
55
- const group = new PublicKey("DQ2jqDJw9uzTwttf6h6r217BQ7kws3jZbJXDkfbCJa1q");
56
- const accounts =
57
- getMarginfiAccounts("Prod").bankAccounts[group.toString()][
58
- USDC_MINT.toString()
59
- ];
60
-
61
- const bank = await fetchBank(umi, publicKey(accounts.bank));
62
-
63
- const assets =
64
- bytesToI80F48(bank.totalAssetShares.value) *
65
- bytesToI80F48(bank.assetShareValue.value);
66
- const liabs =
67
- bytesToI80F48(bank.totalLiabilityShares.value) *
68
- bytesToI80F48(bank.liabilityShareValue.value);
69
-
70
- console.log(fromBaseUnit(BigInt(Math.round(assets)), 6));
71
- console.log(fromBaseUnit(BigInt(Math.round(liabs)), 6));
72
- const missingLiquidity = getBankLiquidityAvailableBaseUnit(bank, false);
73
- console.log(fromBaseUnit(missingLiquidity, 6));
74
-
75
- const marginfiAccount = await fetchMarginfiAccount(
76
- umi,
77
- publicKey("Fun9UD87tLCxqxoTvpGYAy6Uwk2eevFGDk1VvxpXbd5x")
78
- );
79
- const managerAssets =
80
- bytesToI80F48(
81
- marginfiAccount.lendingAccount.balances[0].assetShares.value
82
- ) * bytesToI80F48(bank.assetShareValue.value);
83
- console.log(fromBaseUnit(BigInt(Math.round(managerAssets)), 6));
84
-
85
- const depositAmt =
86
- missingLiquidity * BigInt(-1) + BigInt(toBaseUnit(620 + 20, 6));
87
- console.log("Depositing", fromBaseUnit(depositAmt, 6));
46
+ const client = getClient(LendingPlatform.Marginfi, {
47
+ signer,
48
+ showLogs: true,
49
+ rpcUrl: LOCAL_IRONFORGE_API_URL,
50
+ programId: testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
51
+ lpEnv,
52
+ });
53
+
54
+ await client.initializeExistingSolautoPosition({
55
+ positionId: 1,
56
+ authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
57
+ // lpUserAccount: new PublicKey(
58
+ // "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
59
+ // ),
60
+ });
61
+
88
62
  const transactionItems = [
89
- new TransactionItem(
90
- async () => ({
91
- tx: lendingAccountDeposit(umi, {
92
- signer,
93
- signerTokenAccount: publicKey(
94
- getTokenAccount(SOLAUTO_MANAGER, USDC_MINT)
95
- ),
96
- marginfiAccount: marginfiAccount.publicKey,
97
- marginfiGroup: publicKey(group),
98
- bank: bank.publicKey,
99
- bankLiquidityVault: publicKey(accounts.liquidityVault),
100
- amount: depositAmt,
101
- depositUpToLimit: true,
102
- }),
63
+ new TransactionItem(async () => ({
64
+ tx: lendingPoolAccrueBankInterest(umi, {
65
+ marginfiGroup: publicKey(
66
+ "DQ2jqDJw9uzTwttf6h6r217BQ7kws3jZbJXDkfbCJa1q"
67
+ ),
68
+ bank: publicKey("EXrnNVfLagt3j4hCHSD9WqK75o6dkZBtjpnrSrSC78MA"),
103
69
  }),
104
- "deposit"
105
- ),
70
+ })),
106
71
  ];
107
72
 
108
- const txManager = new TransactionsManager({
109
- txHandler: new TxHandler({
110
- signer,
111
- rpcUrl: LOCAL_IRONFORGE_API_URL,
112
- showLogs: true,
113
- }),
73
+ const txManager = new ClientTransactionsManager({
74
+ txHandler: client,
114
75
  txRunType: payForTransaction ? "normal" : "only-simulate",
115
76
  priorityFeeSetting: PriorityFeeSetting.Default,
116
77
  retryConfig: { totalRetries: 2 },
117
78
  });
118
79
  const statuses = await txManager.send(transactionItems);
119
80
  consoleLog(statuses);
81
+
82
+ await new Promise((resolve) => setTimeout(resolve, 5000));
83
+
84
+ const mfiAccount = await fetchMarginfiAccount(
85
+ umi,
86
+ publicKey("Fun9UD87tLCxqxoTvpGYAy6Uwk2eevFGDk1VvxpXbd5x")
87
+ );
88
+ const bank = await fetchBank(
89
+ umi,
90
+ publicKey("EXrnNVfLagt3j4hCHSD9WqK75o6dkZBtjpnrSrSC78MA"),
91
+ { commitment: "confirmed" }
92
+ );
93
+
94
+ console.log(
95
+ fromBaseUnit(
96
+ BigInt(
97
+ Math.round(
98
+ bytesToI80F48(
99
+ mfiAccount.lendingAccount.balances[0].assetShares.value
100
+ ) * bytesToI80F48(bank.assetShareValue.value)
101
+ )
102
+ ),
103
+ 6
104
+ )
105
+ );
106
+ // 1:34pm - $4479.61
107
+ // 2:51pm - $4513.30
108
+ // 12:58pm - $4529.16
120
109
  }
121
110
 
122
111
  async function refreshAll() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.761",
3
+ "version": "1.0.762",
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",
@@ -46,7 +46,7 @@ export async function getPositionExBulk(
46
46
  umi: Umi,
47
47
  publicKeys: PublicKey[]
48
48
  ): Promise<SolautoPositionEx[]> {
49
- const batches = getBatches(publicKeys, 50);
49
+ const batches = getBatches(publicKeys, 100);
50
50
 
51
51
  const data = (
52
52
  await Promise.all(
@@ -126,13 +126,6 @@ export function retryWithExponentialBackoff<T>(
126
126
  .catch((error: Error) => {
127
127
  attemptNum++;
128
128
 
129
- console.log(error.name, error.message);
130
- console.log(
131
- errorsToThrow?.length,
132
- (errorsToThrow ?? []).some(
133
- (errorType) => error instanceof errorType
134
- )
135
- );
136
129
  if (
137
130
  errorsToThrow?.length &&
138
131
  errorsToThrow.some((errorType) => error instanceof errorType)
@@ -8,6 +8,8 @@ import {
8
8
  import { PositionState, PriceType } from "../generated";
9
9
  import { RoundAction } from "../types";
10
10
  import { safeGetPrice } from "./priceUtils";
11
+ import { StrategyType, strategyType } from "./stringUtils";
12
+ import { getDebtAdjustment } from "../services";
11
13
 
12
14
  export function calcNetWorthUsd(state?: PositionState) {
13
15
  return fromRoundedUsdValue(state?.netWorth.baseAmountUsdValue ?? BigInt(0));
@@ -215,3 +217,32 @@ export function realtimeUsdToEmaUsd(
215
217
  safeGetPrice(mint, PriceType.Ema)!
216
218
  );
217
219
  }
220
+
221
+ export function boostSettingToLeverageFactor(
222
+ supplyMint: PublicKey,
223
+ debtMint: PublicKey,
224
+ boostToBps: number,
225
+ liqThresholdBps: number
226
+ ) {
227
+ const strategy = strategyType(supplyMint, debtMint);
228
+ const supplyUsd = 100;
229
+ const debtUsd = getDebtAdjustment(
230
+ liqThresholdBps,
231
+ { supplyUsd: 100, debtUsd: 0 },
232
+ boostToBps
233
+ ).debtAdjustmentUsd;
234
+ return getLeverageFactor(strategy, supplyUsd + debtUsd, debtUsd);
235
+ }
236
+
237
+ export function getLeverageFactor(
238
+ strategyType: StrategyType,
239
+ supplyUsd: number,
240
+ debtUsd: number
241
+ ): number {
242
+ return (
243
+ (strategyType === "Long" || strategyType === "Ratio"
244
+ ? supplyUsd
245
+ : debtUsd) /
246
+ (supplyUsd - debtUsd)
247
+ );
248
+ }