@strkfarm/sdk 2.0.0-dev.20 → 2.0.0-dev.22

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.
@@ -94873,6 +94873,8 @@ spurious results.`);
94873
94873
  return null;
94874
94874
  }
94875
94875
  const dataObject = finalQuote.data[0];
94876
+ const wbtcAmountOut = parseInt(dataObject.buyAmount.toString(), 16);
94877
+ logger2.info(`${_AvnuAdapter.name}::getQuotesAvnu finalAmountOfWbtcOut : ${wbtcAmountOut} ${dataObject.buyAmount} ${dataObject.sellAmount.toString()} ${dataObject.sellAmount.toString()}`);
94876
94878
  return dataObject;
94877
94879
  } catch (err2) {
94878
94880
  logger2.error(`No quotes available for this swap: ${err2}`);
@@ -98551,7 +98553,7 @@ spurious results.`);
98551
98553
  };
98552
98554
  }
98553
98555
  }
98554
- const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).multipliedBy(1 - LIMIT_BALANCE);
98556
+ const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForTrade ?? 0).multipliedBy(1 - LIMIT_BALANCE);
98555
98557
  const amountToInvestNumber = amountToInvest.toNumber();
98556
98558
  if (!Number.isFinite(amountToInvestNumber)) {
98557
98559
  logger2.error(
@@ -98687,17 +98689,17 @@ spurious results.`);
98687
98689
  return [];
98688
98690
  }
98689
98691
  const usdcAmountInWallet = (await this.getUnusedBalance()).amount;
98690
- const usdcAmountOnExtendedAvailableForWithdrawal = parseFloat(
98691
- extendedHoldings.availableForWithdrawal
98692
+ const usdcAmountOnExtendedAvailableForTrade = parseFloat(
98693
+ extendedHoldings.availableForTrade
98692
98694
  );
98693
- logger2.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculating movements - Extended current: ${usdcAmountOnExtendedAvailableForWithdrawal}, Wallet: ${usdcAmountInWallet.toNumber()}, Target Extended: ${extendedAmount.toNumber()}, Target Vesu: ${vesuAmount.toNumber()}`);
98695
+ logger2.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculating movements - Extended current: ${usdcAmountOnExtendedAvailableForTrade}, Wallet: ${usdcAmountInWallet.toNumber()}, Target Extended: ${extendedAmount.toNumber()}, Target Vesu: ${vesuAmount.toNumber()}`);
98694
98696
  let totalExtendedWithdrawal = new Web3Number(0, USDC_TOKEN_DECIMALS);
98695
98697
  let totalExtendedDeposit = new Web3Number(0, USDC_TOKEN_DECIMALS);
98696
98698
  if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
98697
98699
  totalExtendedWithdrawal = totalExtendedWithdrawal.plus(extendedAmount.abs());
98698
98700
  }
98699
98701
  const extendedTargetAmount = extendedAmount.abs();
98700
- let projectedExtendedBalance = usdcAmountOnExtendedAvailableForWithdrawal;
98702
+ let projectedExtendedBalance = usdcAmountOnExtendedAvailableForTrade;
98701
98703
  if (extendedAmount.isNegative()) {
98702
98704
  projectedExtendedBalance = projectedExtendedBalance - extendedAmount.abs().toNumber();
98703
98705
  }
@@ -98713,7 +98715,6 @@ spurious results.`);
98713
98715
  let vesuAmountDifference = vesuTargetAmount.minus(projectedWalletBalance);
98714
98716
  const vesuAmountDifferenceAbs = vesuAmountDifference.abs();
98715
98717
  logger2.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculated movements - Extended withdrawal: ${totalExtendedWithdrawal.toNumber()}, Extended deposit: ${totalExtendedDeposit.toNumber()}, Extended diff: ${extendedAmountDifference.toNumber()}, Projected wallet: ${projectedWalletBalance.toNumber()}, Vesu diff: ${vesuAmountDifference.toNumber()}`);
98716
- let calls = [];
98717
98718
  let transactionResults = [];
98718
98719
  if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
98719
98720
  try {
@@ -98891,6 +98892,15 @@ spurious results.`);
98891
98892
  }
98892
98893
  return { calls: [], status: false, transactionMetadata: { protocolFrom: "", protocolTo: "", transactionType: "DEPOSIT", usdAmount: "0", status: "FAILED", cycleType } };
98893
98894
  }
