@strkfarm/sdk 2.0.0-dev.25 → 2.0.0-dev.26
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/index.browser.global.js +12 -7
- package/dist/index.browser.mjs +12 -7
- package/dist/index.d.ts +1 -1
- package/dist/index.js +12 -7
- package/dist/index.mjs +12 -7
- package/package.json +1 -1
- package/src/strategies/vesu-extended-strategy/utils/helper.ts +7 -7
- package/src/strategies/vesu-extended-strategy/vesu-extended-strategy.tsx +14 -2
|
@@ -92620,14 +92620,14 @@ spurious results.`);
|
|
|
92620
92620
|
var calculateBTCPriceDelta = (btcPrice, lastBtcPrice) => {
|
|
92621
92621
|
return (btcPrice - lastBtcPrice) / lastBtcPrice * 100;
|
|
92622
92622
|
};
|
|
92623
|
-
var calculateVesUPositionSizeGivenExtended = (extendedPositonValue, extendedHoldingAmount, collateralAmount, collateralPrice
|
|
92623
|
+
var calculateVesUPositionSizeGivenExtended = (extendedPositonValue, extendedHoldingAmount, collateralAmount, collateralPrice) => {
|
|
92624
92624
|
const extendedLeverage = calculateExtendedLevergae();
|
|
92625
92625
|
const vesuLeverage = calculateVesuLeverage();
|
|
92626
92626
|
const extendedAmount = extendedHoldingAmount;
|
|
92627
92627
|
const extendedAmountInBTC = extendedAmount.dividedBy(collateralPrice);
|
|
92628
92628
|
const numerator1 = extendedAmount.multipliedBy(extendedLeverage).plus(extendedPositonValue);
|
|
92629
92629
|
const numerator2 = collateralAmount.multipliedBy(collateralPrice).multipliedBy(-1);
|
|
92630
|
-
const vesuAmountInUsd = numerator1.plus(numerator2).dividedBy(vesuLeverage)
|
|
92630
|
+
const vesuAmountInUsd = numerator1.plus(numerator2).dividedBy(vesuLeverage);
|
|
92631
92631
|
const vesuAmountInBTC = vesuAmountInUsd.dividedBy(collateralPrice).toFixed(WBTC_TOKEN_DECIMALS);
|
|
92632
92632
|
return {
|
|
92633
92633
|
vesuAmountInUsd: vesuAmountInUsd.toFixed(2),
|
|
@@ -92637,10 +92637,13 @@ spurious results.`);
|
|
|
92637
92637
|
};
|
|
92638
92638
|
var calculateDeltaDebtAmount = (maxLtv = MAX_LTV_BTC_USDC, existingVesuCollateral, existingVesuDebt, collateralPrice, debtPrice, targetHf = TARGET_HF) => {
|
|
92639
92639
|
try {
|
|
92640
|
-
const term1 = existingVesuCollateral.multipliedBy(collateralPrice).multipliedBy(maxLtv)
|
|
92640
|
+
const term1 = existingVesuCollateral.multipliedBy(collateralPrice).multipliedBy(maxLtv);
|
|
92641
|
+
logger2.info(`term1: ${term1.toNumber()}`);
|
|
92641
92642
|
const term2 = existingVesuDebt.multipliedBy(debtPrice).multipliedBy(targetHf).multipliedBy(-1);
|
|
92643
|
+
logger2.info(`term2: ${term2.toNumber()}`);
|
|
92642
92644
|
const debtAmountToBeRepaid = term1.plus(term2).dividedBy(targetHf);
|
|
92643
|
-
|
|
92645
|
+
logger2.info(`debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`);
|
|
92646
|
+
return new Web3Number(debtAmountToBeRepaid.toFixed(USDC_TOKEN_DECIMALS), USDC_TOKEN_DECIMALS);
|
|
92644
92647
|
} catch (err2) {
|
|
92645
92648
|
logger2.error(`error calculating delta position: ${err2}`);
|
|
92646
92649
|
return null;
|
|
@@ -92654,7 +92657,6 @@ spurious results.`);
|
|
|
92654
92657
|
const unrealisedPnl = new Web3Number(extendedBalance.unrealisedPnl, USDC_TOKEN_DECIMALS);
|
|
92655
92658
|
const availableForWithdrawal = new Web3Number(extendedBalance.availableForWithdrawal, USDC_TOKEN_DECIMALS);
|
|
92656
92659
|
const upnlPercent = unrealisedPnl.dividedBy(extendedPosition);
|
|
92657
|
-
console.log(`upnlPercent: ${upnlPercent}`);
|
|
92658
92660
|
const walletBalance = new Web3Number(extendedBalance.balance, USDC_TOKEN_DECIMALS);
|
|
92659
92661
|
const term1 = marginRequired.minus(walletBalance).minus(availableForWithdrawal).plus(amountToWithdraw).multipliedBy(extendedLeverage);
|
|
92660
92662
|
const denominator = upnlPercent.multipliedBy(extendedLeverage).plus(1);
|
|
@@ -98720,7 +98722,10 @@ spurious results.`);
|
|
|
98720
98722
|
debtAmountToBeRepaid: new Web3Number(0, 0)
|
|
98721
98723
|
};
|
|
98722
98724
|
}
|
|
98723
|
-
|
|
98725
|
+
logger2.info(
|
|
98726
|
+
`${_VesuExtendedMultiplierStrategy.name}::shouldInvest debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`
|
|
98727
|
+
);
|
|
98728
|
+
const amountToInvestAfterRepayingDebt = amountToInvest.plus(debtAmountToBeRepaid);
|
|
98724
98729
|
const { vesu_amount, extended_amount, extended_leverage, vesu_leverage } = await calculateAmountDistribution(
|
|
98725
98730
|
amountToInvestAfterRepayingDebt.toNumber(),
|
|
98726
98731
|
extendedAdapter.client,
|
|
@@ -99387,7 +99392,7 @@ spurious results.`);
|
|
|
99387
99392
|
avnuAdapter,
|
|
99388
99393
|
"close" /* CLOSE */
|
|
99389
99394
|
);
|
|
99390
|
-
if (!isPriceDifferenceBetweenAvnuAndExtended) {
|
|
99395
|
+
if (!isPriceDifferenceBetweenAvnuAndExtended && params.cycleType === "WITHDRAWAL" /* WITHDRAWAL */) {
|
|
99391
99396
|
logger2.warn(
|
|
99392
99397
|
`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`
|
|
99393
99398
|
);
|
package/dist/index.browser.mjs
CHANGED
|
@@ -28575,14 +28575,14 @@ var calculateExposureDelta = (exposure_extended, exposure_vesu) => {
|
|
|
28575
28575
|
var calculateBTCPriceDelta = (btcPrice, lastBtcPrice) => {
|
|
28576
28576
|
return (btcPrice - lastBtcPrice) / lastBtcPrice * 100;
|
|
28577
28577
|
};
|
|
28578
|
-
var calculateVesUPositionSizeGivenExtended = (extendedPositonValue, extendedHoldingAmount, collateralAmount, collateralPrice
|
|
28578
|
+
var calculateVesUPositionSizeGivenExtended = (extendedPositonValue, extendedHoldingAmount, collateralAmount, collateralPrice) => {
|
|
28579
28579
|
const extendedLeverage = calculateExtendedLevergae();
|
|
28580
28580
|
const vesuLeverage = calculateVesuLeverage();
|
|
28581
28581
|
const extendedAmount = extendedHoldingAmount;
|
|
28582
28582
|
const extendedAmountInBTC = extendedAmount.dividedBy(collateralPrice);
|
|
28583
28583
|
const numerator1 = extendedAmount.multipliedBy(extendedLeverage).plus(extendedPositonValue);
|
|
28584
28584
|
const numerator2 = collateralAmount.multipliedBy(collateralPrice).multipliedBy(-1);
|
|
28585
|
-
const vesuAmountInUsd = numerator1.plus(numerator2).dividedBy(vesuLeverage)
|
|
28585
|
+
const vesuAmountInUsd = numerator1.plus(numerator2).dividedBy(vesuLeverage);
|
|
28586
28586
|
const vesuAmountInBTC = vesuAmountInUsd.dividedBy(collateralPrice).toFixed(WBTC_TOKEN_DECIMALS);
|
|
28587
28587
|
return {
|
|
28588
28588
|
vesuAmountInUsd: vesuAmountInUsd.toFixed(2),
|
|
@@ -28592,10 +28592,13 @@ var calculateVesUPositionSizeGivenExtended = (extendedPositonValue, extendedHold
|
|
|
28592
28592
|
};
|
|
28593
28593
|
var calculateDeltaDebtAmount = (maxLtv = MAX_LTV_BTC_USDC, existingVesuCollateral, existingVesuDebt, collateralPrice, debtPrice, targetHf = TARGET_HF) => {
|
|
28594
28594
|
try {
|
|
28595
|
-
const term1 = existingVesuCollateral.multipliedBy(collateralPrice).multipliedBy(maxLtv)
|
|
28595
|
+
const term1 = existingVesuCollateral.multipliedBy(collateralPrice).multipliedBy(maxLtv);
|
|
28596
|
+
logger.info(`term1: ${term1.toNumber()}`);
|
|
28596
28597
|
const term2 = existingVesuDebt.multipliedBy(debtPrice).multipliedBy(targetHf).multipliedBy(-1);
|
|
28598
|
+
logger.info(`term2: ${term2.toNumber()}`);
|
|
28597
28599
|
const debtAmountToBeRepaid = term1.plus(term2).dividedBy(targetHf);
|
|
28598
|
-
|
|
28600
|
+
logger.info(`debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`);
|
|
28601
|
+
return new Web3Number(debtAmountToBeRepaid.toFixed(USDC_TOKEN_DECIMALS), USDC_TOKEN_DECIMALS);
|
|
28599
28602
|
} catch (err) {
|
|
28600
28603
|
logger.error(`error calculating delta position: ${err}`);
|
|
28601
28604
|
return null;
|
|
@@ -28609,7 +28612,6 @@ var calculatePositionToCloseToWithdrawAmount = async (extendedBalance, extendedP
|
|
|
28609
28612
|
const unrealisedPnl = new Web3Number(extendedBalance.unrealisedPnl, USDC_TOKEN_DECIMALS);
|
|
28610
28613
|
const availableForWithdrawal = new Web3Number(extendedBalance.availableForWithdrawal, USDC_TOKEN_DECIMALS);
|
|
28611
28614
|
const upnlPercent = unrealisedPnl.dividedBy(extendedPosition);
|
|
28612
|
-
console.log(`upnlPercent: ${upnlPercent}`);
|
|
28613
28615
|
const walletBalance = new Web3Number(extendedBalance.balance, USDC_TOKEN_DECIMALS);
|
|
28614
28616
|
const term1 = marginRequired.minus(walletBalance).minus(availableForWithdrawal).plus(amountToWithdraw).multipliedBy(extendedLeverage);
|
|
28615
28617
|
const denominator = upnlPercent.multipliedBy(extendedLeverage).plus(1);
|
|
@@ -34682,7 +34684,10 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34682
34684
|
debtAmountToBeRepaid: new Web3Number(0, 0)
|
|
34683
34685
|
};
|
|
34684
34686
|
}
|
|
34685
|
-
|
|
34687
|
+
logger.info(
|
|
34688
|
+
`${_VesuExtendedMultiplierStrategy.name}::shouldInvest debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`
|
|
34689
|
+
);
|
|
34690
|
+
const amountToInvestAfterRepayingDebt = amountToInvest.plus(debtAmountToBeRepaid);
|
|
34686
34691
|
const { vesu_amount, extended_amount, extended_leverage, vesu_leverage } = await calculateAmountDistribution(
|
|
34687
34692
|
amountToInvestAfterRepayingDebt.toNumber(),
|
|
34688
34693
|
extendedAdapter.client,
|
|
@@ -35349,7 +35354,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35349
35354
|
avnuAdapter,
|
|
35350
35355
|
"close" /* CLOSE */
|
|
35351
35356
|
);
|
|
35352
|
-
if (!isPriceDifferenceBetweenAvnuAndExtended) {
|
|
35357
|
+
if (!isPriceDifferenceBetweenAvnuAndExtended && params.cycleType === "WITHDRAWAL" /* WITHDRAWAL */) {
|
|
35353
35358
|
logger.warn(
|
|
35354
35359
|
`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`
|
|
35355
35360
|
);
|
package/dist/index.d.ts
CHANGED
|
@@ -2784,7 +2784,7 @@ declare const calculateExposureDelta: (exposure_extended: number, exposure_vesu:
|
|
|
2784
2784
|
* @returns {number} The delta percentage
|
|
2785
2785
|
*/
|
|
2786
2786
|
declare const calculateBTCPriceDelta: (btcPrice: number, lastBtcPrice: number) => number;
|
|
2787
|
-
declare const calculateVesUPositionSizeGivenExtended: (extendedPositonValue: number, extendedHoldingAmount: Web3Number, collateralAmount: Web3Number, collateralPrice: number
|
|
2787
|
+
declare const calculateVesUPositionSizeGivenExtended: (extendedPositonValue: number, extendedHoldingAmount: Web3Number, collateralAmount: Web3Number, collateralPrice: number) => {
|
|
2788
2788
|
vesuAmountInUsd: string;
|
|
2789
2789
|
vesuAmountInBTC: Web3Number;
|
|
2790
2790
|
extendedAmountInBTC: Web3Number;
|
package/dist/index.js
CHANGED
|
@@ -28379,14 +28379,14 @@ var calculateExposureDelta = (exposure_extended, exposure_vesu) => {
|
|
|
28379
28379
|
var calculateBTCPriceDelta = (btcPrice, lastBtcPrice) => {
|
|
28380
28380
|
return (btcPrice - lastBtcPrice) / lastBtcPrice * 100;
|
|
28381
28381
|
};
|
|
28382
|
-
var calculateVesUPositionSizeGivenExtended = (extendedPositonValue, extendedHoldingAmount, collateralAmount, collateralPrice
|
|
28382
|
+
var calculateVesUPositionSizeGivenExtended = (extendedPositonValue, extendedHoldingAmount, collateralAmount, collateralPrice) => {
|
|
28383
28383
|
const extendedLeverage = calculateExtendedLevergae();
|
|
28384
28384
|
const vesuLeverage = calculateVesuLeverage();
|
|
28385
28385
|
const extendedAmount = extendedHoldingAmount;
|
|
28386
28386
|
const extendedAmountInBTC = extendedAmount.dividedBy(collateralPrice);
|
|
28387
28387
|
const numerator1 = extendedAmount.multipliedBy(extendedLeverage).plus(extendedPositonValue);
|
|
28388
28388
|
const numerator2 = collateralAmount.multipliedBy(collateralPrice).multipliedBy(-1);
|
|
28389
|
-
const vesuAmountInUsd = numerator1.plus(numerator2).dividedBy(vesuLeverage)
|
|
28389
|
+
const vesuAmountInUsd = numerator1.plus(numerator2).dividedBy(vesuLeverage);
|
|
28390
28390
|
const vesuAmountInBTC = vesuAmountInUsd.dividedBy(collateralPrice).toFixed(WBTC_TOKEN_DECIMALS);
|
|
28391
28391
|
return {
|
|
28392
28392
|
vesuAmountInUsd: vesuAmountInUsd.toFixed(2),
|
|
@@ -28396,10 +28396,13 @@ var calculateVesUPositionSizeGivenExtended = (extendedPositonValue, extendedHold
|
|
|
28396
28396
|
};
|
|
28397
28397
|
var calculateDeltaDebtAmount = (maxLtv = MAX_LTV_BTC_USDC, existingVesuCollateral, existingVesuDebt, collateralPrice, debtPrice, targetHf = TARGET_HF) => {
|
|
28398
28398
|
try {
|
|
28399
|
-
const term1 = existingVesuCollateral.multipliedBy(collateralPrice).multipliedBy(maxLtv)
|
|
28399
|
+
const term1 = existingVesuCollateral.multipliedBy(collateralPrice).multipliedBy(maxLtv);
|
|
28400
|
+
logger.info(`term1: ${term1.toNumber()}`);
|
|
28400
28401
|
const term2 = existingVesuDebt.multipliedBy(debtPrice).multipliedBy(targetHf).multipliedBy(-1);
|
|
28402
|
+
logger.info(`term2: ${term2.toNumber()}`);
|
|
28401
28403
|
const debtAmountToBeRepaid = term1.plus(term2).dividedBy(targetHf);
|
|
28402
|
-
|
|
28404
|
+
logger.info(`debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`);
|
|
28405
|
+
return new Web3Number(debtAmountToBeRepaid.toFixed(USDC_TOKEN_DECIMALS), USDC_TOKEN_DECIMALS);
|
|
28403
28406
|
} catch (err) {
|
|
28404
28407
|
logger.error(`error calculating delta position: ${err}`);
|
|
28405
28408
|
return null;
|
|
@@ -28413,7 +28416,6 @@ var calculatePositionToCloseToWithdrawAmount = async (extendedBalance, extendedP
|
|
|
28413
28416
|
const unrealisedPnl = new Web3Number(extendedBalance.unrealisedPnl, USDC_TOKEN_DECIMALS);
|
|
28414
28417
|
const availableForWithdrawal = new Web3Number(extendedBalance.availableForWithdrawal, USDC_TOKEN_DECIMALS);
|
|
28415
28418
|
const upnlPercent = unrealisedPnl.dividedBy(extendedPosition);
|
|
28416
|
-
console.log(`upnlPercent: ${upnlPercent}`);
|
|
28417
28419
|
const walletBalance = new Web3Number(extendedBalance.balance, USDC_TOKEN_DECIMALS);
|
|
28418
28420
|
const term1 = marginRequired.minus(walletBalance).minus(availableForWithdrawal).plus(amountToWithdraw).multipliedBy(extendedLeverage);
|
|
28419
28421
|
const denominator = upnlPercent.multipliedBy(extendedLeverage).plus(1);
|
|
@@ -34841,7 +34843,10 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34841
34843
|
debtAmountToBeRepaid: new Web3Number(0, 0)
|
|
34842
34844
|
};
|
|
34843
34845
|
}
|
|
34844
|
-
|
|
34846
|
+
logger.info(
|
|
34847
|
+
`${_VesuExtendedMultiplierStrategy.name}::shouldInvest debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`
|
|
34848
|
+
);
|
|
34849
|
+
const amountToInvestAfterRepayingDebt = amountToInvest.plus(debtAmountToBeRepaid);
|
|
34845
34850
|
const { vesu_amount, extended_amount, extended_leverage, vesu_leverage } = await calculateAmountDistribution(
|
|
34846
34851
|
amountToInvestAfterRepayingDebt.toNumber(),
|
|
34847
34852
|
extendedAdapter.client,
|
|
@@ -35508,7 +35513,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35508
35513
|
avnuAdapter,
|
|
35509
35514
|
"close" /* CLOSE */
|
|
35510
35515
|
);
|
|
35511
|
-
if (!isPriceDifferenceBetweenAvnuAndExtended) {
|
|
35516
|
+
if (!isPriceDifferenceBetweenAvnuAndExtended && params.cycleType === "WITHDRAWAL" /* WITHDRAWAL */) {
|
|
35512
35517
|
logger.warn(
|
|
35513
35518
|
`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`
|
|
35514
35519
|
);
|
package/dist/index.mjs
CHANGED
|
@@ -28231,14 +28231,14 @@ var calculateExposureDelta = (exposure_extended, exposure_vesu) => {
|
|
|
28231
28231
|
var calculateBTCPriceDelta = (btcPrice, lastBtcPrice) => {
|
|
28232
28232
|
return (btcPrice - lastBtcPrice) / lastBtcPrice * 100;
|
|
28233
28233
|
};
|
|
28234
|
-
var calculateVesUPositionSizeGivenExtended = (extendedPositonValue, extendedHoldingAmount, collateralAmount, collateralPrice
|
|
28234
|
+
var calculateVesUPositionSizeGivenExtended = (extendedPositonValue, extendedHoldingAmount, collateralAmount, collateralPrice) => {
|
|
28235
28235
|
const extendedLeverage = calculateExtendedLevergae();
|
|
28236
28236
|
const vesuLeverage = calculateVesuLeverage();
|
|
28237
28237
|
const extendedAmount = extendedHoldingAmount;
|
|
28238
28238
|
const extendedAmountInBTC = extendedAmount.dividedBy(collateralPrice);
|
|
28239
28239
|
const numerator1 = extendedAmount.multipliedBy(extendedLeverage).plus(extendedPositonValue);
|
|
28240
28240
|
const numerator2 = collateralAmount.multipliedBy(collateralPrice).multipliedBy(-1);
|
|
28241
|
-
const vesuAmountInUsd = numerator1.plus(numerator2).dividedBy(vesuLeverage)
|
|
28241
|
+
const vesuAmountInUsd = numerator1.plus(numerator2).dividedBy(vesuLeverage);
|
|
28242
28242
|
const vesuAmountInBTC = vesuAmountInUsd.dividedBy(collateralPrice).toFixed(WBTC_TOKEN_DECIMALS);
|
|
28243
28243
|
return {
|
|
28244
28244
|
vesuAmountInUsd: vesuAmountInUsd.toFixed(2),
|
|
@@ -28248,10 +28248,13 @@ var calculateVesUPositionSizeGivenExtended = (extendedPositonValue, extendedHold
|
|
|
28248
28248
|
};
|
|
28249
28249
|
var calculateDeltaDebtAmount = (maxLtv = MAX_LTV_BTC_USDC, existingVesuCollateral, existingVesuDebt, collateralPrice, debtPrice, targetHf = TARGET_HF) => {
|
|
28250
28250
|
try {
|
|
28251
|
-
const term1 = existingVesuCollateral.multipliedBy(collateralPrice).multipliedBy(maxLtv)
|
|
28251
|
+
const term1 = existingVesuCollateral.multipliedBy(collateralPrice).multipliedBy(maxLtv);
|
|
28252
|
+
logger.info(`term1: ${term1.toNumber()}`);
|
|
28252
28253
|
const term2 = existingVesuDebt.multipliedBy(debtPrice).multipliedBy(targetHf).multipliedBy(-1);
|
|
28254
|
+
logger.info(`term2: ${term2.toNumber()}`);
|
|
28253
28255
|
const debtAmountToBeRepaid = term1.plus(term2).dividedBy(targetHf);
|
|
28254
|
-
|
|
28256
|
+
logger.info(`debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`);
|
|
28257
|
+
return new Web3Number(debtAmountToBeRepaid.toFixed(USDC_TOKEN_DECIMALS), USDC_TOKEN_DECIMALS);
|
|
28255
28258
|
} catch (err) {
|
|
28256
28259
|
logger.error(`error calculating delta position: ${err}`);
|
|
28257
28260
|
return null;
|
|
@@ -28265,7 +28268,6 @@ var calculatePositionToCloseToWithdrawAmount = async (extendedBalance, extendedP
|
|
|
28265
28268
|
const unrealisedPnl = new Web3Number(extendedBalance.unrealisedPnl, USDC_TOKEN_DECIMALS);
|
|
28266
28269
|
const availableForWithdrawal = new Web3Number(extendedBalance.availableForWithdrawal, USDC_TOKEN_DECIMALS);
|
|
28267
28270
|
const upnlPercent = unrealisedPnl.dividedBy(extendedPosition);
|
|
28268
|
-
console.log(`upnlPercent: ${upnlPercent}`);
|
|
28269
28271
|
const walletBalance = new Web3Number(extendedBalance.balance, USDC_TOKEN_DECIMALS);
|
|
28270
28272
|
const term1 = marginRequired.minus(walletBalance).minus(availableForWithdrawal).plus(amountToWithdraw).multipliedBy(extendedLeverage);
|
|
28271
28273
|
const denominator = upnlPercent.multipliedBy(extendedLeverage).plus(1);
|
|
@@ -34693,7 +34695,10 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34693
34695
|
debtAmountToBeRepaid: new Web3Number(0, 0)
|
|
34694
34696
|
};
|
|
34695
34697
|
}
|
|
34696
|
-
|
|
34698
|
+
logger.info(
|
|
34699
|
+
`${_VesuExtendedMultiplierStrategy.name}::shouldInvest debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`
|
|
34700
|
+
);
|
|
34701
|
+
const amountToInvestAfterRepayingDebt = amountToInvest.plus(debtAmountToBeRepaid);
|
|
34697
34702
|
const { vesu_amount, extended_amount, extended_leverage, vesu_leverage } = await calculateAmountDistribution(
|
|
34698
34703
|
amountToInvestAfterRepayingDebt.toNumber(),
|
|
34699
34704
|
extendedAdapter.client,
|
|
@@ -35360,7 +35365,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35360
35365
|
avnuAdapter,
|
|
35361
35366
|
"close" /* CLOSE */
|
|
35362
35367
|
);
|
|
35363
|
-
if (!isPriceDifferenceBetweenAvnuAndExtended) {
|
|
35368
|
+
if (!isPriceDifferenceBetweenAvnuAndExtended && params.cycleType === "WITHDRAWAL" /* WITHDRAWAL */) {
|
|
35364
35369
|
logger.warn(
|
|
35365
35370
|
`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`
|
|
35366
35371
|
);
|
package/package.json
CHANGED
|
@@ -403,8 +403,7 @@ export const calculateVesUPositionSizeGivenExtended = (
|
|
|
403
403
|
extendedPositonValue: number,
|
|
404
404
|
extendedHoldingAmount: Web3Number,
|
|
405
405
|
collateralAmount: Web3Number,
|
|
406
|
-
collateralPrice: number
|
|
407
|
-
vesuDebtAmountToBeRepaid: Web3Number
|
|
406
|
+
collateralPrice: number
|
|
408
407
|
) => {
|
|
409
408
|
const extendedLeverage = calculateExtendedLevergae();
|
|
410
409
|
const vesuLeverage = calculateVesuLeverage();
|
|
@@ -419,7 +418,6 @@ export const calculateVesUPositionSizeGivenExtended = (
|
|
|
419
418
|
const vesuAmountInUsd = numerator1
|
|
420
419
|
.plus(numerator2)
|
|
421
420
|
.dividedBy(vesuLeverage)
|
|
422
|
-
.plus(vesuDebtAmountToBeRepaid);
|
|
423
421
|
const vesuAmountInBTC = vesuAmountInUsd
|
|
424
422
|
.dividedBy(collateralPrice)
|
|
425
423
|
.toFixed(WBTC_TOKEN_DECIMALS);
|
|
@@ -451,14 +449,17 @@ export const calculateDeltaDebtAmount = (
|
|
|
451
449
|
try {
|
|
452
450
|
const term1 = existingVesuCollateral
|
|
453
451
|
.multipliedBy(collateralPrice)
|
|
454
|
-
.multipliedBy(maxLtv)
|
|
455
|
-
|
|
452
|
+
.multipliedBy(maxLtv);
|
|
453
|
+
|
|
454
|
+
logger.info(`term1: ${term1.toNumber()}`);
|
|
456
455
|
const term2 = existingVesuDebt
|
|
457
456
|
.multipliedBy(debtPrice)
|
|
458
457
|
.multipliedBy(targetHf)
|
|
459
458
|
.multipliedBy(-1);
|
|
459
|
+
logger.info(`term2: ${term2.toNumber()}`);
|
|
460
460
|
const debtAmountToBeRepaid = term1.plus(term2).dividedBy(targetHf);
|
|
461
|
-
|
|
461
|
+
logger.info(`debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`);
|
|
462
|
+
return new Web3Number(debtAmountToBeRepaid.toFixed(USDC_TOKEN_DECIMALS), USDC_TOKEN_DECIMALS);
|
|
462
463
|
} catch (err) {
|
|
463
464
|
logger.error(`error calculating delta position: ${err}`);
|
|
464
465
|
return null;
|
|
@@ -477,7 +478,6 @@ export const calculatePositionToCloseToWithdrawAmount = async (
|
|
|
477
478
|
const unrealisedPnl = new Web3Number(extendedBalance.unrealisedPnl, USDC_TOKEN_DECIMALS);
|
|
478
479
|
const availableForWithdrawal = new Web3Number(extendedBalance.availableForWithdrawal, USDC_TOKEN_DECIMALS);
|
|
479
480
|
const upnlPercent = unrealisedPnl.dividedBy(extendedPosition)
|
|
480
|
-
console.log(`upnlPercent: ${upnlPercent}`);
|
|
481
481
|
/**
|
|
482
482
|
* New Formula
|
|
483
483
|
*/
|
|
@@ -503,8 +503,17 @@ export class VesuExtendedMultiplierStrategy<
|
|
|
503
503
|
debtAmountToBeRepaid: new Web3Number(0, 0),
|
|
504
504
|
};
|
|
505
505
|
}
|
|
506
|
+
logger.info(
|
|
507
|
+
`${
|
|
508
|
+
VesuExtendedMultiplierStrategy.name
|
|
509
|
+
}::shouldInvest debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`
|
|
510
|
+
);
|
|
511
|
+
/**
|
|
512
|
+
* Since the debt amount is negative, we need to add it to the amount to invest
|
|
513
|
+
* to maintain the ltv
|
|
514
|
+
*/
|
|
506
515
|
const amountToInvestAfterRepayingDebt =
|
|
507
|
-
amountToInvest.
|
|
516
|
+
amountToInvest.plus(debtAmountToBeRepaid);
|
|
508
517
|
const { vesu_amount, extended_amount, extended_leverage, vesu_leverage } =
|
|
509
518
|
await calculateAmountDistribution(
|
|
510
519
|
amountToInvestAfterRepayingDebt.toNumber(),
|
|
@@ -1317,7 +1326,10 @@ export class VesuExtendedMultiplierStrategy<
|
|
|
1317
1326
|
avnuAdapter,
|
|
1318
1327
|
PositionTypeAvnuExtended.CLOSE
|
|
1319
1328
|
);
|
|
1320
|
-
if (
|
|
1329
|
+
if (
|
|
1330
|
+
!isPriceDifferenceBetweenAvnuAndExtended &&
|
|
1331
|
+
params.cycleType === CycleType.WITHDRAWAL
|
|
1332
|
+
) {
|
|
1321
1333
|
logger.warn(
|
|
1322
1334
|
`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`
|
|
1323
1335
|
);
|