@strkfarm/sdk 2.0.0-dev.1 → 2.0.0-dev.2
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 +303 -83
- package/dist/index.browser.mjs +303 -83
- package/dist/index.d.ts +31 -5
- package/dist/index.js +303 -83
- package/dist/index.mjs +303 -83
- package/package.json +1 -1
- package/src/dataTypes/address.ts +1 -1
- package/src/modules/ekubo-quoter.ts +2 -1
- package/src/strategies/universal-adapters/avnu-adapter.ts +1 -8
- package/src/strategies/universal-adapters/extended-adapter.ts +128 -11
- package/src/strategies/universal-adapters/vesu-multiply-adapter.ts +16 -16
- package/src/strategies/vesu-extended-strategy/services/operationService.ts +8 -2
- package/src/strategies/vesu-extended-strategy/utils/constants.ts +1 -0
- package/src/strategies/vesu-extended-strategy/utils/helper.ts +12 -10
- package/src/strategies/vesu-extended-strategy/vesu-extended-strategy.tsx +199 -57
package/dist/index.js
CHANGED
|
@@ -4546,6 +4546,7 @@ var EkuboQuoter = class _EkuboQuoter {
|
|
|
4546
4546
|
return quote.splits.map((split) => {
|
|
4547
4547
|
const isNegativeAmount = BigInt(split.amount_specified) <= 0n;
|
|
4548
4548
|
const token = isNegativeAmount ? toTokenInfo : fromTokenInfo;
|
|
4549
|
+
console.log("token for withdrawal", token, isNegativeAmount);
|
|
4549
4550
|
return {
|
|
4550
4551
|
route: split.route.map((_route) => ({
|
|
4551
4552
|
pool_key: {
|
|
@@ -28163,6 +28164,7 @@ var vesu_multiple_abi_default = [
|
|
|
28163
28164
|
var AVNU_API = "https://starknet.api.avnu.fi/swap/v2/quotes";
|
|
28164
28165
|
var USDC_TOKEN_DECIMALS = 6;
|
|
28165
28166
|
var USDC_TOKEN_ADDRESS = "0x053C91253BC9682c04929cA02ED00b3E423f6710D2ee7e0D5EBB06F3eCF368A8";
|
|
28167
|
+
var BUFFER_USDC_IN_WITHDRAWAL = 5;
|
|
28166
28168
|
var WBTC_TOKEN_ADDRESS = "0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac";
|
|
28167
28169
|
var WBTC_TOKEN_DECIMALS = 8;
|
|
28168
28170
|
var MAINTENANCE_MARGIN = 0.01;
|
|
@@ -28254,8 +28256,8 @@ var calculateAmountDistributionForWithdrawal = async (amountInUsdc, collateralPr
|
|
|
28254
28256
|
logger.error("error getting extended positions");
|
|
28255
28257
|
return null;
|
|
28256
28258
|
}
|
|
28257
|
-
const
|
|
28258
|
-
|
|
28259
|
+
const extendedExposureUSD = extendedPosition.length > 0 ? new Web3Number(extendedPosition[0].value, USDC_TOKEN_DECIMALS) : new Web3Number(0, USDC_TOKEN_DECIMALS);
|
|
28260
|
+
console.log("THe collateral is", collateralPrice, collateralUnits);
|
|
28259
28261
|
const vesuExposureUSD = collateralUnits.multipliedBy(collateralPrice);
|
|
28260
28262
|
if (vesuExposureUSD.lessThan(0)) {
|
|
28261
28263
|
return {
|
|
@@ -28273,9 +28275,14 @@ var calculateAmountDistributionForWithdrawal = async (amountInUsdc, collateralPr
|
|
|
28273
28275
|
vesu_leverage
|
|
28274
28276
|
};
|
|
28275
28277
|
}
|
|
28278
|
+
console.log("the vesu exposure usd is", vesuExposureUSD.toNumber());
|
|
28279
|
+
console.log("the extended exposure usd is", extendedExposureUSD.toNumber());
|
|
28280
|
+
console.log("the amount in usdc is", amountInUsdc.toNumber());
|
|
28281
|
+
console.log("the extended leverage is", extended_leverage);
|
|
28282
|
+
console.log("the vesu leverage is", vesu_leverage);
|
|
28276
28283
|
const numerator1 = amountInUsdc.multipliedBy(extended_leverage);
|
|
28277
|
-
const numerator2 = vesuExposureUSD
|
|
28278
|
-
const numerator3 = extendedExposureUSD.multipliedBy(
|
|
28284
|
+
const numerator2 = vesuExposureUSD;
|
|
28285
|
+
const numerator3 = extendedExposureUSD.multipliedBy(-1);
|
|
28279
28286
|
const finalNumerator = numerator1.plus(numerator2).plus(numerator3);
|
|
28280
28287
|
const denominator = extended_leverage + vesu_leverage;
|
|
28281
28288
|
const vesuAmountInUSDC = finalNumerator.dividedBy(denominator);
|
|
@@ -28285,6 +28292,7 @@ var calculateAmountDistributionForWithdrawal = async (amountInUsdc, collateralPr
|
|
|
28285
28292
|
"the extended amount in usdc is",
|
|
28286
28293
|
extendedAmountInUSDC.toNumber()
|
|
28287
28294
|
);
|
|
28295
|
+
await new Promise((resolve) => setTimeout(resolve, 1e4));
|
|
28288
28296
|
return {
|
|
28289
28297
|
vesu_amount: vesuAmountInUSDC,
|
|
28290
28298
|
extended_amount: extendedAmountInUSDC,
|
|
@@ -28725,7 +28733,7 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
28725
28733
|
this.config.debt.address.toBigInt(),
|
|
28726
28734
|
this.config.vaultAllocator.toBigInt()
|
|
28727
28735
|
],
|
|
28728
|
-
sanitizer: SIMPLE_SANITIZER_V2,
|
|
28736
|
+
sanitizer: isV2 ? SIMPLE_SANITIZER_V2 : SIMPLE_SANITIZER,
|
|
28729
28737
|
// vmw = vesu multiply withdraw
|
|
28730
28738
|
id: `vmw_${this.config.poolId.shortString()}_${collateral.symbol}_${debt.symbol}`
|
|
28731
28739
|
},
|
|
@@ -28874,7 +28882,7 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
28874
28882
|
},
|
|
28875
28883
|
// Vesu multiply call
|
|
28876
28884
|
{
|
|
28877
|
-
sanitizer: SIMPLE_SANITIZER_V2,
|
|
28885
|
+
sanitizer: isV2 ? SIMPLE_SANITIZER_V2 : SIMPLE_SANITIZER,
|
|
28878
28886
|
call: {
|
|
28879
28887
|
contractAddress: vesuMultiply,
|
|
28880
28888
|
selector: import_starknet21.hash.getSelectorFromName("modify_lever"),
|
|
@@ -28962,19 +28970,13 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
28962
28970
|
leverSwap = ekuboQuoter.getVesuMultiplyQuote(swapQuote, debtToken, collateralToken);
|
|
28963
28971
|
const MAX_SLIPPAGE = 2e-3;
|
|
28964
28972
|
if (debtAmount.greaterThan(0)) {
|
|
28965
|
-
|
|
28966
|
-
leverSwapLimitAmount = await ekuboQuoter.getSwapLimitAmount(debtToken, collateralToken, debtAmount, MAX_SLIPPAGE);
|
|
28967
|
-
const anotherleverSwapLimitAmount = debtAmount.multipliedBy(1 + MAX_SLIPPAGE);
|
|
28968
|
-
console.log("anotherleverSwapLimitAmount", anotherleverSwapLimitAmount, leverSwapLimitAmount);
|
|
28973
|
+
leverSwapLimitAmount = debtAmount.multipliedBy(1 + MAX_SLIPPAGE);
|
|
28969
28974
|
} else if (debtAmount.lessThan(0)) {
|
|
28970
|
-
leverSwapLimitAmount =
|
|
28971
|
-
const anotherleverSwapLimitAmount = debtAmount.abs().multipliedBy(1 - MAX_SLIPPAGE);
|
|
28972
|
-
console.log("anotherleverSwapLimitAmount", anotherleverSwapLimitAmount, leverSwapLimitAmount);
|
|
28975
|
+
leverSwapLimitAmount = debtAmount.abs().multipliedBy(1 - MAX_SLIPPAGE);
|
|
28973
28976
|
} else {
|
|
28974
28977
|
leverSwapLimitAmount = Web3Number.fromWei(0, this.config.debt.decimals);
|
|
28975
28978
|
}
|
|
28976
28979
|
await new Promise((resolve) => setTimeout(resolve, 1e4));
|
|
28977
|
-
console.log("leverSwapLimitAmount", leverSwapLimitAmount);
|
|
28978
28980
|
} else {
|
|
28979
28981
|
throw new Error(`VesuMultiplyAdapter: Price impact too high (${swapQuote.price_impact}), skipping swap`);
|
|
28980
28982
|
}
|
|
@@ -29044,26 +29046,23 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
29044
29046
|
debtPrice.price,
|
|
29045
29047
|
debtToken.decimals
|
|
29046
29048
|
);
|
|
29047
|
-
console.log("debtAmountToRepay", debtAmountToRepay);
|
|
29048
29049
|
if (!debtAmountToRepay) {
|
|
29049
29050
|
throw new Error("error calculating debt amount to repay");
|
|
29050
29051
|
}
|
|
29051
29052
|
const ekuboQuoter = new EkuboQuoter(this.config.networkConfig, this.config.pricer);
|
|
29052
29053
|
const debtInDebtUnits = new Web3Number(debtAmountToRepay, debtToken.decimals).dividedBy(debtPrice.price).multipliedBy(10 ** debtToken.decimals);
|
|
29053
|
-
const debtInCollateralUnits = new Web3Number(debtAmountToRepay, debtToken.decimals).dividedBy(collateralPrice.price).multipliedBy(10 ** collateralToken.decimals);
|
|
29054
29054
|
const swapQuote = await ekuboQuoter.getQuote(
|
|
29055
29055
|
debtToken.address.address,
|
|
29056
29056
|
collateralToken.address.address,
|
|
29057
29057
|
debtInDebtUnits
|
|
29058
29058
|
);
|
|
29059
29059
|
const MAX_SLIPPAGE = 2e-3;
|
|
29060
|
-
if (swapQuote.price_impact <
|
|
29061
|
-
leverSwap = ekuboQuoter.getVesuMultiplyQuote(swapQuote,
|
|
29060
|
+
if (swapQuote.price_impact < 25e-4) {
|
|
29061
|
+
leverSwap = ekuboQuoter.getVesuMultiplyQuote(swapQuote, collateralToken, debtToken);
|
|
29062
29062
|
} else {
|
|
29063
29063
|
logger.error(`VesuMultiplyAdapter: Price impact too high (${swapQuote.price_impact}), skipping swap`);
|
|
29064
29064
|
}
|
|
29065
|
-
|
|
29066
|
-
leverSwapLimitAmount = await ekuboQuoter.getSwapLimitAmount(debtToken, collateralToken, debtInCollateralUnits, MAX_SLIPPAGE);
|
|
29065
|
+
leverSwapLimitAmount = new Web3Number(debtAmountToRepay, debtToken.decimals).abs().multipliedBy(1 + MAX_SLIPPAGE);
|
|
29067
29066
|
const multiplyParams = await this.getLeverParams(false, params, leverSwap, leverSwapLimitAmount);
|
|
29068
29067
|
const call = multiplyContract.populate("modify_lever", {
|
|
29069
29068
|
modify_lever_params: this.formatMultiplyParams(false, multiplyParams)
|
|
@@ -29635,6 +29634,41 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29635
29634
|
}
|
|
29636
29635
|
];
|
|
29637
29636
|
}
|
|
29637
|
+
getSwapFromLegacyLeaf() {
|
|
29638
|
+
const leafConfigs = this._getSwapFromLegacyLeaf();
|
|
29639
|
+
const leaves = leafConfigs.map((config) => {
|
|
29640
|
+
const { target, method, packedArguments, sanitizer, id } = config;
|
|
29641
|
+
const leaf = this.constructSimpleLeafData({
|
|
29642
|
+
id,
|
|
29643
|
+
target,
|
|
29644
|
+
method,
|
|
29645
|
+
packedArguments
|
|
29646
|
+
}, sanitizer);
|
|
29647
|
+
return leaf;
|
|
29648
|
+
});
|
|
29649
|
+
return { leaves, callConstructor: this.getSwapFromLegacyCall.bind(this) };
|
|
29650
|
+
}
|
|
29651
|
+
_getSwapFromLegacyLeaf() {
|
|
29652
|
+
const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
|
|
29653
|
+
return [
|
|
29654
|
+
{
|
|
29655
|
+
target: usdceToken.address,
|
|
29656
|
+
method: "approve",
|
|
29657
|
+
packedArguments: [
|
|
29658
|
+
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
|
|
29659
|
+
],
|
|
29660
|
+
id: `extendedswaplegacyapprove_${usdceToken.symbol}`,
|
|
29661
|
+
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29662
|
+
},
|
|
29663
|
+
{
|
|
29664
|
+
target: AVNU_EXCHANGE_FOR_LEGACY_USDC,
|
|
29665
|
+
method: "swap_to_new",
|
|
29666
|
+
packedArguments: [],
|
|
29667
|
+
id: `extended_swap_to_new_${usdceToken.symbol}`,
|
|
29668
|
+
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29669
|
+
}
|
|
29670
|
+
];
|
|
29671
|
+
}
|
|
29638
29672
|
_getWithdrawLeaf() {
|
|
29639
29673
|
return [];
|
|
29640
29674
|
}
|
|
@@ -29715,6 +29749,70 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29715
29749
|
return [];
|
|
29716
29750
|
}
|
|
29717
29751
|
}
|
|
29752
|
+
getProofsForFromLegacySwap(tree) {
|
|
29753
|
+
let proofGroups = [];
|
|
29754
|
+
const ids = this.getSwapFromLegacyLeaf().leaves.map((l) => l.readableId);
|
|
29755
|
+
for (const [i, v] of tree.entries()) {
|
|
29756
|
+
if (ids.includes(v.readableId)) {
|
|
29757
|
+
proofGroups.push(tree.getProof(i));
|
|
29758
|
+
}
|
|
29759
|
+
}
|
|
29760
|
+
if (proofGroups.length != ids.length) {
|
|
29761
|
+
throw new Error(`Not all proofs found for IDs: ${ids.join(", ")}`);
|
|
29762
|
+
}
|
|
29763
|
+
return {
|
|
29764
|
+
proofs: proofGroups,
|
|
29765
|
+
callConstructor: this.getSwapFromLegacyCall.bind(this)
|
|
29766
|
+
};
|
|
29767
|
+
}
|
|
29768
|
+
async getSwapFromLegacyCall(params) {
|
|
29769
|
+
try {
|
|
29770
|
+
const usdcToken = this.config.supportedPositions[0].asset;
|
|
29771
|
+
const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
|
|
29772
|
+
const amount = import_starknet22.uint256.bnToUint256(params.amount.multipliedBy(10).toWei());
|
|
29773
|
+
const quotes = await this.config.avnuAdapter.getQuotesAvnu(
|
|
29774
|
+
usdceToken.address.toString(),
|
|
29775
|
+
usdcToken.address.toString(),
|
|
29776
|
+
params.amount.toNumber(),
|
|
29777
|
+
this.config.avnuAdapter.config.vaultAllocator.address.toString(),
|
|
29778
|
+
usdcToken.decimals,
|
|
29779
|
+
false
|
|
29780
|
+
);
|
|
29781
|
+
if (!quotes) {
|
|
29782
|
+
logger.error("error getting quotes from avnu");
|
|
29783
|
+
return [];
|
|
29784
|
+
}
|
|
29785
|
+
const getCalldata = await this.config.avnuAdapter.getSwapCallData(quotes);
|
|
29786
|
+
const swapCallData = getCalldata[0];
|
|
29787
|
+
return [
|
|
29788
|
+
{
|
|
29789
|
+
sanitizer: AVNU_LEGACY_SANITIZER,
|
|
29790
|
+
call: {
|
|
29791
|
+
contractAddress: usdceToken.address,
|
|
29792
|
+
selector: import_starknet22.hash.getSelectorFromName("approve"),
|
|
29793
|
+
calldata: [
|
|
29794
|
+
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt(),
|
|
29795
|
+
toBigInt(amount.low.toString()),
|
|
29796
|
+
// amount low
|
|
29797
|
+
toBigInt(amount.high.toString())
|
|
29798
|
+
// amount high
|
|
29799
|
+
]
|
|
29800
|
+
}
|
|
29801
|
+
},
|
|
29802
|
+
{
|
|
29803
|
+
sanitizer: AVNU_LEGACY_SANITIZER,
|
|
29804
|
+
call: {
|
|
29805
|
+
contractAddress: AVNU_EXCHANGE_FOR_LEGACY_USDC,
|
|
29806
|
+
selector: import_starknet22.hash.getSelectorFromName("swap_to_new"),
|
|
29807
|
+
calldata: swapCallData
|
|
29808
|
+
}
|
|
29809
|
+
}
|
|
29810
|
+
];
|
|
29811
|
+
} catch (error) {
|
|
29812
|
+
logger.error(`Error creating Deposit Call: ${error}`);
|
|
29813
|
+
return [];
|
|
29814
|
+
}
|
|
29815
|
+
}
|
|
29718
29816
|
//Swap wbtc to usdc
|
|
29719
29817
|
async getWithdrawCall(params) {
|
|
29720
29818
|
try {
|
|
@@ -29732,10 +29830,10 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29732
29830
|
if (!this.client) {
|
|
29733
29831
|
throw new Error("Client not initialized");
|
|
29734
29832
|
}
|
|
29735
|
-
const withdrawalRequest = this.client.withdrawUSDC(amount.
|
|
29736
|
-
if (
|
|
29737
|
-
|
|
29738
|
-
return
|
|
29833
|
+
const withdrawalRequest = await this.client.withdrawUSDC(amount.toFixed(2));
|
|
29834
|
+
if (withdrawalRequest.status === "OK") {
|
|
29835
|
+
const withdrawalStatus = await this.getDepositOrWithdrawalStatus(withdrawalRequest.data, "WITHDRAWAL" /* WITHDRAWAL */);
|
|
29836
|
+
return withdrawalStatus;
|
|
29739
29837
|
}
|
|
29740
29838
|
return false;
|
|
29741
29839
|
} catch (error) {
|
|
@@ -29916,7 +30014,7 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29916
30014
|
logger.error(`createShortOrder failed on attempt ${attempt}: ${err.message}`);
|
|
29917
30015
|
if (attempt < maxAttempts) {
|
|
29918
30016
|
const backoff = 1200 * attempt;
|
|
29919
|
-
|
|
30017
|
+
logger.info(`Retrying after ${backoff}ms...`);
|
|
29920
30018
|
await new Promise((resolve) => setTimeout(resolve, backoff));
|
|
29921
30019
|
return this.createOrder(
|
|
29922
30020
|
leverage,
|
|
@@ -29947,7 +30045,7 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29947
30045
|
}
|
|
29948
30046
|
return null;
|
|
29949
30047
|
} catch (err) {
|
|
29950
|
-
|
|
30048
|
+
logger.error(`Error opening short extended position, ${err}`);
|
|
29951
30049
|
return null;
|
|
29952
30050
|
}
|
|
29953
30051
|
}
|
|
@@ -29957,17 +30055,16 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29957
30055
|
operationsType: [operationsType],
|
|
29958
30056
|
operationsStatus: ["COMPLETED" /* COMPLETED */]
|
|
29959
30057
|
});
|
|
29960
|
-
console.log("transferHistory", transferHistory);
|
|
29961
30058
|
if (operationsType === "DEPOSIT" /* DEPOSIT */) {
|
|
29962
30059
|
const myTransferStatus = transferHistory.data.find((operation) => operation.transactionHash === orderId);
|
|
29963
30060
|
if (!myTransferStatus) {
|
|
29964
|
-
return
|
|
30061
|
+
return true;
|
|
29965
30062
|
}
|
|
29966
30063
|
return true;
|
|
29967
30064
|
} else {
|
|
29968
|
-
const myTransferStatus = transferHistory.data.find((operation) => operation.id === orderId);
|
|
30065
|
+
const myTransferStatus = transferHistory.data.find((operation) => operation.id.toString() === orderId.toString());
|
|
29969
30066
|
if (!myTransferStatus) {
|
|
29970
|
-
return
|
|
30067
|
+
return true;
|
|
29971
30068
|
}
|
|
29972
30069
|
return true;
|
|
29973
30070
|
}
|
|
@@ -33556,7 +33653,7 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33556
33653
|
packedArguments: [
|
|
33557
33654
|
fromToken.address.toBigInt(),
|
|
33558
33655
|
//wbtc
|
|
33559
|
-
|
|
33656
|
+
toToken.address.toBigInt(),
|
|
33560
33657
|
//usdc
|
|
33561
33658
|
vaultAllocator.toBigInt()
|
|
33562
33659
|
],
|
|
@@ -33570,13 +33667,11 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33570
33667
|
}
|
|
33571
33668
|
async getDepositCall(params) {
|
|
33572
33669
|
try {
|
|
33573
|
-
console.log("params.amount", params.amount);
|
|
33574
33670
|
const fromToken = this.config.supportedPositions[0].asset;
|
|
33575
33671
|
const toToken = this.config.supportedPositions[1].asset;
|
|
33576
33672
|
const vaultAllocator = ContractAddr.from(
|
|
33577
33673
|
this.config.vaultAllocator.address
|
|
33578
33674
|
);
|
|
33579
|
-
console.log("vaultAllocator", vaultAllocator);
|
|
33580
33675
|
const quote = await this.getQuotesAvnu(
|
|
33581
33676
|
fromToken.address.toString(),
|
|
33582
33677
|
toToken.address.toString(),
|
|
@@ -33632,7 +33727,6 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33632
33727
|
const vaultAllocator = ContractAddr.from(
|
|
33633
33728
|
this.config.vaultAllocator.address
|
|
33634
33729
|
);
|
|
33635
|
-
console.log("params.amount", params.amount);
|
|
33636
33730
|
const quote = await this.getQuotesAvnu(
|
|
33637
33731
|
fromToken.address.toString(),
|
|
33638
33732
|
toToken.address.toString(),
|
|
@@ -33651,8 +33745,6 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33651
33745
|
);
|
|
33652
33746
|
const swapCallData = getCalldata[0];
|
|
33653
33747
|
const amount = import_starknet24.uint256.bnToUint256(params.amount.toWei());
|
|
33654
|
-
console.log("amount", amount);
|
|
33655
|
-
console.log("swapCallData", swapCallData);
|
|
33656
33748
|
return [
|
|
33657
33749
|
{
|
|
33658
33750
|
sanitizer: SIMPLE_SANITIZER,
|
|
@@ -33727,14 +33819,12 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33727
33819
|
return dataObject2;
|
|
33728
33820
|
}
|
|
33729
33821
|
const btcPrice = await this.getPriceOfToken(toToken.address.toString());
|
|
33730
|
-
console.log("btcPrice", btcPrice);
|
|
33731
33822
|
if (!btcPrice) {
|
|
33732
33823
|
logger.error(`error getting btc price: ${btcPrice}`);
|
|
33733
33824
|
return null;
|
|
33734
33825
|
}
|
|
33735
33826
|
const estimatedUsdcAmount = Math.floor(amount * btcPrice);
|
|
33736
33827
|
const targetBtcBig = BigInt(returnFormattedAmount(amount, toTokenDecimals));
|
|
33737
|
-
console.log("targetBtcBig", targetBtcBig);
|
|
33738
33828
|
let low = BigInt(
|
|
33739
33829
|
Math.floor(
|
|
33740
33830
|
estimatedUsdcAmount * 10 ** fromToken.decimals * 0.9
|
|
@@ -33837,6 +33927,23 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33837
33927
|
debtPrice
|
|
33838
33928
|
};
|
|
33839
33929
|
}
|
|
33930
|
+
async getUnusedBalanceUSDCE() {
|
|
33931
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
33932
|
+
(token) => token.symbol === "USDCe"
|
|
33933
|
+
);
|
|
33934
|
+
const balance = await new ERC20(this.config).balanceOf(
|
|
33935
|
+
usdceToken.address,
|
|
33936
|
+
WALLET_ADDRESS,
|
|
33937
|
+
usdceToken.decimals
|
|
33938
|
+
);
|
|
33939
|
+
const price = await this.pricer.getPrice(usdceToken.symbol);
|
|
33940
|
+
const usdValue = Number(balance.toFixed(usdceToken.decimals)) * price.price;
|
|
33941
|
+
return {
|
|
33942
|
+
tokenInfo: usdceToken,
|
|
33943
|
+
amount: balance,
|
|
33944
|
+
usdValue
|
|
33945
|
+
};
|
|
33946
|
+
}
|
|
33840
33947
|
async getUnusedBalanceWBTC() {
|
|
33841
33948
|
const collateralToken = this.metadata.additionalInfo.borrowable_assets[0];
|
|
33842
33949
|
const balance = await new ERC20(this.config).balanceOf(
|
|
@@ -33882,22 +33989,30 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33882
33989
|
}
|
|
33883
33990
|
return extendedAdapter.adapter;
|
|
33884
33991
|
}
|
|
33885
|
-
async moveAssetsToVaultAllocator(amount) {
|
|
33992
|
+
async moveAssetsToVaultAllocator(amount, extendedAdapter) {
|
|
33886
33993
|
try {
|
|
33887
|
-
const
|
|
33888
|
-
(token) => token.symbol === "
|
|
33994
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
33995
|
+
(token) => token.symbol === "USDCe"
|
|
33889
33996
|
);
|
|
33890
33997
|
const approveCall = new ERC20(this.config).approve(
|
|
33891
|
-
|
|
33998
|
+
usdceToken.address,
|
|
33892
33999
|
this.metadata.additionalInfo.vaultAllocator,
|
|
33893
34000
|
amount
|
|
33894
34001
|
);
|
|
33895
34002
|
const transferCall = new ERC20(this.config).transfer(
|
|
33896
|
-
|
|
34003
|
+
usdceToken.address,
|
|
33897
34004
|
this.metadata.additionalInfo.vaultAllocator,
|
|
33898
34005
|
amount
|
|
33899
34006
|
);
|
|
33900
|
-
|
|
34007
|
+
const proofsInfo = extendedAdapter.getProofsForFromLegacySwap(
|
|
34008
|
+
this.getMerkleTree()
|
|
34009
|
+
);
|
|
34010
|
+
const proofGroups = proofsInfo.proofs;
|
|
34011
|
+
const call = this.getManageCall(
|
|
34012
|
+
proofGroups,
|
|
34013
|
+
await proofsInfo.callConstructor({ amount })
|
|
34014
|
+
);
|
|
34015
|
+
return [approveCall, transferCall, call];
|
|
33901
34016
|
} catch (err) {
|
|
33902
34017
|
logger.error(`error moving assets to vault allocator: ${err}`);
|
|
33903
34018
|
return [];
|
|
@@ -34009,11 +34124,9 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34009
34124
|
);
|
|
34010
34125
|
return calls;
|
|
34011
34126
|
}
|
|
34012
|
-
console.log("extendedAmount", extendedAmount);
|
|
34013
|
-
console.log("vesuAmount", vesuAmount);
|
|
34014
34127
|
if (extendedAmount.lessThan(0)) {
|
|
34015
34128
|
try {
|
|
34016
|
-
const extendedCalls = await this.moveAssets(
|
|
34129
|
+
const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
|
|
34017
34130
|
{
|
|
34018
34131
|
to: Protocols.VAULT.name,
|
|
34019
34132
|
from: Protocols.EXTENDED.name,
|
|
@@ -34022,14 +34135,18 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34022
34135
|
extendedAdapter,
|
|
34023
34136
|
vesuAdapter
|
|
34024
34137
|
);
|
|
34025
|
-
|
|
34138
|
+
if (extendedStatus) {
|
|
34139
|
+
calls.push(...extendedCalls);
|
|
34140
|
+
} else {
|
|
34141
|
+
return [];
|
|
34142
|
+
}
|
|
34026
34143
|
} catch (err) {
|
|
34027
34144
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
34028
34145
|
}
|
|
34029
34146
|
}
|
|
34030
34147
|
if (vesuAmount.lessThan(0)) {
|
|
34031
34148
|
try {
|
|
34032
|
-
const vesuCalls = await this.moveAssets(
|
|
34149
|
+
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
34033
34150
|
{
|
|
34034
34151
|
to: Protocols.EXTENDED.name,
|
|
34035
34152
|
from: Protocols.VESU.name,
|
|
@@ -34039,6 +34156,9 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34039
34156
|
vesuAdapter
|
|
34040
34157
|
);
|
|
34041
34158
|
calls.push(...vesuCalls);
|
|
34159
|
+
if (!vesuStatus) {
|
|
34160
|
+
return [];
|
|
34161
|
+
}
|
|
34042
34162
|
} catch (err) {
|
|
34043
34163
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
34044
34164
|
}
|
|
@@ -34054,7 +34174,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34054
34174
|
);
|
|
34055
34175
|
if (extendedAmount.minus(usdcAmountOnExtended).greaterThan(0)) {
|
|
34056
34176
|
try {
|
|
34057
|
-
const extendedCalls = await this.moveAssets(
|
|
34177
|
+
const { calls: extendedCalls } = await this.moveAssets(
|
|
34058
34178
|
{
|
|
34059
34179
|
to: Protocols.EXTENDED.name,
|
|
34060
34180
|
from: Protocols.VAULT.name,
|
|
@@ -34070,15 +34190,18 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34070
34190
|
}
|
|
34071
34191
|
if (vesuAmount.minus(usdcAmountInWallet).greaterThan(0)) {
|
|
34072
34192
|
try {
|
|
34073
|
-
const vesuCalls = await this.moveAssets(
|
|
34193
|
+
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
34074
34194
|
{
|
|
34075
|
-
to: Protocols.
|
|
34195
|
+
to: Protocols.VAULT.name,
|
|
34076
34196
|
from: Protocols.EXTENDED.name,
|
|
34077
34197
|
amount: vesuAmount.minus(usdcAmountInWallet)
|
|
34078
34198
|
},
|
|
34079
34199
|
extendedAdapter,
|
|
34080
34200
|
vesuAdapter
|
|
34081
34201
|
);
|
|
34202
|
+
if (!vesuStatus) {
|
|
34203
|
+
return [];
|
|
34204
|
+
}
|
|
34082
34205
|
calls.push(...vesuCalls);
|
|
34083
34206
|
} catch (err) {
|
|
34084
34207
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
@@ -34095,9 +34218,12 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34095
34218
|
const avnuAdapter = await this.getAvnuAdapter();
|
|
34096
34219
|
if (!avnuAdapter) {
|
|
34097
34220
|
logger.error(`avnu adapter not found: ${avnuAdapter}`);
|
|
34098
|
-
return
|
|
34221
|
+
return {
|
|
34222
|
+
calls: [],
|
|
34223
|
+
status: false
|
|
34224
|
+
};
|
|
34099
34225
|
}
|
|
34100
|
-
logger.info(
|
|
34226
|
+
logger.info(`moveAssets params, ${JSON.stringify(params)}`);
|
|
34101
34227
|
const collateralToken = vesuAdapter.config.supportedPositions[0].asset;
|
|
34102
34228
|
const {
|
|
34103
34229
|
collateralPrice
|
|
@@ -34114,18 +34240,58 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34114
34240
|
await proofsInfo.callConstructor({ amount: params.amount })
|
|
34115
34241
|
);
|
|
34116
34242
|
calls.push(call);
|
|
34117
|
-
return
|
|
34243
|
+
return {
|
|
34244
|
+
calls: [call],
|
|
34245
|
+
status: true
|
|
34246
|
+
};
|
|
34118
34247
|
} else if (params.to === Protocols.VAULT.name && params.from === Protocols.EXTENDED.name) {
|
|
34248
|
+
const extendedLeverage = calculateExtendedLevergae();
|
|
34249
|
+
const extendedHoldings = await extendedAdapter.getExtendedDepositAmount();
|
|
34250
|
+
if (!extendedHoldings) {
|
|
34251
|
+
logger.error(`error getting extended holdings: ${extendedHoldings}`);
|
|
34252
|
+
return {
|
|
34253
|
+
calls: [],
|
|
34254
|
+
status: false
|
|
34255
|
+
};
|
|
34256
|
+
}
|
|
34257
|
+
const extendedHoldingAmount = new Web3Number(
|
|
34258
|
+
extendedHoldings.availableForWithdrawal,
|
|
34259
|
+
USDC_TOKEN_DECIMALS
|
|
34260
|
+
);
|
|
34261
|
+
const leftAmountAfterWithdrawalAmountInAccount = params.amount.minus(extendedHoldingAmount);
|
|
34262
|
+
const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(collateralPrice.price);
|
|
34263
|
+
const openLongPosition = await extendedAdapter.createOrder(
|
|
34264
|
+
extendedLeverage.toString(),
|
|
34265
|
+
btcAmount.toNumber(),
|
|
34266
|
+
"BUY" /* BUY */
|
|
34267
|
+
);
|
|
34268
|
+
if (!openLongPosition) {
|
|
34269
|
+
logger.error(`error opening long position: ${openLongPosition}`);
|
|
34270
|
+
return {
|
|
34271
|
+
calls: [],
|
|
34272
|
+
status: false
|
|
34273
|
+
};
|
|
34274
|
+
}
|
|
34275
|
+
await new Promise((resolve) => setTimeout(resolve, 5e3));
|
|
34119
34276
|
const withdrawalFromExtended = await extendedAdapter.withdrawFromExtended(params.amount);
|
|
34120
34277
|
if (withdrawalFromExtended) {
|
|
34121
|
-
const
|
|
34278
|
+
const extendedHoldings2 = await extendedAdapter.getExtendedDepositAmount();
|
|
34279
|
+
logger.info(`extendedHoldings after withdrawal ${extendedHoldings2}`);
|
|
34280
|
+
await new Promise((resolve) => setTimeout(resolve, 1e4));
|
|
34281
|
+
const calls = await this.moveAssetsToVaultAllocator(params.amount, extendedAdapter);
|
|
34122
34282
|
if (calls.length > 0) {
|
|
34123
|
-
return
|
|
34283
|
+
return {
|
|
34284
|
+
calls,
|
|
34285
|
+
status: true
|
|
34286
|
+
};
|
|
34124
34287
|
}
|
|
34125
34288
|
} else {
|
|
34126
34289
|
logger.error("withdrawal from extended failed");
|
|
34290
|
+
return {
|
|
34291
|
+
calls: [],
|
|
34292
|
+
status: false
|
|
34293
|
+
};
|
|
34127
34294
|
}
|
|
34128
|
-
return [];
|
|
34129
34295
|
} else if (params.to === Protocols.VAULT.name && params.from === Protocols.VESU.name) {
|
|
34130
34296
|
const vesuAmountInBTC = new Web3Number(
|
|
34131
34297
|
params.amount.dividedBy(collateralPrice.price).toNumber(),
|
|
@@ -34146,7 +34312,10 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34146
34312
|
await swapProofsInfo.callConstructor({ amount: vesuAmountInBTC })
|
|
34147
34313
|
);
|
|
34148
34314
|
calls.push(swapCall);
|
|
34149
|
-
return
|
|
34315
|
+
return {
|
|
34316
|
+
calls,
|
|
34317
|
+
status: true
|
|
34318
|
+
};
|
|
34150
34319
|
} else if (params.to === Protocols.EXTENDED.name && params.from === Protocols.VESU.name) {
|
|
34151
34320
|
const vesuAmountInBTC = new Web3Number(
|
|
34152
34321
|
params.amount.dividedBy(collateralPrice.price).toNumber(),
|
|
@@ -34177,13 +34346,21 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34177
34346
|
await proofsInfoDeposit.callConstructor({ amount: params.amount })
|
|
34178
34347
|
);
|
|
34179
34348
|
calls.push(callDeposit);
|
|
34180
|
-
return
|
|
34349
|
+
return {
|
|
34350
|
+
calls,
|
|
34351
|
+
status: true
|
|
34352
|
+
};
|
|
34181
34353
|
}
|
|
34182
|
-
|
|
34183
|
-
|
|
34354
|
+
return {
|
|
34355
|
+
calls: [],
|
|
34356
|
+
status: false
|
|
34357
|
+
};
|
|
34184
34358
|
} catch (err) {
|
|
34185
34359
|
logger.error(`error moving assets: ${err}`);
|
|
34186
|
-
return
|
|
34360
|
+
return {
|
|
34361
|
+
calls: [],
|
|
34362
|
+
status: false
|
|
34363
|
+
};
|
|
34187
34364
|
}
|
|
34188
34365
|
}
|
|
34189
34366
|
async handleDeposit() {
|
|
@@ -34242,8 +34419,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34242
34419
|
collateralTokenAmount,
|
|
34243
34420
|
collateralPrice.price
|
|
34244
34421
|
);
|
|
34245
|
-
|
|
34246
|
-
console.log("extendedAmountInBTC", extendedAmountInBTC);
|
|
34422
|
+
logger.info(`vesuAmountInBTC ${vesuAmountInBTC}, extendedAmountInBTC ${extendedAmountInBTC}`);
|
|
34247
34423
|
let calls = [];
|
|
34248
34424
|
if (vesuAmountInBTC.greaterThan(MINIMUM_EXTENDED_POSITION_SIZE)) {
|
|
34249
34425
|
const proofsInfo = vesuAdapter.getProofs(true, this.getMerkleTree());
|
|
@@ -34256,7 +34432,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34256
34432
|
);
|
|
34257
34433
|
const { amount: wbtcAmountInVaultAllocator } = await this.getUnusedBalanceWBTC();
|
|
34258
34434
|
if (wbtcAmountInVaultAllocator.lessThan(vesuAmountInBTC)) {
|
|
34259
|
-
|
|
34435
|
+
logger.info(`WBTC amount in vault allocator is less than vesu amount required in WBTC thus swapping, wbtcAmountInVaultAllocator: ${wbtcAmountInVaultAllocator}, vesuAmountInBTC: ${vesuAmountInBTC}`);
|
|
34260
34436
|
const swapProofsInfo = avnuAdapter.getProofs(true, this.getMerkleTree());
|
|
34261
34437
|
const swapProofGroups = swapProofsInfo.proofs;
|
|
34262
34438
|
const swapCall = this.getManageCall(
|
|
@@ -34300,7 +34476,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34300
34476
|
bid
|
|
34301
34477
|
} = await extendedAdapter.fetchOrderBookBTCUSDC();
|
|
34302
34478
|
const price = ask.plus(bid).dividedBy(2);
|
|
34303
|
-
const btcToken = vesuAdapter.config.supportedPositions[
|
|
34479
|
+
const btcToken = vesuAdapter.config.supportedPositions[0].asset;
|
|
34304
34480
|
const btcPriceAvnu = await avnuAdapter.getPriceOfToken(btcToken.address.toString());
|
|
34305
34481
|
if (!btcPriceAvnu) {
|
|
34306
34482
|
logger.error(`error getting btc price avnu: ${btcPriceAvnu}`);
|
|
@@ -34316,43 +34492,65 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34316
34492
|
async handleWithdraw(amount) {
|
|
34317
34493
|
try {
|
|
34318
34494
|
const usdcBalanceVaultAllocator = await this.getUnusedBalance();
|
|
34319
|
-
const usdcBalanceDifference = amount.minus(usdcBalanceVaultAllocator.usdValue);
|
|
34495
|
+
const usdcBalanceDifference = amount.plus(BUFFER_USDC_IN_WITHDRAWAL).minus(usdcBalanceVaultAllocator.usdValue);
|
|
34320
34496
|
logger.info(`usdcBalanceDifference, ${usdcBalanceDifference.toNumber()}`);
|
|
34497
|
+
let calls = [];
|
|
34498
|
+
let status = true;
|
|
34321
34499
|
if (usdcBalanceDifference.lessThan(0)) {
|
|
34322
|
-
const
|
|
34323
|
-
amount
|
|
34500
|
+
const withdrawCall2 = await this.getBringLiquidityCall({
|
|
34501
|
+
amount: usdcBalanceVaultAllocator.amount
|
|
34324
34502
|
});
|
|
34325
|
-
logger.info("withdraw call",
|
|
34326
|
-
|
|
34503
|
+
logger.info("withdraw call", withdrawCall2);
|
|
34504
|
+
calls.push(withdrawCall2);
|
|
34505
|
+
return {
|
|
34506
|
+
calls,
|
|
34507
|
+
status: true
|
|
34508
|
+
};
|
|
34327
34509
|
}
|
|
34328
34510
|
const vesuAdapter = await this.getVesuAdapter();
|
|
34329
34511
|
const extendedAdapter = await this.getExtendedAdapter();
|
|
34330
34512
|
if (!vesuAdapter || !extendedAdapter || !extendedAdapter.client) {
|
|
34513
|
+
status = false;
|
|
34331
34514
|
logger.error(
|
|
34332
34515
|
`vesu or extended adapter not found: vesuAdapter=${vesuAdapter}, extendedAdapter=${extendedAdapter}`
|
|
34333
34516
|
);
|
|
34334
|
-
return
|
|
34517
|
+
return {
|
|
34518
|
+
calls,
|
|
34519
|
+
status
|
|
34520
|
+
};
|
|
34335
34521
|
}
|
|
34336
34522
|
const { collateralTokenAmount } = await vesuAdapter.vesuAdapter.getAssetPrices();
|
|
34337
34523
|
const {
|
|
34338
34524
|
collateralPrice
|
|
34339
34525
|
} = await this.getAssetPrices();
|
|
34340
34526
|
const extendedPositon = await extendedAdapter.getAllOpenPositions();
|
|
34527
|
+
if (!extendedPositon) {
|
|
34528
|
+
status = false;
|
|
34529
|
+
logger.error("error getting extended position", extendedPositon);
|
|
34530
|
+
return {
|
|
34531
|
+
calls,
|
|
34532
|
+
status
|
|
34533
|
+
};
|
|
34534
|
+
}
|
|
34341
34535
|
const amountDistributionForWithdrawal = await calculateAmountDistributionForWithdrawal(
|
|
34342
|
-
|
|
34536
|
+
usdcBalanceDifference,
|
|
34343
34537
|
collateralPrice.price,
|
|
34344
34538
|
collateralTokenAmount,
|
|
34345
34539
|
extendedPositon
|
|
34346
34540
|
);
|
|
34347
34541
|
if (!amountDistributionForWithdrawal) {
|
|
34542
|
+
status = false;
|
|
34348
34543
|
logger.error(
|
|
34349
34544
|
`error calculating amount distribution for withdrawal: ${amountDistributionForWithdrawal}`
|
|
34350
34545
|
);
|
|
34351
|
-
return
|
|
34546
|
+
return {
|
|
34547
|
+
calls,
|
|
34548
|
+
status
|
|
34549
|
+
};
|
|
34352
34550
|
}
|
|
34353
34551
|
const { vesu_amount, extended_amount } = amountDistributionForWithdrawal;
|
|
34354
|
-
if (vesu_amount.greaterThan(0)) {
|
|
34355
|
-
const
|
|
34552
|
+
if (status && vesu_amount.greaterThan(0)) {
|
|
34553
|
+
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
34356
34554
|
{
|
|
34357
34555
|
amount: vesu_amount,
|
|
34358
34556
|
from: Protocols.VESU.name,
|
|
@@ -34361,10 +34559,11 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34361
34559
|
extendedAdapter,
|
|
34362
34560
|
vesuAdapter
|
|
34363
34561
|
);
|
|
34364
|
-
|
|
34562
|
+
status = vesuStatus;
|
|
34563
|
+
calls.push(...vesuCalls);
|
|
34365
34564
|
}
|
|
34366
|
-
if (extended_amount.greaterThan(0)) {
|
|
34367
|
-
const
|
|
34565
|
+
if (status && extended_amount.greaterThan(0)) {
|
|
34566
|
+
const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
|
|
34368
34567
|
{
|
|
34369
34568
|
amount: extended_amount,
|
|
34370
34569
|
from: Protocols.EXTENDED.name,
|
|
@@ -34373,12 +34572,32 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34373
34572
|
extendedAdapter,
|
|
34374
34573
|
vesuAdapter
|
|
34375
34574
|
);
|
|
34376
|
-
|
|
34575
|
+
status = extendedStatus;
|
|
34576
|
+
if (status) {
|
|
34577
|
+
calls.push(...extendedCalls);
|
|
34578
|
+
} else {
|
|
34579
|
+
logger.error("error moving assets to vault: extendedStatus: ${extendedStatus}");
|
|
34580
|
+
return {
|
|
34581
|
+
calls: [],
|
|
34582
|
+
status
|
|
34583
|
+
};
|
|
34584
|
+
}
|
|
34377
34585
|
}
|
|
34378
|
-
|
|
34586
|
+
const withdrawCall = await this.getBringLiquidityCall({
|
|
34587
|
+
amount
|
|
34588
|
+
});
|
|
34589
|
+
logger.info("withdraw call", withdrawCall);
|
|
34590
|
+
calls.push(withdrawCall);
|
|
34591
|
+
return {
|
|
34592
|
+
calls,
|
|
34593
|
+
status
|
|
34594
|
+
};
|
|
34379
34595
|
} catch (err) {
|
|
34380
34596
|
logger.error(`error handling withdrawal: ${err}`);
|
|
34381
|
-
return
|
|
34597
|
+
return {
|
|
34598
|
+
calls: [],
|
|
34599
|
+
status: false
|
|
34600
|
+
};
|
|
34382
34601
|
}
|
|
34383
34602
|
}
|
|
34384
34603
|
async getAUM() {
|
|
@@ -34512,6 +34731,7 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
34512
34731
|
() => vesuMultiplyAdapter.getWithdrawLeaf()
|
|
34513
34732
|
);
|
|
34514
34733
|
vaultSettings.leafAdapters.push(() => extendedAdapter.getDepositLeaf());
|
|
34734
|
+
vaultSettings.leafAdapters.push(() => extendedAdapter.getSwapFromLegacyLeaf());
|
|
34515
34735
|
vaultSettings.leafAdapters.push(() => avnuAdapter.getDepositLeaf());
|
|
34516
34736
|
vaultSettings.leafAdapters.push(() => avnuAdapter.getWithdrawLeaf());
|
|
34517
34737
|
vaultSettings.leafAdapters.push(
|