98895
+ /**
98896
+ * This method is used to move assets between protocols
98897
+ * @param params - The parameters for the move assets operation
98898
+ * @param extendedAdapter - The extended adapter
98899
+ * @param vesuAdapter - The vesu adapter
98900
+ * @returns The transaction result
98901
+ * If Extended amount is greater than amount of withdrawal from extended, then we need to open a long position
98902
+ * so that the amount of withdrawal from extended is fullfilled
98903
+ */
98894
98904
  async moveAssets(params, extendedAdapter, vesuAdapter) {
98895
98905
  try {
98896
98906
  if (params.amount.lessThanOrEqualTo(0)) {
@@ -98899,23 +98909,6 @@ spurious results.`);
98899
98909
  );
98900
98910
  return this.createTransactionResult([], false, params, "NONE", params.cycleType);
98901
98911
  }
98902
- const amountAbs = params.amount.abs();
98903
- if (params.from === Protocols.EXTENDED.name || params.to === Protocols.EXTENDED.name) {
98904
- if (amountAbs.lessThanOrEqualTo(extendedAdapter.minimumExtendedMovementAmount)) {
98905
- logger2.warn(
98906
- `Amount ${amountAbs.toNumber()} is below minimum Extended movement amount ${extendedAdapter.minimumExtendedMovementAmount}. Skipping operation.`
98907
- );
98908
- return this.createTransactionResult([], false, params, "NONE", params.cycleType);
98909
- }
98910
- }
98911
- if (params.from === Protocols.VESU.name || params.to === Protocols.VESU.name) {
98912
- if (amountAbs.lessThanOrEqualTo(vesuAdapter.minimumVesuMovementAmount)) {
98913
- logger2.warn(
98914
- `Amount ${amountAbs.toNumber()} is below minimum Vesu movement amount ${vesuAdapter.minimumVesuMovementAmount}. Skipping operation.`
98915
- );
98916
- return this.createTransactionResult([], false, params, "NONE", params.cycleType);
98917
- }
98918
- }
98919
98912
  const avnuAdapter = await this.getAvnuAdapter();
98920
98913
  if (!avnuAdapter) {
98921
98914
  logger2.error(`avnu adapter not found: ${avnuAdapter}`);
@@ -98952,9 +98945,22 @@ spurious results.`);
98952
98945
  );
98953
98946
  logger2.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssets extendedHoldingAmount: ${extendedHoldingAmount.toNumber()}`);
98954
98947
  if (params.amount.abs().greaterThan(extendedHoldingAmount)) {
98955
- const leftAmountAfterWithdrawalAmountInAccount = params.amount.abs().minus(extendedHoldingAmount);
98948
+ const leftAmountAfterWithdrawalAmountInAccount = new Web3Number(Math.ceil(params.amount.abs().minus(extendedHoldingAmount).toNumber()), USDC_TOKEN_DECIMALS);
98956
98949
  logger2.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssets leftAmountAfterWithdrawalAmountInAccount: ${leftAmountAfterWithdrawalAmountInAccount.toNumber()}`);
98957
- const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(collateralPrice.price);
98950
+ let priceOfBTC;
98951
+ const {
98952
+ ask,
98953
+ bid,
98954
+ status
98955
+ } = await extendedAdapter.fetchOrderBookBTCUSDC();
98956
+ const price = ask.plus(bid).dividedBy(2);
98957
+ if (status) {
98958
+ priceOfBTC = price;
98959
+ } else {
98960
+ logger2.error(`error fetching order book btc usdc: ${status}`);
98961
+ priceOfBTC = collateralPrice.price;
98962
+ }
98963
+ const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(priceOfBTC);
98958
98964
  const openLongPosition = btcAmount.multipliedBy(3).greaterThan(MINIMUM_EXTENDED_POSITION_SIZE) ? await extendedAdapter.createOrder(
98959
98965
  extendedLeverage.toString(),
98960
98966
  btcAmount.toNumber(),
@@ -30834,6 +30834,8 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
30834
30834
  return null;
30835
30835
  }
30836
30836
  const dataObject = finalQuote.data[0];
30837
+ const wbtcAmountOut = parseInt(dataObject.buyAmount.toString(), 16);
30838
+ logger.info(`${_AvnuAdapter.name}::getQuotesAvnu finalAmountOfWbtcOut : ${wbtcAmountOut} ${dataObject.buyAmount} ${dataObject.sellAmount.toString()} ${dataObject.sellAmount.toString()}`);
30837
30839
  return dataObject;
30838
30840
  } catch (err) {
30839
30841
  logger.error(`No quotes available for this swap: ${err}`);
@@ -34515,7 +34517,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34515
34517
  };
34516
34518
  }
34517
34519
  }
34518
- const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).multipliedBy(1 - LIMIT_BALANCE);
34520
+ const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForTrade ?? 0).multipliedBy(1 - LIMIT_BALANCE);
34519
34521
  const amountToInvestNumber = amountToInvest.toNumber();
34520
34522
  if (!Number.isFinite(amountToInvestNumber)) {
34521
34523
  logger.error(
@@ -34651,17 +34653,17 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34651
34653
  return [];
34652
34654
  }
34653
34655
  const usdcAmountInWallet = (await this.getUnusedBalance()).amount;
34654
- const usdcAmountOnExtendedAvailableForWithdrawal = parseFloat(
34655
- extendedHoldings.availableForWithdrawal
34656
+ const usdcAmountOnExtendedAvailableForTrade = parseFloat(
34657
+ extendedHoldings.availableForTrade
34656
34658
  );
34657
- logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculating movements - Extended current: ${usdcAmountOnExtendedAvailableForWithdrawal}, Wallet: ${usdcAmountInWallet.toNumber()}, Target Extended: ${extendedAmount.toNumber()}, Target Vesu: ${vesuAmount.toNumber()}`);
34659
+ logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculating movements - Extended current: ${usdcAmountOnExtendedAvailableForTrade}, Wallet: ${usdcAmountInWallet.toNumber()}, Target Extended: ${extendedAmount.toNumber()}, Target Vesu: ${vesuAmount.toNumber()}`);
34658
34660
  let totalExtendedWithdrawal = new Web3Number(0, USDC_TOKEN_DECIMALS);
34659
34661
  let totalExtendedDeposit = new Web3Number(0, USDC_TOKEN_DECIMALS);
34660
34662
  if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
34661
34663
  totalExtendedWithdrawal = totalExtendedWithdrawal.plus(extendedAmount.abs());
34662
34664
  }
34663
34665
  const extendedTargetAmount = extendedAmount.abs();
34664
- let projectedExtendedBalance = usdcAmountOnExtendedAvailableForWithdrawal;
34666
+ let projectedExtendedBalance = usdcAmountOnExtendedAvailableForTrade;
34665
34667
  if (extendedAmount.isNegative()) {
34666
34668
  projectedExtendedBalance = projectedExtendedBalance - extendedAmount.abs().toNumber();
34667
34669
  }
@@ -34677,7 +34679,6 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34677
34679
  let vesuAmountDifference = vesuTargetAmount.minus(projectedWalletBalance);
