@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.mjs
CHANGED
|
@@ -4400,6 +4400,7 @@ var EkuboQuoter = class _EkuboQuoter {
|
|
|
4400
4400
|
return quote.splits.map((split) => {
|
|
4401
4401
|
const isNegativeAmount = BigInt(split.amount_specified) <= 0n;
|
|
4402
4402
|
const token = isNegativeAmount ? toTokenInfo : fromTokenInfo;
|
|
4403
|
+
console.log("token for withdrawal", token, isNegativeAmount);
|
|
4403
4404
|
return {
|
|
4404
4405
|
route: split.route.map((_route) => ({
|
|
4405
4406
|
pool_key: {
|
|
@@ -28021,6 +28022,7 @@ var vesu_multiple_abi_default = [
|
|
|
28021
28022
|
var AVNU_API = "https://starknet.api.avnu.fi/swap/v2/quotes";
|
|
28022
28023
|
var USDC_TOKEN_DECIMALS = 6;
|
|
28023
28024
|
var USDC_TOKEN_ADDRESS = "0x053C91253BC9682c04929cA02ED00b3E423f6710D2ee7e0D5EBB06F3eCF368A8";
|
|
28025
|
+
var BUFFER_USDC_IN_WITHDRAWAL = 5;
|
|
28024
28026
|
var WBTC_TOKEN_ADDRESS = "0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac";
|
|
28025
28027
|
var WBTC_TOKEN_DECIMALS = 8;
|
|
28026
28028
|
var MAINTENANCE_MARGIN = 0.01;
|
|
@@ -28112,8 +28114,8 @@ var calculateAmountDistributionForWithdrawal = async (amountInUsdc, collateralPr
|
|
|
28112
28114
|
logger.error("error getting extended positions");
|
|
28113
28115
|
return null;
|
|
28114
28116
|
}
|
|
28115
|
-
const
|
|
28116
|
-
|
|
28117
|
+
const extendedExposureUSD = extendedPosition.length > 0 ? new Web3Number(extendedPosition[0].value, USDC_TOKEN_DECIMALS) : new Web3Number(0, USDC_TOKEN_DECIMALS);
|
|
28118
|
+
console.log("THe collateral is", collateralPrice, collateralUnits);
|
|
28117
28119
|
const vesuExposureUSD = collateralUnits.multipliedBy(collateralPrice);
|
|
28118
28120
|
if (vesuExposureUSD.lessThan(0)) {
|
|
28119
28121
|
return {
|
|
@@ -28131,9 +28133,14 @@ var calculateAmountDistributionForWithdrawal = async (amountInUsdc, collateralPr
|
|
|
28131
28133
|
vesu_leverage
|
|
28132
28134
|
};
|
|
28133
28135
|
}
|
|
28136
|
+
console.log("the vesu exposure usd is", vesuExposureUSD.toNumber());
|
|
28137
|
+
console.log("the extended exposure usd is", extendedExposureUSD.toNumber());
|
|
28138
|
+
console.log("the amount in usdc is", amountInUsdc.toNumber());
|
|
28139
|
+
console.log("the extended leverage is", extended_leverage);
|
|
28140
|
+
console.log("the vesu leverage is", vesu_leverage);
|
|
28134
28141
|
const numerator1 = amountInUsdc.multipliedBy(extended_leverage);
|
|
28135
|
-
const numerator2 = vesuExposureUSD
|
|
28136
|
-
const numerator3 = extendedExposureUSD.multipliedBy(
|
|
28142
|
+
const numerator2 = vesuExposureUSD;
|
|
28143
|
+
const numerator3 = extendedExposureUSD.multipliedBy(-1);
|
|
28137
28144
|
const finalNumerator = numerator1.plus(numerator2).plus(numerator3);
|
|
28138
28145
|
const denominator = extended_leverage + vesu_leverage;
|
|
28139
28146
|
const vesuAmountInUSDC = finalNumerator.dividedBy(denominator);
|
|
@@ -28143,6 +28150,7 @@ var calculateAmountDistributionForWithdrawal = async (amountInUsdc, collateralPr
|
|
|
28143
28150
|
"the extended amount in usdc is",
|
|
28144
28151
|
extendedAmountInUSDC.toNumber()
|
|
28145
28152
|
);
|
|
28153
|
+
await new Promise((resolve) => setTimeout(resolve, 1e4));
|
|
28146
28154
|
return {
|
|
28147
28155
|
vesu_amount: vesuAmountInUSDC,
|
|
28148
28156
|
extended_amount: extendedAmountInUSDC,
|
|
@@ -28583,7 +28591,7 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
28583
28591
|
this.config.debt.address.toBigInt(),
|
|
28584
28592
|
this.config.vaultAllocator.toBigInt()
|
|
28585
28593
|
],
|
|
28586
|
-
sanitizer: SIMPLE_SANITIZER_V2,
|
|
28594
|
+
sanitizer: isV2 ? SIMPLE_SANITIZER_V2 : SIMPLE_SANITIZER,
|
|
28587
28595
|
// vmw = vesu multiply withdraw
|
|
28588
28596
|
id: `vmw_${this.config.poolId.shortString()}_${collateral.symbol}_${debt.symbol}`
|
|
28589
28597
|
},
|
|
@@ -28732,7 +28740,7 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
28732
28740
|
},
|
|
28733
28741
|
// Vesu multiply call
|
|
28734
28742
|
{
|
|
28735
|
-
sanitizer: SIMPLE_SANITIZER_V2,
|
|
28743
|
+
sanitizer: isV2 ? SIMPLE_SANITIZER_V2 : SIMPLE_SANITIZER,
|
|
28736
28744
|
call: {
|
|
28737
28745
|
contractAddress: vesuMultiply,
|
|
28738
28746
|
selector: hash5.getSelectorFromName("modify_lever"),
|
|
@@ -28820,19 +28828,13 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
28820
28828
|
leverSwap = ekuboQuoter.getVesuMultiplyQuote(swapQuote, debtToken, collateralToken);
|
|
28821
28829
|
const MAX_SLIPPAGE = 2e-3;
|
|
28822
28830
|
if (debtAmount.greaterThan(0)) {
|
|
28823
|
-
|
|
28824
|
-
leverSwapLimitAmount = await ekuboQuoter.getSwapLimitAmount(debtToken, collateralToken, debtAmount, MAX_SLIPPAGE);
|
|
28825
|
-
const anotherleverSwapLimitAmount = debtAmount.multipliedBy(1 + MAX_SLIPPAGE);
|
|
28826
|
-
console.log("anotherleverSwapLimitAmount", anotherleverSwapLimitAmount, leverSwapLimitAmount);
|
|
28831
|
+
leverSwapLimitAmount = debtAmount.multipliedBy(1 + MAX_SLIPPAGE);
|
|
28827
28832
|
} else if (debtAmount.lessThan(0)) {
|
|
28828
|
-
leverSwapLimitAmount =
|
|
28829
|
-
const anotherleverSwapLimitAmount = debtAmount.abs().multipliedBy(1 - MAX_SLIPPAGE);
|
|
28830
|
-
console.log("anotherleverSwapLimitAmount", anotherleverSwapLimitAmount, leverSwapLimitAmount);
|
|
28833
|
+
leverSwapLimitAmount = debtAmount.abs().multipliedBy(1 - MAX_SLIPPAGE);
|
|
28831
28834
|
} else {
|
|
28832
28835
|
leverSwapLimitAmount = Web3Number.fromWei(0, this.config.debt.decimals);
|
|
28833
28836
|
}
|
|
28834
28837
|
await new Promise((resolve) => setTimeout(resolve, 1e4));
|
|
28835
|
-
console.log("leverSwapLimitAmount", leverSwapLimitAmount);
|
|
28836
28838
|
} else {
|
|
28837
28839
|
throw new Error(`VesuMultiplyAdapter: Price impact too high (${swapQuote.price_impact}), skipping swap`);
|
|
28838
28840
|
}
|
|
@@ -28902,26 +28904,23 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
28902
28904
|
debtPrice.price,
|
|
28903
28905
|
debtToken.decimals
|
|
28904
28906
|
);
|
|
28905
|
-
console.log("debtAmountToRepay", debtAmountToRepay);
|
|
28906
28907
|
if (!debtAmountToRepay) {
|
|
28907
28908
|
throw new Error("error calculating debt amount to repay");
|
|
28908
28909
|
}
|
|
28909
28910
|
const ekuboQuoter = new EkuboQuoter(this.config.networkConfig, this.config.pricer);
|
|
28910
28911
|
const debtInDebtUnits = new Web3Number(debtAmountToRepay, debtToken.decimals).dividedBy(debtPrice.price).multipliedBy(10 ** debtToken.decimals);
|
|
28911
|
-
const debtInCollateralUnits = new Web3Number(debtAmountToRepay, debtToken.decimals).dividedBy(collateralPrice.price).multipliedBy(10 ** collateralToken.decimals);
|
|
28912
28912
|
const swapQuote = await ekuboQuoter.getQuote(
|
|
28913
28913
|
debtToken.address.address,
|
|
28914
28914
|
collateralToken.address.address,
|
|
28915
28915
|
debtInDebtUnits
|
|
28916
28916
|
);
|
|
28917
28917
|
const MAX_SLIPPAGE = 2e-3;
|
|
28918
|
-
if (swapQuote.price_impact <
|
|
28919
|
-
leverSwap = ekuboQuoter.getVesuMultiplyQuote(swapQuote,
|
|
28918
|
+
if (swapQuote.price_impact < 25e-4) {
|
|
28919
|
+
leverSwap = ekuboQuoter.getVesuMultiplyQuote(swapQuote, collateralToken, debtToken);
|
|
28920
28920
|
} else {
|
|
28921
28921
|
logger.error(`VesuMultiplyAdapter: Price impact too high (${swapQuote.price_impact}), skipping swap`);
|
|
28922
28922
|
}
|
|
28923
|
-
|
|
28924
|
-
leverSwapLimitAmount = await ekuboQuoter.getSwapLimitAmount(debtToken, collateralToken, debtInCollateralUnits, MAX_SLIPPAGE);
|
|
28923
|
+
leverSwapLimitAmount = new Web3Number(debtAmountToRepay, debtToken.decimals).abs().multipliedBy(1 + MAX_SLIPPAGE);
|
|
28925
28924
|
const multiplyParams = await this.getLeverParams(false, params, leverSwap, leverSwapLimitAmount);
|
|
28926
28925
|
const call = multiplyContract.populate("modify_lever", {
|
|
28927
28926
|
modify_lever_params: this.formatMultiplyParams(false, multiplyParams)
|
|
@@ -29493,6 +29492,41 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29493
29492
|
}
|
|
29494
29493
|
];
|
|
29495
29494
|
}
|
|
29495
|
+
getSwapFromLegacyLeaf() {
|
|
29496
|
+
const leafConfigs = this._getSwapFromLegacyLeaf();
|
|
29497
|
+
const leaves = leafConfigs.map((config) => {
|
|
29498
|
+
const { target, method, packedArguments, sanitizer, id } = config;
|
|
29499
|
+
const leaf = this.constructSimpleLeafData({
|
|
29500
|
+
id,
|
|
29501
|
+
target,
|
|
29502
|
+
method,
|
|
29503
|
+
packedArguments
|
|
29504
|
+
}, sanitizer);
|
|
29505
|
+
return leaf;
|
|
29506
|
+
});
|
|
29507
|
+
return { leaves, callConstructor: this.getSwapFromLegacyCall.bind(this) };
|
|
29508
|
+
}
|
|
29509
|
+
_getSwapFromLegacyLeaf() {
|
|
29510
|
+
const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
|
|
29511
|
+
return [
|
|
29512
|
+
{
|
|
29513
|
+
target: usdceToken.address,
|
|
29514
|
+
method: "approve",
|
|
29515
|
+
packedArguments: [
|
|
29516
|
+
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
|
|
29517
|
+
],
|
|
29518
|
+
id: `extendedswaplegacyapprove_${usdceToken.symbol}`,
|
|
29519
|
+
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29520
|
+
},
|
|
29521
|
+
{
|
|
29522
|
+
target: AVNU_EXCHANGE_FOR_LEGACY_USDC,
|
|
29523
|
+
method: "swap_to_new",
|
|
29524
|
+
packedArguments: [],
|
|
29525
|
+
id: `extended_swap_to_new_${usdceToken.symbol}`,
|
|
29526
|
+
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29527
|
+
}
|
|
29528
|
+
];
|
|
29529
|
+
}
|
|
29496
29530
|
_getWithdrawLeaf() {
|
|
29497
29531
|
return [];
|
|
29498
29532
|
}
|
|
@@ -29573,6 +29607,70 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29573
29607
|
return [];
|
|
29574
29608
|
}
|
|
29575
29609
|
}
|
|
29610
|
+
getProofsForFromLegacySwap(tree) {
|
|
29611
|
+
let proofGroups = [];
|
|
29612
|
+
const ids = this.getSwapFromLegacyLeaf().leaves.map((l) => l.readableId);
|
|
29613
|
+
for (const [i, v] of tree.entries()) {
|
|
29614
|
+
if (ids.includes(v.readableId)) {
|
|
29615
|
+
proofGroups.push(tree.getProof(i));
|
|
29616
|
+
}
|
|
29617
|
+
}
|
|
29618
|
+
if (proofGroups.length != ids.length) {
|
|
29619
|
+
throw new Error(`Not all proofs found for IDs: ${ids.join(", ")}`);
|
|
29620
|
+
}
|
|
29621
|
+
return {
|
|
29622
|
+
proofs: proofGroups,
|
|
29623
|
+
callConstructor: this.getSwapFromLegacyCall.bind(this)
|
|
29624
|
+
};
|
|
29625
|
+
}
|
|
29626
|
+
async getSwapFromLegacyCall(params) {
|
|
29627
|
+
try {
|
|
29628
|
+
const usdcToken = this.config.supportedPositions[0].asset;
|
|
29629
|
+
const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
|
|
29630
|
+
const amount = uint25613.bnToUint256(params.amount.multipliedBy(10).toWei());
|
|
29631
|
+
const quotes = await this.config.avnuAdapter.getQuotesAvnu(
|
|
29632
|
+
usdceToken.address.toString(),
|
|
29633
|
+
usdcToken.address.toString(),
|
|
29634
|
+
params.amount.toNumber(),
|
|
29635
|
+
this.config.avnuAdapter.config.vaultAllocator.address.toString(),
|
|
29636
|
+
usdcToken.decimals,
|
|
29637
|
+
false
|
|
29638
|
+
);
|
|
29639
|
+
if (!quotes) {
|
|
29640
|
+
logger.error("error getting quotes from avnu");
|
|
29641
|
+
return [];
|
|
29642
|
+
}
|
|
29643
|
+
const getCalldata = await this.config.avnuAdapter.getSwapCallData(quotes);
|
|
29644
|
+
const swapCallData = getCalldata[0];
|
|
29645
|
+
return [
|
|
29646
|
+
{
|
|
29647
|
+
sanitizer: AVNU_LEGACY_SANITIZER,
|
|
29648
|
+
call: {
|
|
29649
|
+
contractAddress: usdceToken.address,
|
|
29650
|
+
selector: hash6.getSelectorFromName("approve"),
|
|
29651
|
+
calldata: [
|
|
29652
|
+
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt(),
|
|
29653
|
+
toBigInt(amount.low.toString()),
|
|
29654
|
+
// amount low
|
|
29655
|
+
toBigInt(amount.high.toString())
|
|
29656
|
+
// amount high
|
|
29657
|
+
]
|
|
29658
|
+
}
|
|
29659
|
+
},
|
|
29660
|
+
{
|
|
29661
|
+
sanitizer: AVNU_LEGACY_SANITIZER,
|
|
29662
|
+
call: {
|
|
29663
|
+
contractAddress: AVNU_EXCHANGE_FOR_LEGACY_USDC,
|
|
29664
|
+
selector: hash6.getSelectorFromName("swap_to_new"),
|
|
29665
|
+
calldata: swapCallData
|
|
29666
|
+
}
|
|
29667
|
+
}
|
|
29668
|
+
];
|
|
29669
|
+
} catch (error) {
|
|
29670
|
+
logger.error(`Error creating Deposit Call: ${error}`);
|
|
29671
|
+
return [];
|
|
29672
|
+
}
|
|
29673
|
+
}
|
|
29576
29674
|
//Swap wbtc to usdc
|
|
29577
29675
|
async getWithdrawCall(params) {
|
|
29578
29676
|
try {
|
|
@@ -29590,10 +29688,10 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29590
29688
|
if (!this.client) {
|
|
29591
29689
|
throw new Error("Client not initialized");
|
|
29592
29690
|
}
|
|
29593
|
-
const withdrawalRequest = this.client.withdrawUSDC(amount.
|
|
29594
|
-
if (
|
|
29595
|
-
|
|
29596
|
-
return
|
|
29691
|
+
const withdrawalRequest = await this.client.withdrawUSDC(amount.toFixed(2));
|
|
29692
|
+
if (withdrawalRequest.status === "OK") {
|
|
29693
|
+
const withdrawalStatus = await this.getDepositOrWithdrawalStatus(withdrawalRequest.data, "WITHDRAWAL" /* WITHDRAWAL */);
|
|
29694
|
+
return withdrawalStatus;
|
|
29597
29695
|
}
|
|
29598
29696
|
return false;
|
|
29599
29697
|
} catch (error) {
|
|
@@ -29774,7 +29872,7 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29774
29872
|
logger.error(`createShortOrder failed on attempt ${attempt}: ${err.message}`);
|
|
29775
29873
|
if (attempt < maxAttempts) {
|
|
29776
29874
|
const backoff = 1200 * attempt;
|
|
29777
|
-
|
|
29875
|
+
logger.info(`Retrying after ${backoff}ms...`);
|
|
29778
29876
|
await new Promise((resolve) => setTimeout(resolve, backoff));
|
|
29779
29877
|
return this.createOrder(
|
|
29780
29878
|
leverage,
|
|
@@ -29805,7 +29903,7 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29805
29903
|
}
|
|
29806
29904
|
return null;
|
|
29807
29905
|
} catch (err) {
|
|
29808
|
-
|
|
29906
|
+
logger.error(`Error opening short extended position, ${err}`);
|
|
29809
29907
|
return null;
|
|
29810
29908
|
}
|
|
29811
29909
|
}
|
|
@@ -29815,17 +29913,16 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29815
29913
|
operationsType: [operationsType],
|
|
29816
29914
|
operationsStatus: ["COMPLETED" /* COMPLETED */]
|
|
29817
29915
|
});
|
|
29818
|
-
console.log("transferHistory", transferHistory);
|
|
29819
29916
|
if (operationsType === "DEPOSIT" /* DEPOSIT */) {
|
|
29820
29917
|
const myTransferStatus = transferHistory.data.find((operation) => operation.transactionHash === orderId);
|
|
29821
29918
|
if (!myTransferStatus) {
|
|
29822
|
-
return
|
|
29919
|
+
return true;
|
|
29823
29920
|
}
|
|
29824
29921
|
return true;
|
|
29825
29922
|
} else {
|
|
29826
|
-
const myTransferStatus = transferHistory.data.find((operation) => operation.id === orderId);
|
|
29923
|
+
const myTransferStatus = transferHistory.data.find((operation) => operation.id.toString() === orderId.toString());
|
|
29827
29924
|
if (!myTransferStatus) {
|
|
29828
|
-
return
|
|
29925
|
+
return true;
|
|
29829
29926
|
}
|
|
29830
29927
|
return true;
|
|
29831
29928
|
}
|
|
@@ -33414,7 +33511,7 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33414
33511
|
packedArguments: [
|
|
33415
33512
|
fromToken.address.toBigInt(),
|
|
33416
33513
|
//wbtc
|
|
33417
|
-
|
|
33514
|
+
toToken.address.toBigInt(),
|
|
33418
33515
|
//usdc
|
|
33419
33516
|
vaultAllocator.toBigInt()
|
|
33420
33517
|
],
|
|
@@ -33428,13 +33525,11 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33428
33525
|
}
|
|
33429
33526
|
async getDepositCall(params) {
|
|
33430
33527
|
try {
|
|
33431
|
-
console.log("params.amount", params.amount);
|
|
33432
33528
|
const fromToken = this.config.supportedPositions[0].asset;
|
|
33433
33529
|
const toToken = this.config.supportedPositions[1].asset;
|
|
33434
33530
|
const vaultAllocator = ContractAddr.from(
|
|
33435
33531
|
this.config.vaultAllocator.address
|
|
33436
33532
|
);
|
|
33437
|
-
console.log("vaultAllocator", vaultAllocator);
|
|
33438
33533
|
const quote = await this.getQuotesAvnu(
|
|
33439
33534
|
fromToken.address.toString(),
|
|
33440
33535
|
toToken.address.toString(),
|
|
@@ -33490,7 +33585,6 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33490
33585
|
const vaultAllocator = ContractAddr.from(
|
|
33491
33586
|
this.config.vaultAllocator.address
|
|
33492
33587
|
);
|
|
33493
|
-
console.log("params.amount", params.amount);
|
|
33494
33588
|
const quote = await this.getQuotesAvnu(
|
|
33495
33589
|
fromToken.address.toString(),
|
|
33496
33590
|
toToken.address.toString(),
|
|
@@ -33509,8 +33603,6 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33509
33603
|
);
|
|
33510
33604
|
const swapCallData = getCalldata[0];
|
|
33511
33605
|
const amount = uint25614.bnToUint256(params.amount.toWei());
|
|
33512
|
-
console.log("amount", amount);
|
|
33513
|
-
console.log("swapCallData", swapCallData);
|
|
33514
33606
|
return [
|
|
33515
33607
|
{
|
|
33516
33608
|
sanitizer: SIMPLE_SANITIZER,
|
|
@@ -33585,14 +33677,12 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33585
33677
|
return dataObject2;
|
|
33586
33678
|
}
|
|
33587
33679
|
const btcPrice = await this.getPriceOfToken(toToken.address.toString());
|
|
33588
|
-
console.log("btcPrice", btcPrice);
|
|
33589
33680
|
if (!btcPrice) {
|
|
33590
33681
|
logger.error(`error getting btc price: ${btcPrice}`);
|
|
33591
33682
|
return null;
|
|
33592
33683
|
}
|
|
33593
33684
|
const estimatedUsdcAmount = Math.floor(amount * btcPrice);
|
|
33594
33685
|
const targetBtcBig = BigInt(returnFormattedAmount(amount, toTokenDecimals));
|
|
33595
|
-
console.log("targetBtcBig", targetBtcBig);
|
|
33596
33686
|
let low = BigInt(
|
|
33597
33687
|
Math.floor(
|
|
33598
33688
|
estimatedUsdcAmount * 10 ** fromToken.decimals * 0.9
|
|
@@ -33695,6 +33785,23 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33695
33785
|
debtPrice
|
|
33696
33786
|
};
|
|
33697
33787
|
}
|
|
33788
|
+
async getUnusedBalanceUSDCE() {
|
|
33789
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
33790
|
+
(token) => token.symbol === "USDCe"
|
|
33791
|
+
);
|
|
33792
|
+
const balance = await new ERC20(this.config).balanceOf(
|
|
33793
|
+
usdceToken.address,
|
|
33794
|
+
WALLET_ADDRESS,
|
|
33795
|
+
usdceToken.decimals
|
|
33796
|
+
);
|
|
33797
|
+
const price = await this.pricer.getPrice(usdceToken.symbol);
|
|
33798
|
+
const usdValue = Number(balance.toFixed(usdceToken.decimals)) * price.price;
|
|
33799
|
+
return {
|
|
33800
|
+
tokenInfo: usdceToken,
|
|
33801
|
+
amount: balance,
|
|
33802
|
+
usdValue
|
|
33803
|
+
};
|
|
33804
|
+
}
|
|
33698
33805
|
async getUnusedBalanceWBTC() {
|
|
33699
33806
|
const collateralToken = this.metadata.additionalInfo.borrowable_assets[0];
|
|
33700
33807
|
const balance = await new ERC20(this.config).balanceOf(
|
|
@@ -33740,22 +33847,30 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33740
33847
|
}
|
|
33741
33848
|
return extendedAdapter.adapter;
|
|
33742
33849
|
}
|
|
33743
|
-
async moveAssetsToVaultAllocator(amount) {
|
|
33850
|
+
async moveAssetsToVaultAllocator(amount, extendedAdapter) {
|
|
33744
33851
|
try {
|
|
33745
|
-
const
|
|
33746
|
-
(token) => token.symbol === "
|
|
33852
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
33853
|
+
(token) => token.symbol === "USDCe"
|
|
33747
33854
|
);
|
|
33748
33855
|
const approveCall = new ERC20(this.config).approve(
|
|
33749
|
-
|
|
33856
|
+
usdceToken.address,
|
|
33750
33857
|
this.metadata.additionalInfo.vaultAllocator,
|
|
33751
33858
|
amount
|
|
33752
33859
|
);
|
|
33753
33860
|
const transferCall = new ERC20(this.config).transfer(
|
|
33754
|
-
|
|
33861
|
+
usdceToken.address,
|
|
33755
33862
|
this.metadata.additionalInfo.vaultAllocator,
|
|
33756
33863
|
amount
|
|
33757
33864
|
);
|
|
33758
|
-
|
|
33865
|
+
const proofsInfo = extendedAdapter.getProofsForFromLegacySwap(
|
|
33866
|
+
this.getMerkleTree()
|
|
33867
|
+
);
|
|
33868
|
+
const proofGroups = proofsInfo.proofs;
|
|
33869
|
+
const call = this.getManageCall(
|
|
33870
|
+
proofGroups,
|
|
33871
|
+
await proofsInfo.callConstructor({ amount })
|
|
33872
|
+
);
|
|
33873
|
+
return [approveCall, transferCall, call];
|
|
33759
33874
|
} catch (err) {
|
|
33760
33875
|
logger.error(`error moving assets to vault allocator: ${err}`);
|
|
33761
33876
|
return [];
|
|
@@ -33867,11 +33982,9 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33867
33982
|
);
|
|
33868
33983
|
return calls;
|
|
33869
33984
|
}
|
|
33870
|
-
console.log("extendedAmount", extendedAmount);
|
|
33871
|
-
console.log("vesuAmount", vesuAmount);
|
|
33872
33985
|
if (extendedAmount.lessThan(0)) {
|
|
33873
33986
|
try {
|
|
33874
|
-
const extendedCalls = await this.moveAssets(
|
|
33987
|
+
const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
|
|
33875
33988
|
{
|
|
33876
33989
|
to: Protocols.VAULT.name,
|
|
33877
33990
|
from: Protocols.EXTENDED.name,
|
|
@@ -33880,14 +33993,18 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33880
33993
|
extendedAdapter,
|
|
33881
33994
|
vesuAdapter
|
|
33882
33995
|
);
|
|
33883
|
-
|
|
33996
|
+
if (extendedStatus) {
|
|
33997
|
+
calls.push(...extendedCalls);
|
|
33998
|
+
} else {
|
|
33999
|
+
return [];
|
|
34000
|
+
}
|
|
33884
34001
|
} catch (err) {
|
|
33885
34002
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
33886
34003
|
}
|
|
33887
34004
|
}
|
|
33888
34005
|
if (vesuAmount.lessThan(0)) {
|
|
33889
34006
|
try {
|
|
33890
|
-
const vesuCalls = await this.moveAssets(
|
|
34007
|
+
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
33891
34008
|
{
|
|
33892
34009
|
to: Protocols.EXTENDED.name,
|
|
33893
34010
|
from: Protocols.VESU.name,
|
|
@@ -33897,6 +34014,9 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33897
34014
|
vesuAdapter
|
|
33898
34015
|
);
|
|
33899
34016
|
calls.push(...vesuCalls);
|
|
34017
|
+
if (!vesuStatus) {
|
|
34018
|
+
return [];
|
|
34019
|
+
}
|
|
33900
34020
|
} catch (err) {
|
|
33901
34021
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
33902
34022
|
}
|
|
@@ -33912,7 +34032,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33912
34032
|
);
|
|
33913
34033
|
if (extendedAmount.minus(usdcAmountOnExtended).greaterThan(0)) {
|
|
33914
34034
|
try {
|
|
33915
|
-
const extendedCalls = await this.moveAssets(
|
|
34035
|
+
const { calls: extendedCalls } = await this.moveAssets(
|
|
33916
34036
|
{
|
|
33917
34037
|
to: Protocols.EXTENDED.name,
|
|
33918
34038
|
from: Protocols.VAULT.name,
|
|
@@ -33928,15 +34048,18 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33928
34048
|
}
|
|
33929
34049
|
if (vesuAmount.minus(usdcAmountInWallet).greaterThan(0)) {
|
|
33930
34050
|
try {
|
|
33931
|
-
const vesuCalls = await this.moveAssets(
|
|
34051
|
+
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
33932
34052
|
{
|
|
33933
|
-
to: Protocols.
|
|
34053
|
+
to: Protocols.VAULT.name,
|
|
33934
34054
|
from: Protocols.EXTENDED.name,
|
|
33935
34055
|
amount: vesuAmount.minus(usdcAmountInWallet)
|
|
33936
34056
|
},
|
|
33937
34057
|
extendedAdapter,
|
|
33938
34058
|
vesuAdapter
|
|
33939
34059
|
);
|
|
34060
|
+
if (!vesuStatus) {
|
|
34061
|
+
return [];
|
|
34062
|
+
}
|
|
33940
34063
|
calls.push(...vesuCalls);
|
|
33941
34064
|
} catch (err) {
|
|
33942
34065
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
@@ -33953,9 +34076,12 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33953
34076
|
const avnuAdapter = await this.getAvnuAdapter();
|
|
33954
34077
|
if (!avnuAdapter) {
|
|
33955
34078
|
logger.error(`avnu adapter not found: ${avnuAdapter}`);
|
|
33956
|
-
return
|
|
34079
|
+
return {
|
|
34080
|
+
calls: [],
|
|
34081
|
+
status: false
|
|
34082
|
+
};
|
|
33957
34083
|
}
|
|
33958
|
-
logger.info(
|
|
34084
|
+
logger.info(`moveAssets params, ${JSON.stringify(params)}`);
|
|
33959
34085
|
const collateralToken = vesuAdapter.config.supportedPositions[0].asset;
|
|
33960
34086
|
const {
|
|
33961
34087
|
collateralPrice
|
|
@@ -33972,18 +34098,58 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33972
34098
|
await proofsInfo.callConstructor({ amount: params.amount })
|
|
33973
34099
|
);
|
|
33974
34100
|
calls.push(call);
|
|
33975
|
-
return
|
|
34101
|
+
return {
|
|
34102
|
+
calls: [call],
|
|
34103
|
+
status: true
|
|
34104
|
+
};
|
|
33976
34105
|
} else if (params.to === Protocols.VAULT.name && params.from === Protocols.EXTENDED.name) {
|
|
34106
|
+
const extendedLeverage = calculateExtendedLevergae();
|
|
34107
|
+
const extendedHoldings = await extendedAdapter.getExtendedDepositAmount();
|
|
34108
|
+
if (!extendedHoldings) {
|
|
34109
|
+
logger.error(`error getting extended holdings: ${extendedHoldings}`);
|
|
34110
|
+
return {
|
|
34111
|
+
calls: [],
|
|
34112
|
+
status: false
|
|
34113
|
+
};
|
|
34114
|
+
}
|
|
34115
|
+
const extendedHoldingAmount = new Web3Number(
|
|
34116
|
+
extendedHoldings.availableForWithdrawal,
|
|
34117
|
+
USDC_TOKEN_DECIMALS
|
|
34118
|
+
);
|
|
34119
|
+
const leftAmountAfterWithdrawalAmountInAccount = params.amount.minus(extendedHoldingAmount);
|
|
34120
|
+
const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(collateralPrice.price);
|
|
34121
|
+
const openLongPosition = await extendedAdapter.createOrder(
|
|
34122
|
+
extendedLeverage.toString(),
|
|
34123
|
+
btcAmount.toNumber(),
|
|
34124
|
+
"BUY" /* BUY */
|
|
34125
|
+
);
|
|
34126
|
+
if (!openLongPosition) {
|
|
34127
|
+
logger.error(`error opening long position: ${openLongPosition}`);
|
|
34128
|
+
return {
|
|
34129
|
+
calls: [],
|
|
34130
|
+
status: false
|
|
34131
|
+
};
|
|
34132
|
+
}
|
|
34133
|
+
await new Promise((resolve) => setTimeout(resolve, 5e3));
|
|
33977
34134
|
const withdrawalFromExtended = await extendedAdapter.withdrawFromExtended(params.amount);
|
|
33978
34135
|
if (withdrawalFromExtended) {
|
|
33979
|
-
const
|
|
34136
|
+
const extendedHoldings2 = await extendedAdapter.getExtendedDepositAmount();
|
|
34137
|
+
logger.info(`extendedHoldings after withdrawal ${extendedHoldings2}`);
|
|
34138
|
+
await new Promise((resolve) => setTimeout(resolve, 1e4));
|
|
34139
|
+
const calls = await this.moveAssetsToVaultAllocator(params.amount, extendedAdapter);
|
|
33980
34140
|
if (calls.length > 0) {
|
|
33981
|
-
return
|
|
34141
|
+
return {
|
|
34142
|
+
calls,
|
|
34143
|
+
status: true
|
|
34144
|
+
};
|
|
33982
34145
|
}
|
|
33983
34146
|
} else {
|
|
33984
34147
|
logger.error("withdrawal from extended failed");
|
|
34148
|
+
return {
|
|
34149
|
+
calls: [],
|
|
34150
|
+
status: false
|
|
34151
|
+
};
|
|
33985
34152
|
}
|
|
33986
|
-
return [];
|
|
33987
34153
|
} else if (params.to === Protocols.VAULT.name && params.from === Protocols.VESU.name) {
|
|
33988
34154
|
const vesuAmountInBTC = new Web3Number(
|
|
33989
34155
|
params.amount.dividedBy(collateralPrice.price).toNumber(),
|
|
@@ -34004,7 +34170,10 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34004
34170
|
await swapProofsInfo.callConstructor({ amount: vesuAmountInBTC })
|
|
34005
34171
|
);
|
|
34006
34172
|
calls.push(swapCall);
|
|
34007
|
-
return
|
|
34173
|
+
return {
|
|
34174
|
+
calls,
|
|
34175
|
+
status: true
|
|
34176
|
+
};
|
|
34008
34177
|
} else if (params.to === Protocols.EXTENDED.name && params.from === Protocols.VESU.name) {
|
|
34009
34178
|
const vesuAmountInBTC = new Web3Number(
|
|
34010
34179
|
params.amount.dividedBy(collateralPrice.price).toNumber(),
|
|
@@ -34035,13 +34204,21 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34035
34204
|
await proofsInfoDeposit.callConstructor({ amount: params.amount })
|
|
34036
34205
|
);
|
|
34037
34206
|
calls.push(callDeposit);
|
|
34038
|
-
return
|
|
34207
|
+
return {
|
|
34208
|
+
calls,
|
|
34209
|
+
status: true
|
|
34210
|
+
};
|
|
34039
34211
|
}
|
|
34040
|
-
|
|
34041
|
-
|
|
34212
|
+
return {
|
|
34213
|
+
calls: [],
|
|
34214
|
+
status: false
|
|
34215
|
+
};
|
|
34042
34216
|
} catch (err) {
|
|
34043
34217
|
logger.error(`error moving assets: ${err}`);
|
|
34044
|
-
return
|
|
34218
|
+
return {
|
|
34219
|
+
calls: [],
|
|
34220
|
+
status: false
|
|
34221
|
+
};
|
|
34045
34222
|
}
|
|
34046
34223
|
}
|
|
34047
34224
|
async handleDeposit() {
|
|
@@ -34100,8 +34277,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34100
34277
|
collateralTokenAmount,
|
|
34101
34278
|
collateralPrice.price
|
|
34102
34279
|
);
|
|
34103
|
-
|
|
34104
|
-
console.log("extendedAmountInBTC", extendedAmountInBTC);
|
|
34280
|
+
logger.info(`vesuAmountInBTC ${vesuAmountInBTC}, extendedAmountInBTC ${extendedAmountInBTC}`);
|
|
34105
34281
|
let calls = [];
|
|
34106
34282
|
if (vesuAmountInBTC.greaterThan(MINIMUM_EXTENDED_POSITION_SIZE)) {
|
|
34107
34283
|
const proofsInfo = vesuAdapter.getProofs(true, this.getMerkleTree());
|
|
@@ -34114,7 +34290,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34114
34290
|
);
|
|
34115
34291
|
const { amount: wbtcAmountInVaultAllocator } = await this.getUnusedBalanceWBTC();
|
|
34116
34292
|
if (wbtcAmountInVaultAllocator.lessThan(vesuAmountInBTC)) {
|
|
34117
|
-
|
|
34293
|
+
logger.info(`WBTC amount in vault allocator is less than vesu amount required in WBTC thus swapping, wbtcAmountInVaultAllocator: ${wbtcAmountInVaultAllocator}, vesuAmountInBTC: ${vesuAmountInBTC}`);
|
|
34118
34294
|
const swapProofsInfo = avnuAdapter.getProofs(true, this.getMerkleTree());
|
|
34119
34295
|
const swapProofGroups = swapProofsInfo.proofs;
|
|
34120
34296
|
const swapCall = this.getManageCall(
|
|
@@ -34158,7 +34334,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34158
34334
|
bid
|
|
34159
34335
|
} = await extendedAdapter.fetchOrderBookBTCUSDC();
|
|
34160
34336
|
const price = ask.plus(bid).dividedBy(2);
|
|
34161
|
-
const btcToken = vesuAdapter.config.supportedPositions[
|
|
34337
|
+
const btcToken = vesuAdapter.config.supportedPositions[0].asset;
|
|
34162
34338
|
const btcPriceAvnu = await avnuAdapter.getPriceOfToken(btcToken.address.toString());
|
|
34163
34339
|
if (!btcPriceAvnu) {
|
|
34164
34340
|
logger.error(`error getting btc price avnu: ${btcPriceAvnu}`);
|
|
@@ -34174,43 +34350,65 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34174
34350
|
async handleWithdraw(amount) {
|
|
34175
34351
|
try {
|
|
34176
34352
|
const usdcBalanceVaultAllocator = await this.getUnusedBalance();
|
|
34177
|
-
const usdcBalanceDifference = amount.minus(usdcBalanceVaultAllocator.usdValue);
|
|
34353
|
+
const usdcBalanceDifference = amount.plus(BUFFER_USDC_IN_WITHDRAWAL).minus(usdcBalanceVaultAllocator.usdValue);
|
|
34178
34354
|
logger.info(`usdcBalanceDifference, ${usdcBalanceDifference.toNumber()}`);
|
|
34355
|
+
let calls = [];
|
|
34356
|
+
let status = true;
|
|
34179
34357
|
if (usdcBalanceDifference.lessThan(0)) {
|
|
34180
|
-
const
|
|
34181
|
-
amount
|
|
34358
|
+
const withdrawCall2 = await this.getBringLiquidityCall({
|
|
34359
|
+
amount: usdcBalanceVaultAllocator.amount
|
|
34182
34360
|
});
|
|
34183
|
-
logger.info("withdraw call",
|
|
34184
|
-
|
|
34361
|
+
logger.info("withdraw call", withdrawCall2);
|
|
34362
|
+
calls.push(withdrawCall2);
|
|
34363
|
+
return {
|
|
34364
|
+
calls,
|
|
34365
|
+
status: true
|
|
34366
|
+
};
|
|
34185
34367
|
}
|
|
34186
34368
|
const vesuAdapter = await this.getVesuAdapter();
|
|
34187
34369
|
const extendedAdapter = await this.getExtendedAdapter();
|
|
34188
34370
|
if (!vesuAdapter || !extendedAdapter || !extendedAdapter.client) {
|
|
34371
|
+
status = false;
|
|
34189
34372
|
logger.error(
|
|
34190
34373
|
`vesu or extended adapter not found: vesuAdapter=${vesuAdapter}, extendedAdapter=${extendedAdapter}`
|
|
34191
34374
|
);
|
|
34192
|
-
return
|
|
34375
|
+
return {
|
|
34376
|
+
calls,
|
|
34377
|
+
status
|
|
34378
|
+
};
|
|
34193
34379
|
}
|
|
34194
34380
|
const { collateralTokenAmount } = await vesuAdapter.vesuAdapter.getAssetPrices();
|
|
34195
34381
|
const {
|
|
34196
34382
|
collateralPrice
|
|
34197
34383
|
} = await this.getAssetPrices();
|
|
34198
34384
|
const extendedPositon = await extendedAdapter.getAllOpenPositions();
|
|
34385
|
+
if (!extendedPositon) {
|
|
34386
|
+
status = false;
|
|
34387
|
+
logger.error("error getting extended position", extendedPositon);
|
|
34388
|
+
return {
|
|
34389
|
+
calls,
|
|
34390
|
+
status
|
|
34391
|
+
};
|
|
34392
|
+
}
|
|
34199
34393
|
const amountDistributionForWithdrawal = await calculateAmountDistributionForWithdrawal(
|
|
34200
|
-
|
|
34394
|
+
usdcBalanceDifference,
|
|
34201
34395
|
collateralPrice.price,
|
|
34202
34396
|
collateralTokenAmount,
|
|
34203
34397
|
extendedPositon
|
|
34204
34398
|
);
|
|
34205
34399
|
if (!amountDistributionForWithdrawal) {
|
|
34400
|
+
status = false;
|
|
34206
34401
|
logger.error(
|
|
34207
34402
|
`error calculating amount distribution for withdrawal: ${amountDistributionForWithdrawal}`
|
|
34208
34403
|
);
|
|
34209
|
-
return
|
|
34404
|
+
return {
|
|
34405
|
+
calls,
|
|
34406
|
+
status
|
|
34407
|
+
};
|
|
34210
34408
|
}
|
|
34211
34409
|
const { vesu_amount, extended_amount } = amountDistributionForWithdrawal;
|
|
34212
|
-
if (vesu_amount.greaterThan(0)) {
|
|
34213
|
-
const
|
|
34410
|
+
if (status && vesu_amount.greaterThan(0)) {
|
|
34411
|
+
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
34214
34412
|
{
|
|
34215
34413
|
amount: vesu_amount,
|
|
34216
34414
|
from: Protocols.VESU.name,
|
|
@@ -34219,10 +34417,11 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34219
34417
|
extendedAdapter,
|
|
34220
34418
|
vesuAdapter
|
|
34221
34419
|
);
|
|
34222
|
-
|
|
34420
|
+
status = vesuStatus;
|
|
34421
|
+
calls.push(...vesuCalls);
|
|
34223
34422
|
}
|
|
34224
|
-
if (extended_amount.greaterThan(0)) {
|
|
34225
|
-
const
|
|
34423
|
+
if (status && extended_amount.greaterThan(0)) {
|
|
34424
|
+
const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
|
|
34226
34425
|
{
|
|
34227
34426
|
amount: extended_amount,
|
|
34228
34427
|
from: Protocols.EXTENDED.name,
|
|
@@ -34231,12 +34430,32 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34231
34430
|
extendedAdapter,
|
|
34232
34431
|
vesuAdapter
|
|
34233
34432
|
);
|
|
34234
|
-
|
|
34433
|
+
status = extendedStatus;
|
|
34434
|
+
if (status) {
|
|
34435
|
+
calls.push(...extendedCalls);
|
|
34436
|
+
} else {
|
|
34437
|
+
logger.error("error moving assets to vault: extendedStatus: ${extendedStatus}");
|
|
34438
|
+
return {
|
|
34439
|
+
calls: [],
|
|
34440
|
+
status
|
|
34441
|
+
};
|
|
34442
|
+
}
|
|
34235
34443
|
}
|
|
34236
|
-
|
|
34444
|
+
const withdrawCall = await this.getBringLiquidityCall({
|
|
34445
|
+
amount
|
|
34446
|
+
});
|
|
34447
|
+
logger.info("withdraw call", withdrawCall);
|
|
34448
|
+
calls.push(withdrawCall);
|
|
34449
|
+
return {
|
|
34450
|
+
calls,
|
|
34451
|
+
status
|
|
34452
|
+
};
|
|
34237
34453
|
} catch (err) {
|
|
34238
34454
|
logger.error(`error handling withdrawal: ${err}`);
|
|
34239
|
-
return
|
|
34455
|
+
return {
|
|
34456
|
+
calls: [],
|
|
34457
|
+
status: false
|
|
34458
|
+
};
|
|
34240
34459
|
}
|
|
34241
34460
|
}
|
|
34242
34461
|
async getAUM() {
|
|
@@ -34370,6 +34589,7 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
34370
34589
|
() => vesuMultiplyAdapter.getWithdrawLeaf()
|
|
34371
34590
|
);
|
|
34372
34591
|
vaultSettings.leafAdapters.push(() => extendedAdapter.getDepositLeaf());
|
|
34592
|
+
vaultSettings.leafAdapters.push(() => extendedAdapter.getSwapFromLegacyLeaf());
|
|
34373
34593
|
vaultSettings.leafAdapters.push(() => avnuAdapter.getDepositLeaf());
|
|
34374
34594
|
vaultSettings.leafAdapters.push(() => avnuAdapter.getWithdrawLeaf());
|
|
34375
34595
|
vaultSettings.leafAdapters.push(
|