@strkfarm/sdk 2.0.0-dev.24 → 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 +31 -22
- package/dist/index.browser.mjs +31 -22
- package/dist/index.d.ts +1 -1
- package/dist/index.js +31 -22
- package/dist/index.mjs +31 -22
- package/package.json +1 -1
- package/src/strategies/vesu-extended-strategy/utils/helper.ts +19 -20
- package/src/strategies/vesu-extended-strategy/vesu-extended-strategy.tsx +35 -9
|
@@ -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;
|
|
@@ -92648,21 +92651,16 @@ spurious results.`);
|
|
|
92648
92651
|
};
|
|
92649
92652
|
var calculatePositionToCloseToWithdrawAmount = async (extendedBalance, extendedPositions, amountToWithdraw) => {
|
|
92650
92653
|
try {
|
|
92654
|
+
const extendedLeverage = calculateExtendedLevergae();
|
|
92651
92655
|
const extendedPosition = extendedPositions.value;
|
|
92652
|
-
const
|
|
92653
|
-
|
|
92654
|
-
|
|
92655
|
-
);
|
|
92656
|
-
const availableForWithdrawal = new Web3Number(
|
|
92657
|
-
extendedBalance.availableForWithdrawal,
|
|
92658
|
-
USDC_TOKEN_DECIMALS
|
|
92659
|
-
);
|
|
92660
|
-
const netAmount = amountToWithdraw.minus(availableForWithdrawal);
|
|
92656
|
+
const marginRequired = new Web3Number(extendedBalance.initialMargin, USDC_TOKEN_DECIMALS);
|
|
92657
|
+
const unrealisedPnl = new Web3Number(extendedBalance.unrealisedPnl, USDC_TOKEN_DECIMALS);
|
|
92658
|
+
const availableForWithdrawal = new Web3Number(extendedBalance.availableForWithdrawal, USDC_TOKEN_DECIMALS);
|
|
92661
92659
|
const upnlPercent = unrealisedPnl.dividedBy(extendedPosition);
|
|
92662
|
-
|
|
92663
|
-
const
|
|
92664
|
-
const
|
|
92665
|
-
return new Web3Number(Math.ceil(
|
|
92660
|
+
const walletBalance = new Web3Number(extendedBalance.balance, USDC_TOKEN_DECIMALS);
|
|
92661
|
+
const term1 = marginRequired.minus(walletBalance).minus(availableForWithdrawal).plus(amountToWithdraw).multipliedBy(extendedLeverage);
|
|
92662
|
+
const denominator = upnlPercent.multipliedBy(extendedLeverage).plus(1);
|
|
92663
|
+
return new Web3Number(Math.ceil(term1.dividedBy(denominator).dividedBy(extendedLeverage).toNumber()), USDC_TOKEN_DECIMALS);
|
|
92666
92664
|
} catch (err2) {
|
|
92667
92665
|
logger2.error(
|
|
92668
92666
|
`error calculating position to close to withdraw amount: ${err2}`
|
|
@@ -98724,7 +98722,10 @@ spurious results.`);
|
|
|
98724
98722
|
debtAmountToBeRepaid: new Web3Number(0, 0)
|
|
98725
98723
|
};
|
|
98726
98724
|
}
|
|
98727
|
-
|
|
98725
|
+
logger2.info(
|
|
98726
|
+
`${_VesuExtendedMultiplierStrategy.name}::shouldInvest debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`
|
|
98727
|
+
);
|
|
98728
|
+
const amountToInvestAfterRepayingDebt = amountToInvest.plus(debtAmountToBeRepaid);
|
|
98728
98729
|
const { vesu_amount, extended_amount, extended_leverage, vesu_leverage } = await calculateAmountDistribution(
|
|
98729
98730
|
amountToInvestAfterRepayingDebt.toNumber(),
|
|
98730
98731
|
extendedAdapter.client,
|
|
@@ -99260,7 +99261,9 @@ spurious results.`);
|
|
|
99260
99261
|
);
|
|
99261
99262
|
const extendedPositions = await extendedAdapter.getAllOpenPositions();
|
|
99262
99263
|
if (!extendedPositions) {
|
|
99263
|
-
logger2.error(
|
|
99264
|
+
logger2.error(
|
|
99265
|
+
`error getting extended positions: ${extendedPositions} while moving assets from extended to vault`
|
|
99266
|
+
);
|
|
99264
99267
|
return this.createTransactionResult(
|
|
99265
99268
|
[],
|
|
99266
99269
|
false,
|
|
@@ -99276,8 +99279,14 @@ spurious results.`);
|
|
|
99276
99279
|
),
|
|
99277
99280
|
USDC_TOKEN_DECIMALS
|
|
99278
99281
|
);
|
|
99279
|
-
const positionAmountToClose = await calculatePositionToCloseToWithdrawAmount(
|
|
99280
|
-
|
|
99282
|
+
const positionAmountToClose = await calculatePositionToCloseToWithdrawAmount(
|
|
99283
|
+
extendedHoldings,
|
|
99284
|
+
extendedPositions[0],
|
|
99285
|
+
params.amount
|
|
99286
|
+
);
|
|
99287
|
+
logger2.info(
|
|
99288
|
+
`positionAmountToClose: ${positionAmountToClose} this is without leverage`
|
|
99289
|
+
);
|
|
99281
99290
|
logger2.info(
|
|
99282
99291
|
`${_VesuExtendedMultiplierStrategy.name}::moveAssets leftAmountAfterWithdrawalAmountInAccount: ${leftAmountAfterWithdrawalAmountInAccount.toNumber()}`
|
|
99283
99292
|
);
|
|
@@ -99383,7 +99392,7 @@ spurious results.`);
|
|
|
99383
99392
|
avnuAdapter,
|
|
99384
99393
|
"close" /* CLOSE */
|
|
99385
99394
|
);
|
|
99386
|
-
if (!isPriceDifferenceBetweenAvnuAndExtended) {
|
|
99395
|
+
if (!isPriceDifferenceBetweenAvnuAndExtended && params.cycleType === "WITHDRAWAL" /* WITHDRAWAL */) {
|
|
99387
99396
|
logger2.warn(
|
|
99388
99397
|
`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`
|
|
99389
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;
|
|
@@ -28603,21 +28606,16 @@ var calculateDeltaDebtAmount = (maxLtv = MAX_LTV_BTC_USDC, existingVesuCollatera
|
|
|
28603
28606
|
};
|
|
28604
28607
|
var calculatePositionToCloseToWithdrawAmount = async (extendedBalance, extendedPositions, amountToWithdraw) => {
|
|
28605
28608
|
try {
|
|
28609
|
+
const extendedLeverage = calculateExtendedLevergae();
|
|
28606
28610
|
const extendedPosition = extendedPositions.value;
|
|
28607
|
-
const
|
|
28608
|
-
|
|
28609
|
-
|
|
28610
|
-
);
|
|
28611
|
-
const availableForWithdrawal = new Web3Number(
|
|
28612
|
-
extendedBalance.availableForWithdrawal,
|
|
28613
|
-
USDC_TOKEN_DECIMALS
|
|
28614
|
-
);
|
|
28615
|
-
const netAmount = amountToWithdraw.minus(availableForWithdrawal);
|
|
28611
|
+
const marginRequired = new Web3Number(extendedBalance.initialMargin, USDC_TOKEN_DECIMALS);
|
|
28612
|
+
const unrealisedPnl = new Web3Number(extendedBalance.unrealisedPnl, USDC_TOKEN_DECIMALS);
|
|
28613
|
+
const availableForWithdrawal = new Web3Number(extendedBalance.availableForWithdrawal, USDC_TOKEN_DECIMALS);
|
|
28616
28614
|
const upnlPercent = unrealisedPnl.dividedBy(extendedPosition);
|
|
28617
|
-
|
|
28618
|
-
const
|
|
28619
|
-
const
|
|
28620
|
-
return new Web3Number(Math.ceil(
|
|
28615
|
+
const walletBalance = new Web3Number(extendedBalance.balance, USDC_TOKEN_DECIMALS);
|
|
28616
|
+
const term1 = marginRequired.minus(walletBalance).minus(availableForWithdrawal).plus(amountToWithdraw).multipliedBy(extendedLeverage);
|
|
28617
|
+
const denominator = upnlPercent.multipliedBy(extendedLeverage).plus(1);
|
|
28618
|
+
return new Web3Number(Math.ceil(term1.dividedBy(denominator).dividedBy(extendedLeverage).toNumber()), USDC_TOKEN_DECIMALS);
|
|
28621
28619
|
} catch (err) {
|
|
28622
28620
|
logger.error(
|
|
28623
28621
|
`error calculating position to close to withdraw amount: ${err}`
|
|
@@ -34686,7 +34684,10 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34686
34684
|
debtAmountToBeRepaid: new Web3Number(0, 0)
|
|
34687
34685
|
};
|
|
34688
34686
|
}
|
|
34689
|
-
|
|
34687
|
+
logger.info(
|
|
34688
|
+
`${_VesuExtendedMultiplierStrategy.name}::shouldInvest debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`
|
|
34689
|
+
);
|
|
34690
|
+
const amountToInvestAfterRepayingDebt = amountToInvest.plus(debtAmountToBeRepaid);
|
|
34690
34691
|
const { vesu_amount, extended_amount, extended_leverage, vesu_leverage } = await calculateAmountDistribution(
|
|
34691
34692
|
amountToInvestAfterRepayingDebt.toNumber(),
|
|
34692
34693
|
extendedAdapter.client,
|
|
@@ -35222,7 +35223,9 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35222
35223
|
);
|
|
35223
35224
|
const extendedPositions = await extendedAdapter.getAllOpenPositions();
|
|
35224
35225
|
if (!extendedPositions) {
|
|
35225
|
-
logger.error(
|
|
35226
|
+
logger.error(
|
|
35227
|
+
`error getting extended positions: ${extendedPositions} while moving assets from extended to vault`
|
|
35228
|
+
);
|
|
35226
35229
|
return this.createTransactionResult(
|
|
35227
35230
|
[],
|
|
35228
35231
|
false,
|
|
@@ -35238,8 +35241,14 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35238
35241
|
),
|
|
35239
35242
|
USDC_TOKEN_DECIMALS
|
|
35240
35243
|
);
|
|
35241
|
-
const positionAmountToClose = await calculatePositionToCloseToWithdrawAmount(
|
|
35242
|
-
|
|
35244
|
+
const positionAmountToClose = await calculatePositionToCloseToWithdrawAmount(
|
|
35245
|
+
extendedHoldings,
|
|
35246
|
+
extendedPositions[0],
|
|
35247
|
+
params.amount
|
|
35248
|
+
);
|
|
35249
|
+
logger.info(
|
|
35250
|
+
`positionAmountToClose: ${positionAmountToClose} this is without leverage`
|
|
35251
|
+
);
|
|
35243
35252
|
logger.info(
|
|
35244
35253
|
`${_VesuExtendedMultiplierStrategy.name}::moveAssets leftAmountAfterWithdrawalAmountInAccount: ${leftAmountAfterWithdrawalAmountInAccount.toNumber()}`
|
|
35245
35254
|
);
|
|
@@ -35345,7 +35354,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35345
35354
|
avnuAdapter,
|
|
35346
35355
|
"close" /* CLOSE */
|
|
35347
35356
|
);
|
|
35348
|
-
if (!isPriceDifferenceBetweenAvnuAndExtended) {
|
|
35357
|
+
if (!isPriceDifferenceBetweenAvnuAndExtended && params.cycleType === "WITHDRAWAL" /* WITHDRAWAL */) {
|
|
35349
35358
|
logger.warn(
|
|
35350
35359
|
`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`
|
|
35351
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;
|
|
@@ -28407,21 +28410,16 @@ var calculateDeltaDebtAmount = (maxLtv = MAX_LTV_BTC_USDC, existingVesuCollatera
|
|
|
28407
28410
|
};
|
|
28408
28411
|
var calculatePositionToCloseToWithdrawAmount = async (extendedBalance, extendedPositions, amountToWithdraw) => {
|
|
28409
28412
|
try {
|
|
28413
|
+
const extendedLeverage = calculateExtendedLevergae();
|
|
28410
28414
|
const extendedPosition = extendedPositions.value;
|
|
28411
|
-
const
|
|
28412
|
-
|
|
28413
|
-
|
|
28414
|
-
);
|
|
28415
|
-
const availableForWithdrawal = new Web3Number(
|
|
28416
|
-
extendedBalance.availableForWithdrawal,
|
|
28417
|
-
USDC_TOKEN_DECIMALS
|
|
28418
|
-
);
|
|
28419
|
-
const netAmount = amountToWithdraw.minus(availableForWithdrawal);
|
|
28415
|
+
const marginRequired = new Web3Number(extendedBalance.initialMargin, USDC_TOKEN_DECIMALS);
|
|
28416
|
+
const unrealisedPnl = new Web3Number(extendedBalance.unrealisedPnl, USDC_TOKEN_DECIMALS);
|
|
28417
|
+
const availableForWithdrawal = new Web3Number(extendedBalance.availableForWithdrawal, USDC_TOKEN_DECIMALS);
|
|
28420
28418
|
const upnlPercent = unrealisedPnl.dividedBy(extendedPosition);
|
|
28421
|
-
|
|
28422
|
-
const
|
|
28423
|
-
const
|
|
28424
|
-
return new Web3Number(Math.ceil(
|
|
28419
|
+
const walletBalance = new Web3Number(extendedBalance.balance, USDC_TOKEN_DECIMALS);
|
|
28420
|
+
const term1 = marginRequired.minus(walletBalance).minus(availableForWithdrawal).plus(amountToWithdraw).multipliedBy(extendedLeverage);
|
|
28421
|
+
const denominator = upnlPercent.multipliedBy(extendedLeverage).plus(1);
|
|
28422
|
+
return new Web3Number(Math.ceil(term1.dividedBy(denominator).dividedBy(extendedLeverage).toNumber()), USDC_TOKEN_DECIMALS);
|
|
28425
28423
|
} catch (err) {
|
|
28426
28424
|
logger.error(
|
|
28427
28425
|
`error calculating position to close to withdraw amount: ${err}`
|
|
@@ -34845,7 +34843,10 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34845
34843
|
debtAmountToBeRepaid: new Web3Number(0, 0)
|
|
34846
34844
|
};
|
|
34847
34845
|
}
|
|
34848
|
-
|
|
34846
|
+
logger.info(
|
|
34847
|
+
`${_VesuExtendedMultiplierStrategy.name}::shouldInvest debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`
|
|
34848
|
+
);
|
|
34849
|
+
const amountToInvestAfterRepayingDebt = amountToInvest.plus(debtAmountToBeRepaid);
|
|
34849
34850
|
const { vesu_amount, extended_amount, extended_leverage, vesu_leverage } = await calculateAmountDistribution(
|
|
34850
34851
|
amountToInvestAfterRepayingDebt.toNumber(),
|
|
34851
34852
|
extendedAdapter.client,
|
|
@@ -35381,7 +35382,9 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35381
35382
|
);
|
|
35382
35383
|
const extendedPositions = await extendedAdapter.getAllOpenPositions();
|
|
35383
35384
|
if (!extendedPositions) {
|
|
35384
|
-
logger.error(
|
|
35385
|
+
logger.error(
|
|
35386
|
+
`error getting extended positions: ${extendedPositions} while moving assets from extended to vault`
|
|
35387
|
+
);
|
|
35385
35388
|
return this.createTransactionResult(
|
|
35386
35389
|
[],
|
|
35387
35390
|
false,
|
|
@@ -35397,8 +35400,14 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35397
35400
|
),
|
|
35398
35401
|
USDC_TOKEN_DECIMALS
|
|
35399
35402
|
);
|
|
35400
|
-
const positionAmountToClose = await calculatePositionToCloseToWithdrawAmount(
|
|
35401
|
-
|
|
35403
|
+
const positionAmountToClose = await calculatePositionToCloseToWithdrawAmount(
|
|
35404
|
+
extendedHoldings,
|
|
35405
|
+
extendedPositions[0],
|
|
35406
|
+
params.amount
|
|
35407
|
+
);
|
|
35408
|
+
logger.info(
|
|
35409
|
+
`positionAmountToClose: ${positionAmountToClose} this is without leverage`
|
|
35410
|
+
);
|
|
35402
35411
|
logger.info(
|
|
35403
35412
|
`${_VesuExtendedMultiplierStrategy.name}::moveAssets leftAmountAfterWithdrawalAmountInAccount: ${leftAmountAfterWithdrawalAmountInAccount.toNumber()}`
|
|
35404
35413
|
);
|
|
@@ -35504,7 +35513,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35504
35513
|
avnuAdapter,
|
|
35505
35514
|
"close" /* CLOSE */
|
|
35506
35515
|
);
|
|
35507
|
-
if (!isPriceDifferenceBetweenAvnuAndExtended) {
|
|
35516
|
+
if (!isPriceDifferenceBetweenAvnuAndExtended && params.cycleType === "WITHDRAWAL" /* WITHDRAWAL */) {
|
|
35508
35517
|
logger.warn(
|
|
35509
35518
|
`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`
|
|
35510
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;
|
|
@@ -28259,21 +28262,16 @@ var calculateDeltaDebtAmount = (maxLtv = MAX_LTV_BTC_USDC, existingVesuCollatera
|
|
|
28259
28262
|
};
|
|
28260
28263
|
var calculatePositionToCloseToWithdrawAmount = async (extendedBalance, extendedPositions, amountToWithdraw) => {
|
|
28261
28264
|
try {
|
|
28265
|
+
const extendedLeverage = calculateExtendedLevergae();
|
|
28262
28266
|
const extendedPosition = extendedPositions.value;
|
|
28263
|
-
const
|
|
28264
|
-
|
|
28265
|
-
|
|
28266
|
-
);
|
|
28267
|
-
const availableForWithdrawal = new Web3Number(
|
|
28268
|
-
extendedBalance.availableForWithdrawal,
|
|
28269
|
-
USDC_TOKEN_DECIMALS
|
|
28270
|
-
);
|
|
28271
|
-
const netAmount = amountToWithdraw.minus(availableForWithdrawal);
|
|
28267
|
+
const marginRequired = new Web3Number(extendedBalance.initialMargin, USDC_TOKEN_DECIMALS);
|
|
28268
|
+
const unrealisedPnl = new Web3Number(extendedBalance.unrealisedPnl, USDC_TOKEN_DECIMALS);
|
|
28269
|
+
const availableForWithdrawal = new Web3Number(extendedBalance.availableForWithdrawal, USDC_TOKEN_DECIMALS);
|
|
28272
28270
|
const upnlPercent = unrealisedPnl.dividedBy(extendedPosition);
|
|
28273
|
-
|
|
28274
|
-
const
|
|
28275
|
-
const
|
|
28276
|
-
return new Web3Number(Math.ceil(
|
|
28271
|
+
const walletBalance = new Web3Number(extendedBalance.balance, USDC_TOKEN_DECIMALS);
|
|
28272
|
+
const term1 = marginRequired.minus(walletBalance).minus(availableForWithdrawal).plus(amountToWithdraw).multipliedBy(extendedLeverage);
|
|
28273
|
+
const denominator = upnlPercent.multipliedBy(extendedLeverage).plus(1);
|
|
28274
|
+
return new Web3Number(Math.ceil(term1.dividedBy(denominator).dividedBy(extendedLeverage).toNumber()), USDC_TOKEN_DECIMALS);
|
|
28277
28275
|
} catch (err) {
|
|
28278
28276
|
logger.error(
|
|
28279
28277
|
`error calculating position to close to withdraw amount: ${err}`
|
|
@@ -34697,7 +34695,10 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34697
34695
|
debtAmountToBeRepaid: new Web3Number(0, 0)
|
|
34698
34696
|
};
|
|
34699
34697
|
}
|
|
34700
|
-
|
|
34698
|
+
logger.info(
|
|
34699
|
+
`${_VesuExtendedMultiplierStrategy.name}::shouldInvest debtAmountToBeRepaid: ${debtAmountToBeRepaid.toNumber()}`
|
|
34700
|
+
);
|
|
34701
|
+
const amountToInvestAfterRepayingDebt = amountToInvest.plus(debtAmountToBeRepaid);
|
|
34701
34702
|
const { vesu_amount, extended_amount, extended_leverage, vesu_leverage } = await calculateAmountDistribution(
|
|
34702
34703
|
amountToInvestAfterRepayingDebt.toNumber(),
|
|
34703
34704
|
extendedAdapter.client,
|
|
@@ -35233,7 +35234,9 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35233
35234
|
);
|
|
35234
35235
|
const extendedPositions = await extendedAdapter.getAllOpenPositions();
|
|
35235
35236
|
if (!extendedPositions) {
|
|
35236
|
-
logger.error(
|
|
35237
|
+
logger.error(
|
|
35238
|
+
`error getting extended positions: ${extendedPositions} while moving assets from extended to vault`
|
|
35239
|
+
);
|
|
35237
35240
|
return this.createTransactionResult(
|
|
35238
35241
|
[],
|
|
35239
35242
|
false,
|
|
@@ -35249,8 +35252,14 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35249
35252
|
),
|
|
35250
35253
|
USDC_TOKEN_DECIMALS
|
|
35251
35254
|
);
|
|
35252
|
-
const positionAmountToClose = await calculatePositionToCloseToWithdrawAmount(
|
|
35253
|
-
|
|
35255
|
+
const positionAmountToClose = await calculatePositionToCloseToWithdrawAmount(
|
|
35256
|
+
extendedHoldings,
|
|
35257
|
+
extendedPositions[0],
|
|
35258
|
+
params.amount
|
|
35259
|
+
);
|
|
35260
|
+
logger.info(
|
|
35261
|
+
`positionAmountToClose: ${positionAmountToClose} this is without leverage`
|
|
35262
|
+
);
|
|
35254
35263
|
logger.info(
|
|
35255
35264
|
`${_VesuExtendedMultiplierStrategy.name}::moveAssets leftAmountAfterWithdrawalAmountInAccount: ${leftAmountAfterWithdrawalAmountInAccount.toNumber()}`
|
|
35256
35265
|
);
|
|
@@ -35356,7 +35365,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
35356
35365
|
avnuAdapter,
|
|
35357
35366
|
"close" /* CLOSE */
|
|
35358
35367
|
);
|
|
35359
|
-
if (!isPriceDifferenceBetweenAvnuAndExtended) {
|
|
35368
|
+
if (!isPriceDifferenceBetweenAvnuAndExtended && params.cycleType === "WITHDRAWAL" /* WITHDRAWAL */) {
|
|
35360
35369
|
logger.warn(
|
|
35361
35370
|
`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`
|
|
35362
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;
|
|
@@ -471,21 +472,19 @@ export const calculatePositionToCloseToWithdrawAmount = async (
|
|
|
471
472
|
amountToWithdraw: Web3Number
|
|
472
473
|
) => {
|
|
473
474
|
try {
|
|
475
|
+
const extendedLeverage = calculateExtendedLevergae();
|
|
474
476
|
const extendedPosition = extendedPositions.value;
|
|
475
|
-
const
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
)
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
);
|
|
483
|
-
const
|
|
484
|
-
const
|
|
485
|
-
|
|
486
|
-
const denm = upnlPercent.multipliedBy(3).plus(1);
|
|
487
|
-
const amountToClose = netAmount.multipliedBy(3).dividedBy(denm);
|
|
488
|
-
return new Web3Number(Math.ceil(amountToClose.toNumber()), USDC_TOKEN_DECIMALS);
|
|
477
|
+
const marginRequired = new Web3Number(extendedBalance.initialMargin , USDC_TOKEN_DECIMALS);
|
|
478
|
+
const unrealisedPnl = new Web3Number(extendedBalance.unrealisedPnl, USDC_TOKEN_DECIMALS);
|
|
479
|
+
const availableForWithdrawal = new Web3Number(extendedBalance.availableForWithdrawal, USDC_TOKEN_DECIMALS);
|
|
480
|
+
const upnlPercent = unrealisedPnl.dividedBy(extendedPosition)
|
|
481
|
+
/**
|
|
482
|
+
* New Formula
|
|
483
|
+
*/
|
|
484
|
+
const walletBalance = new Web3Number(extendedBalance.balance, USDC_TOKEN_DECIMALS);
|
|
485
|
+
const term1 = marginRequired.minus(walletBalance).minus(availableForWithdrawal).plus(amountToWithdraw).multipliedBy(extendedLeverage);
|
|
486
|
+
const denominator = upnlPercent.multipliedBy(extendedLeverage).plus(1);
|
|
487
|
+
return new Web3Number(Math.ceil(term1.dividedBy(denominator).dividedBy(extendedLeverage).toNumber()), USDC_TOKEN_DECIMALS);
|
|
489
488
|
} catch (err) {
|
|
490
489
|
logger.error(
|
|
491
490
|
`error calculating position to close to withdraw amount: ${err}`
|
|
@@ -8,7 +8,12 @@ import {
|
|
|
8
8
|
UNIVERSAL_MANAGE_IDS,
|
|
9
9
|
UniversalStrategySettings,
|
|
10
10
|
} from "../universal-strategy";
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
calculateDebtAmount,
|
|
13
|
+
calculateDeltaDebtAmount,
|
|
14
|
+
calculateExtendedLevergae,
|
|
15
|
+
calculatePositionToCloseToWithdrawAmount,
|
|
16
|
+
} from "./utils/helper";
|
|
12
17
|
import { logger } from "@/utils";
|
|
13
18
|
import { AUDIT_URL } from "../universal-lst-muliplier-strategy";
|
|
14
19
|
import { getNoRiskTags } from "@/interfaces";
|
|
@@ -410,7 +415,7 @@ export class VesuExtendedMultiplierStrategy<
|
|
|
410
415
|
logger.info(
|
|
411
416
|
`${VesuExtendedMultiplierStrategy.name}::shouldInvest amountToInvest: ${amountToInvestNumber}`
|
|
412
417
|
);
|
|
413
|
-
|
|
418
|
+
|
|
414
419
|
if (amountToInvest.lessThan(LIMIT_BALANCE_VALUE)) {
|
|
415
420
|
return {
|
|
416
421
|
shouldInvest: false,
|
|
@@ -498,7 +503,17 @@ export class VesuExtendedMultiplierStrategy<
|
|
|
498
503
|
debtAmountToBeRepaid: new Web3Number(0, 0),
|
|
499
504
|
};
|
|
500
505
|
}
|
|
501
|
-
|
|
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
|
+
*/
|
|
515
|
+
const amountToInvestAfterRepayingDebt =
|
|
516
|
+
amountToInvest.plus(debtAmountToBeRepaid);
|
|
502
517
|
const { vesu_amount, extended_amount, extended_leverage, vesu_leverage } =
|
|
503
518
|
await calculateAmountDistribution(
|
|
504
519
|
amountToInvestAfterRepayingDebt.toNumber(),
|
|
@@ -1144,7 +1159,9 @@ export class VesuExtendedMultiplierStrategy<
|
|
|
1144
1159
|
);
|
|
1145
1160
|
const extendedPositions = await extendedAdapter.getAllOpenPositions();
|
|
1146
1161
|
if (!extendedPositions) {
|
|
1147
|
-
logger.error(
|
|
1162
|
+
logger.error(
|
|
1163
|
+
`error getting extended positions: ${extendedPositions} while moving assets from extended to vault`
|
|
1164
|
+
);
|
|
1148
1165
|
return this.createTransactionResult(
|
|
1149
1166
|
[],
|
|
1150
1167
|
false,
|
|
@@ -1160,8 +1177,15 @@ export class VesuExtendedMultiplierStrategy<
|
|
|
1160
1177
|
),
|
|
1161
1178
|
USDC_TOKEN_DECIMALS
|
|
1162
1179
|
);
|
|
1163
|
-
const positionAmountToClose =
|
|
1164
|
-
|
|
1180
|
+
const positionAmountToClose =
|
|
1181
|
+
await calculatePositionToCloseToWithdrawAmount(
|
|
1182
|
+
extendedHoldings,
|
|
1183
|
+
extendedPositions[0],
|
|
1184
|
+
params.amount
|
|
1185
|
+
);
|
|
1186
|
+
logger.info(
|
|
1187
|
+
`positionAmountToClose: ${positionAmountToClose} this is without leverage`
|
|
1188
|
+
);
|
|
1165
1189
|
logger.info(
|
|
1166
1190
|
`${
|
|
1167
1191
|
VesuExtendedMultiplierStrategy.name
|
|
@@ -1177,8 +1201,7 @@ export class VesuExtendedMultiplierStrategy<
|
|
|
1177
1201
|
logger.error(`error fetching order book btc usdc: ${status}`);
|
|
1178
1202
|
priceOfBTC = collateralPrice.price;
|
|
1179
1203
|
}
|
|
1180
|
-
const btcAmount =
|
|
1181
|
-
positionAmountToClose.dividedBy(priceOfBTC);
|
|
1204
|
+
const btcAmount = positionAmountToClose.dividedBy(priceOfBTC);
|
|
1182
1205
|
/**
|
|
1183
1206
|
* If amount for withdrawal is greater than the amount in extended available for withdrawal,
|
|
1184
1207
|
* then we need to open a long position depending on the difference between the two
|
|
@@ -1303,7 +1326,10 @@ export class VesuExtendedMultiplierStrategy<
|
|
|
1303
1326
|
avnuAdapter,
|
|
1304
1327
|
PositionTypeAvnuExtended.CLOSE
|
|
1305
1328
|
);
|
|
1306
|
-
if (
|
|
1329
|
+
if (
|
|
1330
|
+
!isPriceDifferenceBetweenAvnuAndExtended &&
|
|
1331
|
+
params.cycleType === CycleType.WITHDRAWAL
|
|
1332
|
+
) {
|
|
1307
1333
|
logger.warn(
|
|
1308
1334
|
`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`
|
|
1309
1335
|
);
|