34678
34680
  const vesuAmountDifferenceAbs = vesuAmountDifference.abs();
34679
34681
  logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculated movements - Extended withdrawal: ${totalExtendedWithdrawal.toNumber()}, Extended deposit: ${totalExtendedDeposit.toNumber()}, Extended diff: ${extendedAmountDifference.toNumber()}, Projected wallet: ${projectedWalletBalance.toNumber()}, Vesu diff: ${vesuAmountDifference.toNumber()}`);
34680
- let calls = [];
34681
34682
  let transactionResults = [];
34682
34683
  if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
34683
34684
  try {
@@ -34855,6 +34856,15 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34855
34856
  }
34856
34857
  return { calls: [], status: false, transactionMetadata: { protocolFrom: "", protocolTo: "", transactionType: "DEPOSIT", usdAmount: "0", status: "FAILED", cycleType } };
34857
34858
  }
34859
+ /**
34860
+ * This method is used to move assets between protocols
34861
+ * @param params - The parameters for the move assets operation
34862
+ * @param extendedAdapter - The extended adapter
34863
+ * @param vesuAdapter - The vesu adapter
34864
+ * @returns The transaction result
34865
+ * If Extended amount is greater than amount of withdrawal from extended, then we need to open a long position
34866
+ * so that the amount of withdrawal from extended is fullfilled
34867
+ */
34858
34868
  async moveAssets(params, extendedAdapter, vesuAdapter) {
34859
34869
  try {
34860
34870
  if (params.amount.lessThanOrEqualTo(0)) {
@@ -34863,23 +34873,6 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34863
34873
  );
34864
34874
  return this.createTransactionResult([], false, params, "NONE", params.cycleType);
34865
34875
  }
34866
- const amountAbs = params.amount.abs();
34867
- if (params.from === Protocols.EXTENDED.name || params.to === Protocols.EXTENDED.name) {
34868
- if (amountAbs.lessThanOrEqualTo(extendedAdapter.minimumExtendedMovementAmount)) {
34869
- logger.warn(
34870
- `Amount ${amountAbs.toNumber()} is below minimum Extended movement amount ${extendedAdapter.minimumExtendedMovementAmount}. Skipping operation.`
34871
- );
34872
- return this.createTransactionResult([], false, params, "NONE", params.cycleType);
34873
- }
34874
- }
34875
- if (params.from === Protocols.VESU.name || params.to === Protocols.VESU.name) {
34876
- if (amountAbs.lessThanOrEqualTo(vesuAdapter.minimumVesuMovementAmount)) {
34877
- logger.warn(
34878
- `Amount ${amountAbs.toNumber()} is below minimum Vesu movement amount ${vesuAdapter.minimumVesuMovementAmount}. Skipping operation.`
34879
- );
34880
- return this.createTransactionResult([], false, params, "NONE", params.cycleType);
34881
- }
34882
- }
34883
34876
  const avnuAdapter = await this.getAvnuAdapter();
34884
34877
  if (!avnuAdapter) {
34885
34878
  logger.error(`avnu adapter not found: ${avnuAdapter}`);
@@ -34916,9 +34909,22 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34916
34909
  );
34917
34910
  logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssets extendedHoldingAmount: ${extendedHoldingAmount.toNumber()}`);
