@haven-fi/solauto-sdk 1.0.311 → 1.0.312
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.
- package/dist/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/transactions/transactionUtils.js +4 -2
- package/dist/utils/jupiterUtils.d.ts.map +1 -1
- package/dist/utils/jupiterUtils.js +0 -6
- package/dist/utils/priceUtils.d.ts.map +1 -1
- package/dist/utils/priceUtils.js +1 -1
- package/dist/utils/solauto/generalUtils.d.ts +1 -1
- package/dist/utils/solauto/generalUtils.d.ts.map +1 -1
- package/dist/utils/solauto/generalUtils.js +10 -2
- package/package.json +1 -1
- package/src/transactions/transactionUtils.ts +9 -3
- package/src/utils/jupiterUtils.ts +0 -6
- package/src/utils/priceUtils.ts +1 -2
- package/src/utils/solauto/generalUtils.ts +23 -1
@@ -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,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,
|
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,CA4H5C;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"}
|
@@ -355,14 +355,16 @@ async function requiresRefreshBeforeRebalance(client) {
|
|
355
355
|
}
|
356
356
|
async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRateBps, attemptNum) {
|
357
357
|
client.solautoPositionState = await client.getFreshPositionState();
|
358
|
+
const supplyPrice = (0, utils_1.safeGetPrice)(client.supplyMint) ?? 0;
|
359
|
+
const debtPrice = (0, utils_1.safeGetPrice)(client.debtMint) ?? 0;
|
358
360
|
if ((client.solautoPositionState?.supply.amountUsed.baseUnit === BigInt(0) &&
|
359
361
|
client.livePositionUpdates.supplyAdjustment === BigInt(0)) ||
|
360
362
|
(targetLiqUtilizationRateBps === undefined &&
|
361
|
-
!(0, generalUtils_2.eligibleForRebalance)(client.solautoPositionState, client.solautoPositionSettings(), client.solautoPositionActiveDca(), (0, generalUtils_1.currentUnixSeconds)()))) {
|
363
|
+
!(0, generalUtils_2.eligibleForRebalance)(client.solautoPositionState, client.solautoPositionSettings(), client.solautoPositionActiveDca(), (0, generalUtils_1.currentUnixSeconds)(), supplyPrice, debtPrice, 0))) {
|
362
364
|
client.log("Not eligible for a rebalance");
|
363
365
|
return undefined;
|
364
366
|
}
|
365
|
-
const values = (0, rebalanceUtils_1.getRebalanceValues)(client.solautoPositionState, client.solautoPositionSettings(), client.solautoPositionActiveDca(), (0, generalUtils_1.currentUnixSeconds)(),
|
367
|
+
const values = (0, rebalanceUtils_1.getRebalanceValues)(client.solautoPositionState, client.solautoPositionSettings(), client.solautoPositionActiveDca(), (0, generalUtils_1.currentUnixSeconds)(), supplyPrice, debtPrice, targetLiqUtilizationRateBps);
|
366
368
|
client.log("Rebalance values: ", values);
|
367
369
|
const swapDetails = (0, rebalanceUtils_1.getJupSwapRebalanceDetails)(client, values, targetLiqUtilizationRateBps, attemptNum);
|
368
370
|
const { jupQuote, lookupTableAddresses, setupInstructions, tokenLedgerIx, swapIx, } = await (0, jupiterUtils_1.getJupSwapTransaction)(client.signer, swapDetails, attemptNum);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,aAAa,CAAC;AAOrB,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,iBAAiB,EAAE,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgBD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,cAAc,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,
|
1
|
+
{"version":3,"file":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,aAAa,CAAC;AAOrB,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,iBAAiB,EAAE,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgBD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,cAAc,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,CA6F7B"}
|
@@ -45,12 +45,6 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
45
45
|
quoteResponse.inAmount = (parseInt(quoteResponse.inAmount) +
|
46
46
|
Math.ceil(parseInt(quoteResponse.inAmount) * (0, numberUtils_1.fromBps)(finalPriceSlippageBps))).toString();
|
47
47
|
}
|
48
|
-
// else {
|
49
|
-
// quoteResponse.inAmount = (
|
50
|
-
// parseInt(quoteResponse.inAmount) +
|
51
|
-
// Math.ceil(parseInt(quoteResponse.inAmount) * fromBps(priceImpactBps))
|
52
|
-
// ).toString();
|
53
|
-
// }
|
54
48
|
(0, generalUtils_1.consoleLog)("Getting jup instructions...");
|
55
49
|
const instructions = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await jupApi.swapInstructionsPost({
|
56
50
|
swapRequest: {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAYrE,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCnB;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,qBAwCrD;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GACzC,MAAM,GAAG,SAAS,CAKpB;
|
1
|
+
{"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAYrE,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCnB;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,qBAwCrD;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GACzC,MAAM,GAAG,SAAS,CAKpB;AAGD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,qBAoBzD"}
|
package/dist/utils/priceUtils.js
CHANGED
@@ -68,6 +68,7 @@ function safeGetPrice(mint) {
|
|
68
68
|
}
|
69
69
|
return undefined;
|
70
70
|
}
|
71
|
+
// LEGACY, NOT USED
|
71
72
|
async function getJupTokenPrices(mints) {
|
72
73
|
if (mints.length == 0) {
|
73
74
|
return [];
|
@@ -77,7 +78,6 @@ async function getJupTokenPrices(mints) {
|
|
77
78
|
mints.map((x) => x.toString()).join(",") + "&showExtraInfo=true")).json();
|
78
79
|
return res;
|
79
80
|
}, 6);
|
80
|
-
console.log(data.data[mints[0].toString()].extraInfo.quotedPrice);
|
81
81
|
const prices = Object.values(data.data).map((x) => parseFloat(x.price));
|
82
82
|
return prices;
|
83
83
|
}
|
@@ -7,7 +7,7 @@ export declare function nextAutomationPeriodTimestamp(automation: AutomationSett
|
|
7
7
|
export declare function eligibleForNextAutomationPeriod(automation: AutomationSettings, currentUnixTime: number): boolean;
|
8
8
|
export declare function getUpdatedValueFromAutomation(currValue: number, targetValue: number, automation: AutomationSettings, currentUnixTimestamp: number): number;
|
9
9
|
export declare function getAdjustedSettingsFromAutomation(settings: SolautoSettingsParameters, currentUnixTime: number): SolautoSettingsParameters;
|
10
|
-
export declare function eligibleForRebalance(positionState: PositionState, positionSettings: SolautoSettingsParameters | undefined, positionDca: DCASettings | undefined, currentUnixTime: number, bpsDistanceThreshold?: number): RebalanceAction | undefined;
|
10
|
+
export declare function eligibleForRebalance(positionState: PositionState, positionSettings: SolautoSettingsParameters | undefined, positionDca: DCASettings | undefined, currentUnixTime: number, supplyMintPrice: number, debtMintPrice: number, bpsDistanceThreshold?: number): RebalanceAction | undefined;
|
11
11
|
export declare function eligibleForRefresh(positionState: PositionState, positionSettings: SolautoSettingsParameters, currentUnixTime: number): boolean;
|
12
12
|
export declare function getSolautoManagedPositions(umi: Umi, authority?: PublicKey, positionTypeFilter?: PositionType): Promise<SolautoPositionDetails[]>;
|
13
13
|
export declare function getAllReferralStates(umi: Umi): Promise<PublicKey[]>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAGL,OAAO,EAEP,GAAG,EACJ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAElB,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,gCAAgC,EAChC,SAAS,EAMV,MAAM,iBAAiB,CAAC;AAkBzB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;
|
1
|
+
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
|
@@ -25,6 +25,7 @@ const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters"
|
|
25
25
|
const constants_1 = require("../../constants");
|
26
26
|
const marginfiUtils_1 = require("../marginfiUtils");
|
27
27
|
const priceUtils_1 = require("../priceUtils");
|
28
|
+
const rebalanceUtils_1 = require("./rebalanceUtils");
|
28
29
|
function createDynamicSolautoProgram(programId) {
|
29
30
|
return {
|
30
31
|
name: "solauto",
|
@@ -72,7 +73,7 @@ function getAdjustedSettingsFromAutomation(settings, currentUnixTime) {
|
|
72
73
|
boostToBps,
|
73
74
|
};
|
74
75
|
}
|
75
|
-
function eligibleForRebalance(positionState, positionSettings, positionDca, currentUnixTime, bpsDistanceThreshold = 0) {
|
76
|
+
function eligibleForRebalance(positionState, positionSettings, positionDca, currentUnixTime, supplyMintPrice, debtMintPrice, bpsDistanceThreshold = 0) {
|
76
77
|
if (!positionSettings) {
|
77
78
|
return undefined;
|
78
79
|
}
|
@@ -92,7 +93,14 @@ function eligibleForRebalance(positionState, positionSettings, positionDca, curr
|
|
92
93
|
const boostFrom = boostToBps - positionSettings.boostGap;
|
93
94
|
if (Math.max(0, positionState.liqUtilizationRateBps - boostFrom) <=
|
94
95
|
bpsDistanceThreshold) {
|
95
|
-
|
96
|
+
const values = (0, rebalanceUtils_1.getRebalanceValues)(positionState, positionSettings, positionDca, (0, generalUtils_1.currentUnixSeconds)(), supplyMintPrice, debtMintPrice);
|
97
|
+
const sufficientLiquidity = (0, numberUtils_1.fromBaseUnit)(positionState.debt.amountCanBeUsed.baseAmountUsdValue, constants_1.USD_DECIMALS) *
|
98
|
+
0.95 >
|
99
|
+
values.debtAdjustmentUsd;
|
100
|
+
if (!sufficientLiquidity) {
|
101
|
+
console.log("Insufficient debt liquidity to further boost");
|
102
|
+
}
|
103
|
+
return sufficientLiquidity ? "boost" : undefined;
|
96
104
|
}
|
97
105
|
else if (Math.max(0, repayFrom - positionState.liqUtilizationRateBps) <=
|
98
106
|
bpsDistanceThreshold) {
|
package/package.json
CHANGED
@@ -646,6 +646,9 @@ export async function buildSolautoRebalanceTransaction(
|
|
646
646
|
attemptNum?: number
|
647
647
|
): Promise<TransactionItemInputs | undefined> {
|
648
648
|
client.solautoPositionState = await client.getFreshPositionState();
|
649
|
+
const supplyPrice = safeGetPrice(client.supplyMint) ?? 0;
|
650
|
+
const debtPrice = safeGetPrice(client.debtMint) ?? 0;
|
651
|
+
|
649
652
|
if (
|
650
653
|
(client.solautoPositionState?.supply.amountUsed.baseUnit === BigInt(0) &&
|
651
654
|
client.livePositionUpdates.supplyAdjustment === BigInt(0)) ||
|
@@ -654,7 +657,10 @@ export async function buildSolautoRebalanceTransaction(
|
|
654
657
|
client.solautoPositionState!,
|
655
658
|
client.solautoPositionSettings(),
|
656
659
|
client.solautoPositionActiveDca(),
|
657
|
-
currentUnixSeconds()
|
660
|
+
currentUnixSeconds(),
|
661
|
+
supplyPrice,
|
662
|
+
debtPrice,
|
663
|
+
0
|
658
664
|
))
|
659
665
|
) {
|
660
666
|
client.log("Not eligible for a rebalance");
|
@@ -666,8 +672,8 @@ export async function buildSolautoRebalanceTransaction(
|
|
666
672
|
client.solautoPositionSettings(),
|
667
673
|
client.solautoPositionActiveDca(),
|
668
674
|
currentUnixSeconds(),
|
669
|
-
|
670
|
-
|
675
|
+
supplyPrice,
|
676
|
+
debtPrice,
|
671
677
|
targetLiqUtilizationRateBps
|
672
678
|
);
|
673
679
|
client.log("Rebalance values: ", values);
|
@@ -94,12 +94,6 @@ export async function getJupSwapTransaction(
|
|
94
94
|
)
|
95
95
|
).toString();
|
96
96
|
}
|
97
|
-
// else {
|
98
|
-
// quoteResponse.inAmount = (
|
99
|
-
// parseInt(quoteResponse.inAmount) +
|
100
|
-
// Math.ceil(parseInt(quoteResponse.inAmount) * fromBps(priceImpactBps))
|
101
|
-
// ).toString();
|
102
|
-
// }
|
103
97
|
|
104
98
|
consoleLog("Getting jup instructions...");
|
105
99
|
const instructions = await retryWithExponentialBackoff(
|
package/src/utils/priceUtils.ts
CHANGED
@@ -103,6 +103,7 @@ export function safeGetPrice(
|
|
103
103
|
return undefined;
|
104
104
|
}
|
105
105
|
|
106
|
+
// LEGACY, NOT USED
|
106
107
|
export async function getJupTokenPrices(mints: PublicKey[]) {
|
107
108
|
if (mints.length == 0) {
|
108
109
|
return [];
|
@@ -118,8 +119,6 @@ export async function getJupTokenPrices(mints: PublicKey[]) {
|
|
118
119
|
return res;
|
119
120
|
}, 6);
|
120
121
|
|
121
|
-
console.log(data.data[mints[0].toString()].extraInfo.quotedPrice);
|
122
|
-
|
123
122
|
const prices = Object.values(data.data as { [key: string]: any }).map(
|
124
123
|
(x) => parseFloat(x.price as string) as number
|
125
124
|
);
|
@@ -41,6 +41,7 @@ import {
|
|
41
41
|
} from "../marginfiUtils";
|
42
42
|
import { RebalanceAction, SolautoPositionDetails } from "../../types/solauto";
|
43
43
|
import { fetchTokenPrices } from "../priceUtils";
|
44
|
+
import { getRebalanceValues } from "./rebalanceUtils";
|
44
45
|
|
45
46
|
export function createDynamicSolautoProgram(programId: PublicKey): Program {
|
46
47
|
return {
|
@@ -132,6 +133,8 @@ export function eligibleForRebalance(
|
|
132
133
|
positionSettings: SolautoSettingsParameters | undefined,
|
133
134
|
positionDca: DCASettings | undefined,
|
134
135
|
currentUnixTime: number,
|
136
|
+
supplyMintPrice: number,
|
137
|
+
debtMintPrice: number,
|
135
138
|
bpsDistanceThreshold = 0
|
136
139
|
): RebalanceAction | undefined {
|
137
140
|
if (!positionSettings) {
|
@@ -167,7 +170,26 @@ export function eligibleForRebalance(
|
|
167
170
|
Math.max(0, positionState.liqUtilizationRateBps - boostFrom) <=
|
168
171
|
bpsDistanceThreshold
|
169
172
|
) {
|
170
|
-
|
173
|
+
const values = getRebalanceValues(
|
174
|
+
positionState!,
|
175
|
+
positionSettings,
|
176
|
+
positionDca,
|
177
|
+
currentUnixSeconds(),
|
178
|
+
supplyMintPrice,
|
179
|
+
debtMintPrice
|
180
|
+
);
|
181
|
+
const sufficientLiquidity =
|
182
|
+
fromBaseUnit(
|
183
|
+
positionState.debt.amountCanBeUsed.baseAmountUsdValue,
|
184
|
+
USD_DECIMALS
|
185
|
+
) *
|
186
|
+
0.95 >
|
187
|
+
values.debtAdjustmentUsd;
|
188
|
+
if (!sufficientLiquidity) {
|
189
|
+
console.log("Insufficient debt liquidity to further boost");
|
190
|
+
}
|
191
|
+
|
192
|
+
return sufficientLiquidity ? "boost" : undefined;
|
171
193
|
} else if (
|
172
194
|
Math.max(0, repayFrom - positionState.liqUtilizationRateBps) <=
|
173
195
|
bpsDistanceThreshold
|