34918
34911
  if (params.amount.abs().greaterThan(extendedHoldingAmount)) {
34919
- const leftAmountAfterWithdrawalAmountInAccount = params.amount.abs().minus(extendedHoldingAmount);
34912
+ const leftAmountAfterWithdrawalAmountInAccount = new Web3Number(Math.ceil(params.amount.abs().minus(extendedHoldingAmount).toNumber()), USDC_TOKEN_DECIMALS);
34920
34913
  logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssets leftAmountAfterWithdrawalAmountInAccount: ${leftAmountAfterWithdrawalAmountInAccount.toNumber()}`);
34921
- const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(collateralPrice.price);
34914
+ let priceOfBTC;
34915
+ const {
34916
+ ask,
34917
+ bid,
34918
+ status
34919
+ } = await extendedAdapter.fetchOrderBookBTCUSDC();
34920
+ const price = ask.plus(bid).dividedBy(2);
34921
+ if (status) {
34922
+ priceOfBTC = price;
34923
+ } else {
34924
+ logger.error(`error fetching order book btc usdc: ${status}`);
34925
+ priceOfBTC = collateralPrice.price;
34926
+ }
34927
+ const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(priceOfBTC);
34922
34928
  const openLongPosition = btcAmount.multipliedBy(3).greaterThan(MINIMUM_EXTENDED_POSITION_SIZE) ? await extendedAdapter.createOrder(
34923
34929
  extendedLeverage.toString(),
34924
34930
  btcAmount.toNumber(),
package/dist/index.d.ts CHANGED
@@ -2287,6 +2287,15 @@ declare class VesuExtendedMultiplierStrategy<S extends VesuExtendedStrategySetti
2287
2287
  * Helper method to create transaction result with metadata
2288
2288
  */
2289
2289
  private createTransactionResult;
2290
+ /**
2291
+ * This method is used to move assets between protocols
2292
+ * @param params - The parameters for the move assets operation
2293
+ * @param extendedAdapter - The extended adapter
2294
+ * @param vesuAdapter - The vesu adapter
2295
+ * @returns The transaction result
2296
+ * If Extended amount is greater than amount of withdrawal from extended, then we need to open a long position
2297
+ * so that the amount of withdrawal from extended is fullfilled
2298
+ */
2290
2299
  moveAssets(params: {
2291
2300
  amount: Web3Number;
2292
2301
  from: string;
package/dist/index.js CHANGED
@@ -30991,6 +30991,8 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
30991
30991
  return null;
30992
30992
  }
30993
30993
  const dataObject = finalQuote.data[0];
30994
+ const wbtcAmountOut = parseInt(dataObject.buyAmount.toString(), 16);
30995
+ logger.info(`${_AvnuAdapter.name}::getQuotesAvnu finalAmountOfWbtcOut : ${wbtcAmountOut} ${dataObject.buyAmount} ${dataObject.sellAmount.toString()} ${dataObject.sellAmount.toString()}`);
30994
30996
  return dataObject;
30995
30997
  } catch (err) {
30996
30998
  logger.error(`No quotes available for this swap: ${err}`);
@@ -34672,7 +34674,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34672
34674
  };
34673
34675
  }
34674
34676
  }
34675
- const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).multipliedBy(1 - LIMIT_BALANCE);
34677
+ const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForTrade ?? 0).multipliedBy(1 - LIMIT_BALANCE);
34676
34678
  const amountToInvestNumber = amountToInvest.toNumber();
34677
34679
  if (!Number.isFinite(amountToInvestNumber)) {
34678
34680
  logger.error(
@@ -34808,17 +34810,17 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34808
34810
  return [];
34809
34811
  }
34810
34812
  const usdcAmountInWallet = (await this.getUnusedBalance()).amount;
34811
- const usdcAmountOnExtendedAvailableForWithdrawal = parseFloat(
34812
- extendedHoldings.availableForWithdrawal
34813
+ const usdcAmountOnExtendedAvailableForTrade = parseFloat(
34814
+ extendedHoldings.availableForTrade
34813
34815
  );
34814
- logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculating movements - Extended current: ${usdcAmountOnExtendedAvailableForWithdrawal}, Wallet: ${usdcAmountInWallet.toNumber()}, Target Extended: ${extendedAmount.toNumber()}, Target Vesu: ${vesuAmount.toNumber()}`);
34816
+ logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculating movements - Extended current: ${usdcAmountOnExtendedAvailableForTrade}, Wallet: ${usdcAmountInWallet.toNumber()}, Target Extended: ${extendedAmount.toNumber()}, Target Vesu: ${vesuAmount.toNumber()}`);
34815
34817
  let totalExtendedWithdrawal = new Web3Number(0, USDC_TOKEN_DECIMALS);
34816
34818
  let totalExtendedDeposit = new Web3Number(0, USDC_TOKEN_DECIMALS);
34817
34819
  if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
34818
34820
  totalExtendedWithdrawal = totalExtendedWithdrawal.plus(extendedAmount.abs());
34819
34821
  }
34820
34822
  const extendedTargetAmount = extendedAmount.abs();
34821
- let projectedExtendedBalance = usdcAmountOnExtendedAvailableForWithdrawal;
34823
+ let projectedExtendedBalance = usdcAmountOnExtendedAvailableForTrade;
34822
34824
  if (extendedAmount.isNegative()) {
34823
34825
  projectedExtendedBalance = projectedExtendedBalance - extendedAmount.abs().toNumber();
34824
34826
  }
@@ -34834,7 +34836,6 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34834
34836
  let vesuAmountDifference = vesuTargetAmount.minus(projectedWalletBalance);
34835
34837
  const vesuAmountDifferenceAbs = vesuAmountDifference.abs();
34836
34838
  logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculated movements - Extended withdrawal: ${totalExtendedWithdrawal.toNumber()}, Extended deposit: ${totalExtendedDeposit.toNumber()}, Extended diff: ${extendedAmountDifference.toNumber()}, Projected wallet: ${projectedWalletBalance.toNumber()}, Vesu diff: ${vesuAmountDifference.toNumber()}`);
34837
- let calls = [];
34838
34839
  let transactionResults = [];
34839
34840
  if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
34840
34841
  try {
@@ -35012,6 +35013,15 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
35012
35013
  }
35013
35014
  return { calls: [], status: false, transactionMetadata: { protocolFrom: "", protocolTo: "", transactionType: "DEPOSIT", usdAmount: "0", status: "FAILED", cycleType } };
35014
35015
  }
35016
+ /**
35017
+ * This method is used to move assets between protocols
35018
+ * @param params - The parameters for the move assets operation
35019
+ * @param extendedAdapter - The extended adapter
35020
+ * @param vesuAdapter - The vesu adapter
35021
+ * @returns The transaction result
35022
+ * If Extended amount is greater than amount of withdrawal from extended, then we need to open a long position
35023
+ * so that the amount of withdrawal from extended is fullfilled
35024
+ */
35015
35025
  async moveAssets(params, extendedAdapter, vesuAdapter) {
35016
35026
  try {
35017
35027
  if (params.amount.lessThanOrEqualTo(0)) {
@@ -35020,23 +35030,6 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
35020
35030
  );
35021
35031
  return this.createTransactionResult([], false, params, "NONE", params.cycleType);
35022
35032
  }
35023
- const amountAbs = params.amount.abs();
35024
- if (params.from === Protocols.EXTENDED.name || params.to === Protocols.EXTENDED.name) {
35025
- if (amountAbs.lessThanOrEqualTo(extendedAdapter.minimumExtendedMovementAmount)) {
35026
- logger.warn(
35027
- `Amount ${amountAbs.toNumber()} is below minimum Extended movement amount ${extendedAdapter.minimumExtendedMovementAmount}. Skipping operation.`
35028
- );
35029
- return this.createTransactionResult([], false, params, "NONE", params.cycleType);
35030
- }
35031
- }
35032
- if (params.from === Protocols.VESU.name || params.to === Protocols.VESU.name) {
35033
- if (amountAbs.lessThanOrEqualTo(vesuAdapter.minimumVesuMovementAmount)) {
35034
- logger.warn(
35035
- `Amount ${amountAbs.toNumber()} is below minimum Vesu movement amount ${vesuAdapter.minimumVesuMovementAmount}. Skipping operation.`
35036
- );
35037
- return this.createTransactionResult([], false, params, "NONE", params.cycleType);
35038
- }
35039
- }
35040
35033
  const avnuAdapter = await this.getAvnuAdapter();
35041
35034
  if (!avnuAdapter) {
35042
35035
  logger.error(`avnu adapter not found: ${avnuAdapter}`);
@@ -35073,9 +35066,22 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
35073
35066
  );
35074
35067
  logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssets extendedHoldingAmount: ${extendedHoldingAmount.toNumber()}`);
35075
35068
  if (params.amount.abs().greaterThan(extendedHoldingAmount)) {
35076
- const leftAmountAfterWithdrawalAmountInAccount = params.amount.abs().minus(extendedHoldingAmount);
35069
+ const leftAmountAfterWithdrawalAmountInAccount = new Web3Number(Math.ceil(params.amount.abs().minus(extendedHoldingAmount).toNumber()), USDC_TOKEN_DECIMALS);
35077
35070
  logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssets leftAmountAfterWithdrawalAmountInAccount: ${leftAmountAfterWithdrawalAmountInAccount.toNumber()}`);
35078
- const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(collateralPrice.price);
35071
+ let priceOfBTC;
35072
+ const {
35073
+ ask,
35074
+ bid,
35075
+ status
35076
+ } = await extendedAdapter.fetchOrderBookBTCUSDC();
35077
+ const price = ask.plus(bid).dividedBy(2);
35078
+ if (status) {
35079
+ priceOfBTC = price;
35080
+ } else {
35081
+ logger.error(`error fetching order book btc usdc: ${status}`);
35082
+ priceOfBTC = collateralPrice.price;
35083
+ }
35084
+ const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(priceOfBTC);
35079
35085
  const openLongPosition = btcAmount.multipliedBy(3).greaterThan(MINIMUM_EXTENDED_POSITION_SIZE) ? await extendedAdapter.createOrder(
35080
35086
  extendedLeverage.toString(),
35081
35087
  btcAmount.toNumber(),
package/dist/index.mjs CHANGED
@@ -30845,6 +30845,8 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
30845
30845
  return null;
30846
30846
  }
30847
30847
  const dataObject = finalQuote.data[0];
30848
+ const wbtcAmountOut = parseInt(dataObject.buyAmount.toString(), 16);
30849
+ logger.info(`${_AvnuAdapter.name}::getQuotesAvnu finalAmountOfWbtcOut : ${wbtcAmountOut} ${dataObject.buyAmount} ${dataObject.sellAmount.toString()} ${dataObject.sellAmount.toString()}`);
30848
30850
  return dataObject;
30849
30851
  } catch (err) {
30850
30852
  logger.error(`No quotes available for this swap: ${err}`);
@@ -34526,7 +34528,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34526
34528
  };
34527
34529
  }
34528
34530
  }
34529
- const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).multipliedBy(1 - LIMIT_BALANCE);
34531
+ const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForTrade ?? 0).multipliedBy(1 - LIMIT_BALANCE);
34530
34532
  const amountToInvestNumber = amountToInvest.toNumber();
34531
34533
  if (!Number.isFinite(amountToInvestNumber)) {
34532
34534
  logger.error(
@@ -34662,17 +34664,17 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34662
34664
  return [];
34663
34665
  }
34664
34666
  const usdcAmountInWallet = (await this.getUnusedBalance()).amount;
34665
- const usdcAmountOnExtendedAvailableForWithdrawal = parseFloat(
34666
- extendedHoldings.availableForWithdrawal
34667
+ const usdcAmountOnExtendedAvailableForTrade = parseFloat(
34668
+ extendedHoldings.availableForTrade
34667
34669
  );
34668
- logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculating movements - Extended current: ${usdcAmountOnExtendedAvailableForWithdrawal}, Wallet: ${usdcAmountInWallet.toNumber()}, Target Extended: ${extendedAmount.toNumber()}, Target Vesu: ${vesuAmount.toNumber()}`);
34670
+ logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculating movements - Extended current: ${usdcAmountOnExtendedAvailableForTrade}, Wallet: ${usdcAmountInWallet.toNumber()}, Target Extended: ${extendedAmount.toNumber()}, Target Vesu: ${vesuAmount.toNumber()}`);
34669
34671
  let totalExtendedWithdrawal = new Web3Number(0, USDC_TOKEN_DECIMALS);
34670
34672
  let totalExtendedDeposit = new Web3Number(0, USDC_TOKEN_DECIMALS);
34671
34673
  if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
34672
34674
  totalExtendedWithdrawal = totalExtendedWithdrawal.plus(extendedAmount.abs());
34673
34675
  }
34674
34676
  const extendedTargetAmount = extendedAmount.abs();
34675
- let projectedExtendedBalance = usdcAmountOnExtendedAvailableForWithdrawal;
34677
+ let projectedExtendedBalance = usdcAmountOnExtendedAvailableForTrade;
34676
34678
  if (extendedAmount.isNegative()) {
34677
34679
  projectedExtendedBalance = projectedExtendedBalance - extendedAmount.abs().toNumber();
34678
34680
  }
@@ -34688,7 +34690,6 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34688
34690
  let vesuAmountDifference = vesuTargetAmount.minus(projectedWalletBalance);
34689
34691
  const vesuAmountDifferenceAbs = vesuAmountDifference.abs();
34690
34692
  logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculated movements - Extended withdrawal: ${totalExtendedWithdrawal.toNumber()}, Extended deposit: ${totalExtendedDeposit.toNumber()}, Extended diff: ${extendedAmountDifference.toNumber()}, Projected wallet: ${projectedWalletBalance.toNumber()}, Vesu diff: ${vesuAmountDifference.toNumber()}`);
34691
- let calls = [];
34692
34693
  let transactionResults = [];
34693
34694
  if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
34694
34695
  try {
@@ -34866,6 +34867,15 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34866
34867
  }
34867
34868
  return { calls: [], status: false, transactionMetadata: { protocolFrom: "", protocolTo: "", transactionType: "DEPOSIT", usdAmount: "0", status: "FAILED", cycleType } };
34868
34869
  }
34870
+ /**
34871
+ * This method is used to move assets between protocols
34872
+ * @param params - The parameters for the move assets operation
34873
+ * @param extendedAdapter - The extended adapter
34874
+ * @param vesuAdapter - The vesu adapter
34875
+ * @returns The transaction result
34876
+ * If Extended amount is greater than amount of withdrawal from extended, then we need to open a long position
34877
+ * so that the amount of withdrawal from extended is fullfilled
34878
+ */
34869
34879
  async moveAssets(params, extendedAdapter, vesuAdapter) {
34870
34880
  try {
34871
34881
  if (params.amount.lessThanOrEqualTo(0)) {
@@ -34874,23 +34884,6 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34874
34884
  );
34875
34885
  return this.createTransactionResult([], false, params, "NONE", params.cycleType);
34876
34886
  }
34877
- const amountAbs = params.amount.abs();
34878
- if (params.from === Protocols.EXTENDED.name || params.to === Protocols.EXTENDED.name) {
34879
- if (amountAbs.lessThanOrEqualTo(extendedAdapter.minimumExtendedMovementAmount)) {
34880
- logger.warn(
34881
- `Amount ${amountAbs.toNumber()} is below minimum Extended movement amount ${extendedAdapter.minimumExtendedMovementAmount}. Skipping operation.`
34882
- );
34883
- return this.createTransactionResult([], false, params, "NONE", params.cycleType);
34884
- }
34885
- }
34886
- if (params.from === Protocols.VESU.name || params.to === Protocols.VESU.name) {
34887
- if (amountAbs.lessThanOrEqualTo(vesuAdapter.minimumVesuMovementAmount)) {
34888
- logger.warn(
34889
- `Amount ${amountAbs.toNumber()} is below minimum Vesu movement amount ${vesuAdapter.minimumVesuMovementAmount}. Skipping operation.`
34890
- );
34891
- return this.createTransactionResult([], false, params, "NONE", params.cycleType);
34892
- }
34893
- }
34894
34887
  const avnuAdapter = await this.getAvnuAdapter();
34895
34888
  if (!avnuAdapter) {
34896
34889
  logger.error(`avnu adapter not found: ${avnuAdapter}`);
@@ -34927,9 +34920,22 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34927
34920
  );
34928
34921
  logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssets extendedHoldingAmount: ${extendedHoldingAmount.toNumber()}`);
34929
34922
  if (params.amount.abs().greaterThan(extendedHoldingAmount)) {
34930
- const leftAmountAfterWithdrawalAmountInAccount = params.amount.abs().minus(extendedHoldingAmount);
34923
+ const leftAmountAfterWithdrawalAmountInAccount = new Web3Number(Math.ceil(params.amount.abs().minus(extendedHoldingAmount).toNumber()), USDC_TOKEN_DECIMALS);
34931
34924
  logger.info(`${_VesuExtendedMultiplierStrategy.name}::moveAssets leftAmountAfterWithdrawalAmountInAccount: ${leftAmountAfterWithdrawalAmountInAccount.toNumber()}`);
34932
- const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(collateralPrice.price);
34925
+ let priceOfBTC;
34926
+ const {
34927
+ ask,
34928
+ bid,
34929
+ status
34930
+ } = await extendedAdapter.fetchOrderBookBTCUSDC();
34931
+ const price = ask.plus(bid).dividedBy(2);
34932
+ if (status) {
34933
+ priceOfBTC = price;
34934
+ } else {
34935
+ logger.error(`error fetching order book btc usdc: ${status}`);
34936
+ priceOfBTC = collateralPrice.price;
34937
+ }
34938
+ const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(priceOfBTC);
34933
34939
  const openLongPosition = btcAmount.multipliedBy(3).greaterThan(MINIMUM_EXTENDED_POSITION_SIZE) ? await extendedAdapter.createOrder(
34934
34940
  extendedLeverage.toString(),
34935
34941
  btcAmount.toNumber(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strkfarm/sdk",
3
- "version": "2.0.0-dev.20",
3
+ "version": "2.0.0-dev.22",
4
4
  "description": "STRKFarm TS SDK (Meant for our internal use, but feel free to use it)",
5
5
  "typings": "dist/index.d.ts",
6
6
  "types": "dist/index.d.ts",
@@ -387,6 +387,8 @@ export class AvnuAdapter extends BaseAdapter<DepositParams, WithdrawParams> {
387
387
  return null;
388
388
  }
389
389
  const dataObject: Quote = finalQuote.data[0];
390
+ const wbtcAmountOut = parseInt(dataObject.buyAmount.toString(), 16);
391
+ logger.info(`${AvnuAdapter.name}::getQuotesAvnu finalAmountOfWbtcOut : ${wbtcAmountOut} ${dataObject.buyAmount} ${dataObject.sellAmount.toString()} ${dataObject.sellAmount.toString()}`);
390
392
  return dataObject;
391
393
  } catch (err) {
392
394
  logger.error(`No quotes available for this swap: ${err}`);
@@ -335,7 +335,7 @@ export class VesuExtendedMultiplierStrategy<
335
335
  }
336
336
 
337
337
  /** The LIMIT_BALANCE is the bffer amount to keep in the investing Cycle */
338
- const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).multipliedBy(1 - LIMIT_BALANCE);
338
+ const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForTrade ?? 0).multipliedBy(1 - LIMIT_BALANCE);
339
339
 
340
340
 
341
341
  const amountToInvestNumber = amountToInvest.toNumber();
@@ -488,11 +488,14 @@ export class VesuExtendedMultiplierStrategy<
488
488
  return [];
489
489
  }
490
490
  const usdcAmountInWallet = (await this.getUnusedBalance()).amount;
491
- const usdcAmountOnExtendedAvailableForWithdrawal = parseFloat(
492
- extendedHoldings.availableForWithdrawal
491
+ /**
492
+ * Trade is the correct metric, since we can close position for some vesu amount, otherwise underutilisation of funds will be a huge issue
493
+ */
494
+ const usdcAmountOnExtendedAvailableForTrade = parseFloat(
495
+ extendedHoldings.availableForTrade
493
496
  );
494
497
 
495
- logger.info(`${VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculating movements - Extended current: ${usdcAmountOnExtendedAvailableForWithdrawal}, Wallet: ${usdcAmountInWallet.toNumber()}, Target Extended: ${extendedAmount.toNumber()}, Target Vesu: ${vesuAmount.toNumber()}`);
498
+ logger.info(`${VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculating movements - Extended current: ${usdcAmountOnExtendedAvailableForTrade}, Wallet: ${usdcAmountInWallet.toNumber()}, Target Extended: ${extendedAmount.toNumber()}, Target Vesu: ${vesuAmount.toNumber()}`);
496
499
 
497
500
  let totalExtendedWithdrawal = new Web3Number(0, USDC_TOKEN_DECIMALS);
498
501
  let totalExtendedDeposit = new Web3Number(0, USDC_TOKEN_DECIMALS);
@@ -505,7 +508,7 @@ export class VesuExtendedMultiplierStrategy<
505
508
  // If extendedAmount was negative, we've already accounted for that withdrawal
506
509
  // So we calculate based on what Extended will be after that withdrawal
507
510
  const extendedTargetAmount = extendedAmount.abs(); // Use absolute value as target
508
- let projectedExtendedBalance = usdcAmountOnExtendedAvailableForWithdrawal;
511
+ let projectedExtendedBalance = usdcAmountOnExtendedAvailableForTrade;
509
512
 
510
513
  if (extendedAmount.isNegative()) {
511
514
  projectedExtendedBalance = projectedExtendedBalance - extendedAmount.abs().toNumber();
@@ -530,7 +533,6 @@ export class VesuExtendedMultiplierStrategy<
530
533
  const vesuAmountDifferenceAbs = vesuAmountDifference.abs();
531
534
 
532
535
  logger.info(`${VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculated movements - Extended withdrawal: ${totalExtendedWithdrawal.toNumber()}, Extended deposit: ${totalExtendedDeposit.toNumber()}, Extended diff: ${extendedAmountDifference.toNumber()}, Projected wallet: ${projectedWalletBalance.toNumber()}, Vesu diff: ${vesuAmountDifference.toNumber()}`);
533
- let calls: Call[] = [];
534
536
  let transactionResults: TransactionResult[] = [];
535
537
 
536
538
  // Handle negative extendedAmount (initial withdrawal needed)
@@ -690,7 +692,6 @@ export class VesuExtendedMultiplierStrategy<
690
692
  }
691
693
  }
692
694
  }
693
-
694
695
  return transactionResults;
695
696
  } catch (err) {
696
697
  logger.error(`Failed moving assets to vesu: ${err}`);
@@ -725,6 +726,15 @@ export class VesuExtendedMultiplierStrategy<
725
726
  return { calls: [], status: false, transactionMetadata: { protocolFrom: '', protocolTo: '', transactionType: 'DEPOSIT', usdAmount: '0', status: 'FAILED', cycleType: cycleType } };
726
727
  }
727
728
 
729
+ /**
730
+ * This method is used to move assets between protocols
731
+ * @param params - The parameters for the move assets operation
732
+ * @param extendedAdapter - The extended adapter
733
+ * @param vesuAdapter - The vesu adapter
734
+ * @returns The transaction result
735
+ * If Extended amount is greater than amount of withdrawal from extended, then we need to open a long position
736
+ * so that the amount of withdrawal from extended is fullfilled
737
+ */
728
738
  async moveAssets(
729
739
  params: {
730
740
  amount: Web3Number;
@@ -745,23 +755,23 @@ export class VesuExtendedMultiplierStrategy<
745
755
  }
746
756
 
747
757
  // Check minimum movement amounts before starting operations
748
- const amountAbs = params.amount.abs();
749
- if (params.from === Protocols.EXTENDED.name || params.to === Protocols.EXTENDED.name) {
750
- if (amountAbs.lessThanOrEqualTo(extendedAdapter.minimumExtendedMovementAmount)) {
751
- logger.warn(
752
- `Amount ${amountAbs.toNumber()} is below minimum Extended movement amount ${extendedAdapter.minimumExtendedMovementAmount}. Skipping operation.`
753
- );
754
- return this.createTransactionResult([], false, params, "NONE", params.cycleType);
755
- }
756
- }
757
- if (params.from === Protocols.VESU.name || params.to === Protocols.VESU.name) {
758
- if (amountAbs.lessThanOrEqualTo(vesuAdapter.minimumVesuMovementAmount)) {
759
- logger.warn(
760
- `Amount ${amountAbs.toNumber()} is below minimum Vesu movement amount ${vesuAdapter.minimumVesuMovementAmount}. Skipping operation.`
761
- );
762
- return this.createTransactionResult([], false, params, "NONE", params.cycleType);
763
- }
764
- }
758
+ // const amountAbs = params.amount.abs();
759
+ // if (params.from === Protocols.EXTENDED.name || params.to === Protocols.EXTENDED.name) {
760
+ // if (amountAbs.lessThanOrEqualTo(extendedAdapter.minimumExtendedMovementAmount)) {
761
+ // logger.warn(
762
+ // `Amount ${amountAbs.toNumber()} is below minimum Extended movement amount ${extendedAdapter.minimumExtendedMovementAmount}. Skipping operation.`
763
+ // );
764
+ // return this.createTransactionResult([], false, params, "NONE", params.cycleType);
765
+ // }
766
+ // }
767
+ // if (params.from === Protocols.VESU.name || params.to === Protocols.VESU.name) {
768
+ // if (amountAbs.lessThanOrEqualTo(vesuAdapter.minimumVesuMovementAmount)) {
769
+ // logger.warn(
770
+ // `Amount ${amountAbs.toNumber()} is below minimum Vesu movement amount ${vesuAdapter.minimumVesuMovementAmount}. Skipping operation.`
771
+ // );
772
+ // return this.createTransactionResult([], false, params, "NONE", params.cycleType);
773
+ // }
774
+ // }
765
775
 
766
776
  const avnuAdapter = await this.getAvnuAdapter();
767
777
  if (!avnuAdapter) {
@@ -787,7 +797,8 @@ export class VesuExtendedMultiplierStrategy<
787
797
  );
788
798
  calls.push(call);
789
799
  return this.createTransactionResult(calls, true, params, "DEPOSIT", params.cycleType);
790
- } else if (params.to === Protocols.VAULT.name && params.from === Protocols.EXTENDED.name) {
800
+ }
801
+ else if (params.to === Protocols.VAULT.name && params.from === Protocols.EXTENDED.name) {
791
802
  const extendedLeverage = calculateExtendedLevergae();
792
803
  const extendedHoldings = await extendedAdapter.getExtendedDepositAmount();
793
804
  if (!extendedHoldings) {
@@ -800,9 +811,26 @@ export class VesuExtendedMultiplierStrategy<
800
811
  );
801
812
  logger.info(`${VesuExtendedMultiplierStrategy.name}::moveAssets extendedHoldingAmount: ${extendedHoldingAmount.toNumber()}`);
802
813
  if (params.amount.abs().greaterThan(extendedHoldingAmount)) {
803
- const leftAmountAfterWithdrawalAmountInAccount = params.amount.abs().minus(extendedHoldingAmount);
814
+ const leftAmountAfterWithdrawalAmountInAccount = new Web3Number(Math.ceil(params.amount.abs().minus(extendedHoldingAmount).toNumber()), USDC_TOKEN_DECIMALS);
804
815
  logger.info(`${VesuExtendedMultiplierStrategy.name}::moveAssets leftAmountAfterWithdrawalAmountInAccount: ${leftAmountAfterWithdrawalAmountInAccount.toNumber()}`);
805
- const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(collateralPrice.price);
816
+ let priceOfBTC;
817
+ const {
818
+ ask,
819
+ bid,
820
+ status
821
+ } = await extendedAdapter.fetchOrderBookBTCUSDC();
822
+ const price = ask.plus(bid).dividedBy(2);
823
+ if (status) {
824
+ priceOfBTC = price;
825
+ } else {
826
+ logger.error(`error fetching order book btc usdc: ${status}`);
827
+ priceOfBTC = collateralPrice.price;
828
+ }
829
+ const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(priceOfBTC);
830
+ /**
831
+ * If amount for withdrawal is greater than the amount in extended available for withdrawal,
832
+ * then we need to open a long position depending on the difference between the two
833
+ */
806
834
  const openLongPosition = btcAmount.multipliedBy(3).greaterThan(MINIMUM_EXTENDED_POSITION_SIZE) ? await extendedAdapter.createOrder(
807
835
  extendedLeverage.toString(),
808
836
  btcAmount.toNumber(),
@@ -856,6 +884,7 @@ export class VesuExtendedMultiplierStrategy<
856
884
  return this.createTransactionResult([], false, params, "NONE", params.cycleType);
857
885
  }
858
886
  } else if (params.to === Protocols.VAULT.name && params.from === Protocols.VESU.name) {
887
+
859
888
  const isPriceDifferenceBetweenAvnuAndExtended = await this.checkPriceDifferenceBetweenAvnuAndExtended(extendedAdapter, vesuAdapter, avnuAdapter, PositionTypeAvnuExtended.CLOSE);
860
889
  if (!isPriceDifferenceBetweenAvnuAndExtended) {
861
890
  logger.warn(`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`);
@@ -882,7 +911,10 @@ export class VesuExtendedMultiplierStrategy<
882
911
  );
883
912
  calls.push(swapCall);
884
913
  return this.createTransactionResult(calls, true, params, "WITHDRAWAL", params.cycleType);
885
- } else if (params.to === Protocols.EXTENDED.name && params.from === Protocols.VESU.name) {
914
+
915
+ }
916
+ else if (params.to === Protocols.EXTENDED.name && params.from === Protocols.VESU.name) {
917
+
886
918
  const isPriceDifferenceBetweenAvnuAndExtended = await this.checkPriceDifferenceBetweenAvnuAndExtended(extendedAdapter, vesuAdapter, avnuAdapter, PositionTypeAvnuExtended.CLOSE);
887
919
  if (!isPriceDifferenceBetweenAvnuAndExtended) {
888
920
  logger.warn(`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`);
@@ -922,6 +954,7 @@ export class VesuExtendedMultiplierStrategy<
922
954
  }
923
955
  logger.error(`Unsupported assets movement: ${params.from} to ${params.to}`);
924
956
  return this.createTransactionResult([], false, params, "NONE", params.cycleType);
957
+
925
958
  } catch (err) {
926
959
  logger.error(`error moving assets: ${err}`);
927
960
  return this.createTransactionResult([], false, params, "NONE", params.cycleType);