@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.browser.mjs
CHANGED
|
@@ -4341,6 +4341,7 @@ var EkuboQuoter = class _EkuboQuoter {
|
|
|
4341
4341
|
return quote.splits.map((split) => {
|
|
4342
4342
|
const isNegativeAmount = BigInt(split.amount_specified) <= 0n;
|
|
4343
4343
|
const token = isNegativeAmount ? toTokenInfo : fromTokenInfo;
|
|
4344
|
+
console.log("token for withdrawal", token, isNegativeAmount);
|
|
4344
4345
|
return {
|
|
4345
4346
|
route: split.route.map((_route) => ({
|
|
4346
4347
|
pool_key: {
|
|
@@ -28346,6 +28347,7 @@ var vesu_multiple_abi_default = [
|
|
|
28346
28347
|
var AVNU_API = "https://starknet.api.avnu.fi/swap/v2/quotes";
|
|
28347
28348
|
var USDC_TOKEN_DECIMALS = 6;
|
|
28348
28349
|
var USDC_TOKEN_ADDRESS = "0x053C91253BC9682c04929cA02ED00b3E423f6710D2ee7e0D5EBB06F3eCF368A8";
|
|
28350
|
+
var BUFFER_USDC_IN_WITHDRAWAL = 5;
|
|
28349
28351
|
var WBTC_TOKEN_ADDRESS = "0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac";
|
|
28350
28352
|
var WBTC_TOKEN_DECIMALS = 8;
|
|
28351
28353
|
var MAINTENANCE_MARGIN = 0.01;
|
|
@@ -28437,8 +28439,8 @@ var calculateAmountDistributionForWithdrawal = async (amountInUsdc, collateralPr
|
|
|
28437
28439
|
logger.error("error getting extended positions");
|
|
28438
28440
|
return null;
|
|
28439
28441
|
}
|
|
28440
|
-
const
|
|
28441
|
-
|
|
28442
|
+
const extendedExposureUSD = extendedPosition.length > 0 ? new Web3Number(extendedPosition[0].value, USDC_TOKEN_DECIMALS) : new Web3Number(0, USDC_TOKEN_DECIMALS);
|
|
28443
|
+
console.log("THe collateral is", collateralPrice, collateralUnits);
|
|
28442
28444
|
const vesuExposureUSD = collateralUnits.multipliedBy(collateralPrice);
|
|
28443
28445
|
if (vesuExposureUSD.lessThan(0)) {
|
|
28444
28446
|
return {
|
|
@@ -28456,9 +28458,14 @@ var calculateAmountDistributionForWithdrawal = async (amountInUsdc, collateralPr
|
|
|
28456
28458
|
vesu_leverage
|
|
28457
28459
|
};
|
|
28458
28460
|
}
|
|
28461
|
+
console.log("the vesu exposure usd is", vesuExposureUSD.toNumber());
|
|
28462
|
+
console.log("the extended exposure usd is", extendedExposureUSD.toNumber());
|
|
28463
|
+
console.log("the amount in usdc is", amountInUsdc.toNumber());
|
|
28464
|
+
console.log("the extended leverage is", extended_leverage);
|
|
28465
|
+
console.log("the vesu leverage is", vesu_leverage);
|
|
28459
28466
|
const numerator1 = amountInUsdc.multipliedBy(extended_leverage);
|
|
28460
|
-
const numerator2 = vesuExposureUSD
|
|
28461
|
-
const numerator3 = extendedExposureUSD.multipliedBy(
|
|
28467
|
+
const numerator2 = vesuExposureUSD;
|
|
28468
|
+
const numerator3 = extendedExposureUSD.multipliedBy(-1);
|
|
28462
28469
|
const finalNumerator = numerator1.plus(numerator2).plus(numerator3);
|
|
28463
28470
|
const denominator = extended_leverage + vesu_leverage;
|
|
28464
28471
|
const vesuAmountInUSDC = finalNumerator.dividedBy(denominator);
|
|
@@ -28468,6 +28475,7 @@ var calculateAmountDistributionForWithdrawal = async (amountInUsdc, collateralPr
|
|
|
28468
28475
|
"the extended amount in usdc is",
|
|
28469
28476
|
extendedAmountInUSDC.toNumber()
|
|
28470
28477
|
);
|
|
28478
|
+
await new Promise((resolve) => setTimeout(resolve, 1e4));
|
|
28471
28479
|
return {
|
|
28472
28480
|
vesu_amount: vesuAmountInUSDC,
|
|
28473
28481
|
extended_amount: extendedAmountInUSDC,
|
|
@@ -28908,7 +28916,7 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
28908
28916
|
this.config.debt.address.toBigInt(),
|
|
28909
28917
|
this.config.vaultAllocator.toBigInt()
|
|
28910
28918
|
],
|
|
28911
|
-
sanitizer: SIMPLE_SANITIZER_V2,
|
|
28919
|
+
sanitizer: isV2 ? SIMPLE_SANITIZER_V2 : SIMPLE_SANITIZER,
|
|
28912
28920
|
// vmw = vesu multiply withdraw
|
|
28913
28921
|
id: `vmw_${this.config.poolId.shortString()}_${collateral.symbol}_${debt.symbol}`
|
|
28914
28922
|
},
|
|
@@ -29057,7 +29065,7 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
29057
29065
|
},
|
|
29058
29066
|
// Vesu multiply call
|
|
29059
29067
|
{
|
|
29060
|
-
sanitizer: SIMPLE_SANITIZER_V2,
|
|
29068
|
+
sanitizer: isV2 ? SIMPLE_SANITIZER_V2 : SIMPLE_SANITIZER,
|
|
29061
29069
|
call: {
|
|
29062
29070
|
contractAddress: vesuMultiply,
|
|
29063
29071
|
selector: hash5.getSelectorFromName("modify_lever"),
|
|
@@ -29145,19 +29153,13 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
29145
29153
|
leverSwap = ekuboQuoter.getVesuMultiplyQuote(swapQuote, debtToken, collateralToken);
|
|
29146
29154
|
const MAX_SLIPPAGE = 2e-3;
|
|
29147
29155
|
if (debtAmount.greaterThan(0)) {
|
|
29148
|
-
|
|
29149
|
-
leverSwapLimitAmount = await ekuboQuoter.getSwapLimitAmount(debtToken, collateralToken, debtAmount, MAX_SLIPPAGE);
|
|
29150
|
-
const anotherleverSwapLimitAmount = debtAmount.multipliedBy(1 + MAX_SLIPPAGE);
|
|
29151
|
-
console.log("anotherleverSwapLimitAmount", anotherleverSwapLimitAmount, leverSwapLimitAmount);
|
|
29156
|
+
leverSwapLimitAmount = debtAmount.multipliedBy(1 + MAX_SLIPPAGE);
|
|
29152
29157
|
} else if (debtAmount.lessThan(0)) {
|
|
29153
|
-
leverSwapLimitAmount =
|
|
29154
|
-
const anotherleverSwapLimitAmount = debtAmount.abs().multipliedBy(1 - MAX_SLIPPAGE);
|
|
29155
|
-
console.log("anotherleverSwapLimitAmount", anotherleverSwapLimitAmount, leverSwapLimitAmount);
|
|
29158
|
+
leverSwapLimitAmount = debtAmount.abs().multipliedBy(1 - MAX_SLIPPAGE);
|
|
29156
29159
|
} else {
|
|
29157
29160
|
leverSwapLimitAmount = Web3Number.fromWei(0, this.config.debt.decimals);
|
|
29158
29161
|
}
|
|
29159
29162
|
await new Promise((resolve) => setTimeout(resolve, 1e4));
|
|
29160
|
-
console.log("leverSwapLimitAmount", leverSwapLimitAmount);
|
|
29161
29163
|
} else {
|
|
29162
29164
|
throw new Error(`VesuMultiplyAdapter: Price impact too high (${swapQuote.price_impact}), skipping swap`);
|
|
29163
29165
|
}
|
|
@@ -29227,26 +29229,23 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
29227
29229
|
debtPrice.price,
|
|
29228
29230
|
debtToken.decimals
|
|
29229
29231
|
);
|
|
29230
|
-
console.log("debtAmountToRepay", debtAmountToRepay);
|
|
29231
29232
|
if (!debtAmountToRepay) {
|
|
29232
29233
|
throw new Error("error calculating debt amount to repay");
|
|
29233
29234
|
}
|
|
29234
29235
|
const ekuboQuoter = new EkuboQuoter(this.config.networkConfig, this.config.pricer);
|
|
29235
29236
|
const debtInDebtUnits = new Web3Number(debtAmountToRepay, debtToken.decimals).dividedBy(debtPrice.price).multipliedBy(10 ** debtToken.decimals);
|
|
29236
|
-
const debtInCollateralUnits = new Web3Number(debtAmountToRepay, debtToken.decimals).dividedBy(collateralPrice.price).multipliedBy(10 ** collateralToken.decimals);
|
|
29237
29237
|
const swapQuote = await ekuboQuoter.getQuote(
|
|
29238
29238
|
debtToken.address.address,
|
|
29239
29239
|
collateralToken.address.address,
|
|
29240
29240
|
debtInDebtUnits
|
|
29241
29241
|
);
|
|
29242
29242
|
const MAX_SLIPPAGE = 2e-3;
|
|
29243
|
-
if (swapQuote.price_impact <
|
|
29244
|
-
leverSwap = ekuboQuoter.getVesuMultiplyQuote(swapQuote,
|
|
29243
|
+
if (swapQuote.price_impact < 25e-4) {
|
|
29244
|
+
leverSwap = ekuboQuoter.getVesuMultiplyQuote(swapQuote, collateralToken, debtToken);
|
|
29245
29245
|
} else {
|
|
29246
29246
|
logger.error(`VesuMultiplyAdapter: Price impact too high (${swapQuote.price_impact}), skipping swap`);
|
|
29247
29247
|
}
|
|
29248
|
-
|
|
29249
|
-
leverSwapLimitAmount = await ekuboQuoter.getSwapLimitAmount(debtToken, collateralToken, debtInCollateralUnits, MAX_SLIPPAGE);
|
|
29248
|
+
leverSwapLimitAmount = new Web3Number(debtAmountToRepay, debtToken.decimals).abs().multipliedBy(1 + MAX_SLIPPAGE);
|
|
29250
29249
|
const multiplyParams = await this.getLeverParams(false, params, leverSwap, leverSwapLimitAmount);
|
|
29251
29250
|
const call = multiplyContract.populate("modify_lever", {
|
|
29252
29251
|
modify_lever_params: this.formatMultiplyParams(false, multiplyParams)
|
|
@@ -29482,6 +29481,41 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29482
29481
|
}
|
|
29483
29482
|
];
|
|
29484
29483
|
}
|
|
29484
|
+
getSwapFromLegacyLeaf() {
|
|
29485
|
+
const leafConfigs = this._getSwapFromLegacyLeaf();
|
|
29486
|
+
const leaves = leafConfigs.map((config) => {
|
|
29487
|
+
const { target, method, packedArguments, sanitizer, id } = config;
|
|
29488
|
+
const leaf = this.constructSimpleLeafData({
|
|
29489
|
+
id,
|
|
29490
|
+
target,
|
|
29491
|
+
method,
|
|
29492
|
+
packedArguments
|
|
29493
|
+
}, sanitizer);
|
|
29494
|
+
return leaf;
|
|
29495
|
+
});
|
|
29496
|
+
return { leaves, callConstructor: this.getSwapFromLegacyCall.bind(this) };
|
|
29497
|
+
}
|
|
29498
|
+
_getSwapFromLegacyLeaf() {
|
|
29499
|
+
const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
|
|
29500
|
+
return [
|
|
29501
|
+
{
|
|
29502
|
+
target: usdceToken.address,
|
|
29503
|
+
method: "approve",
|
|
29504
|
+
packedArguments: [
|
|
29505
|
+
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
|
|
29506
|
+
],
|
|
29507
|
+
id: `extendedswaplegacyapprove_${usdceToken.symbol}`,
|
|
29508
|
+
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29509
|
+
},
|
|
29510
|
+
{
|
|
29511
|
+
target: AVNU_EXCHANGE_FOR_LEGACY_USDC,
|
|
29512
|
+
method: "swap_to_new",
|
|
29513
|
+
packedArguments: [],
|
|
29514
|
+
id: `extended_swap_to_new_${usdceToken.symbol}`,
|
|
29515
|
+
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29516
|
+
}
|
|
29517
|
+
];
|
|
29518
|
+
}
|
|
29485
29519
|
_getWithdrawLeaf() {
|
|
29486
29520
|
return [];
|
|
29487
29521
|
}
|
|
@@ -29562,6 +29596,70 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29562
29596
|
return [];
|
|
29563
29597
|
}
|
|
29564
29598
|
}
|
|
29599
|
+
getProofsForFromLegacySwap(tree) {
|
|
29600
|
+
let proofGroups = [];
|
|
29601
|
+
const ids = this.getSwapFromLegacyLeaf().leaves.map((l) => l.readableId);
|
|
29602
|
+
for (const [i, v] of tree.entries()) {
|
|
29603
|
+
if (ids.includes(v.readableId)) {
|
|
29604
|
+
proofGroups.push(tree.getProof(i));
|
|
29605
|
+
}
|
|
29606
|
+
}
|
|
29607
|
+
if (proofGroups.length != ids.length) {
|
|
29608
|
+
throw new Error(`Not all proofs found for IDs: ${ids.join(", ")}`);
|
|
29609
|
+
}
|
|
29610
|
+
return {
|
|
29611
|
+
proofs: proofGroups,
|
|
29612
|
+
callConstructor: this.getSwapFromLegacyCall.bind(this)
|
|
29613
|
+
};
|
|
29614
|
+
}
|
|
29615
|
+
async getSwapFromLegacyCall(params) {
|
|
29616
|
+
try {
|
|
29617
|
+
const usdcToken = this.config.supportedPositions[0].asset;
|
|
29618
|
+
const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
|
|
29619
|
+
const amount = uint25613.bnToUint256(params.amount.multipliedBy(10).toWei());
|
|
29620
|
+
const quotes = await this.config.avnuAdapter.getQuotesAvnu(
|
|
29621
|
+
usdceToken.address.toString(),
|
|
29622
|
+
usdcToken.address.toString(),
|
|
29623
|
+
params.amount.toNumber(),
|
|
29624
|
+
this.config.avnuAdapter.config.vaultAllocator.address.toString(),
|
|
29625
|
+
usdcToken.decimals,
|
|
29626
|
+
false
|
|
29627
|
+
);
|
|
29628
|
+
if (!quotes) {
|
|
29629
|
+
logger.error("error getting quotes from avnu");
|
|
29630
|
+
return [];
|
|
29631
|
+
}
|
|
29632
|
+
const getCalldata = await this.config.avnuAdapter.getSwapCallData(quotes);
|
|
29633
|
+
const swapCallData = getCalldata[0];
|
|
29634
|
+
return [
|
|
29635
|
+
{
|
|
29636
|
+
sanitizer: AVNU_LEGACY_SANITIZER,
|
|
29637
|
+
call: {
|
|
29638
|
+
contractAddress: usdceToken.address,
|
|
29639
|
+
selector: hash6.getSelectorFromName("approve"),
|
|
29640
|
+
calldata: [
|
|
29641
|
+
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt(),
|
|
29642
|
+
toBigInt(amount.low.toString()),
|
|
29643
|
+
// amount low
|
|
29644
|
+
toBigInt(amount.high.toString())
|
|
29645
|
+
// amount high
|
|
29646
|
+
]
|
|
29647
|
+
}
|
|
29648
|
+
},
|
|
29649
|
+
{
|
|
29650
|
+
sanitizer: AVNU_LEGACY_SANITIZER,
|
|
29651
|
+
call: {
|
|
29652
|
+
contractAddress: AVNU_EXCHANGE_FOR_LEGACY_USDC,
|
|
29653
|
+
selector: hash6.getSelectorFromName("swap_to_new"),
|
|
29654
|
+
calldata: swapCallData
|
|
29655
|
+
}
|
|
29656
|
+
}
|
|
29657
|
+
];
|
|
29658
|
+
} catch (error) {
|
|
29659
|
+
logger.error(`Error creating Deposit Call: ${error}`);
|
|
29660
|
+
return [];
|
|
29661
|
+
}
|
|
29662
|
+
}
|
|
29565
29663
|
//Swap wbtc to usdc
|
|
29566
29664
|
async getWithdrawCall(params) {
|
|
29567
29665
|
try {
|
|
@@ -29579,10 +29677,10 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29579
29677
|
if (!this.client) {
|
|
29580
29678
|
throw new Error("Client not initialized");
|
|
29581
29679
|
}
|
|
29582
|
-
const withdrawalRequest = this.client.withdrawUSDC(amount.
|
|
29583
|
-
if (
|
|
29584
|
-
|
|
29585
|
-
return
|
|
29680
|
+
const withdrawalRequest = await this.client.withdrawUSDC(amount.toFixed(2));
|
|
29681
|
+
if (withdrawalRequest.status === "OK") {
|
|
29682
|
+
const withdrawalStatus = await this.getDepositOrWithdrawalStatus(withdrawalRequest.data, "WITHDRAWAL" /* WITHDRAWAL */);
|
|
29683
|
+
return withdrawalStatus;
|
|
29586
29684
|
}
|
|
29587
29685
|
return false;
|
|
29588
29686
|
} catch (error) {
|
|
@@ -29763,7 +29861,7 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29763
29861
|
logger.error(`createShortOrder failed on attempt ${attempt}: ${err.message}`);
|
|
29764
29862
|
if (attempt < maxAttempts) {
|
|
29765
29863
|
const backoff = 1200 * attempt;
|
|
29766
|
-
|
|
29864
|
+
logger.info(`Retrying after ${backoff}ms...`);
|
|
29767
29865
|
await new Promise((resolve) => setTimeout(resolve, backoff));
|
|
29768
29866
|
return this.createOrder(
|
|
29769
29867
|
leverage,
|
|
@@ -29794,7 +29892,7 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29794
29892
|
}
|
|
29795
29893
|
return null;
|
|
29796
29894
|
} catch (err) {
|
|
29797
|
-
|
|
29895
|
+
logger.error(`Error opening short extended position, ${err}`);
|
|
29798
29896
|
return null;
|
|
29799
29897
|
}
|
|
29800
29898
|
}
|
|
@@ -29804,17 +29902,16 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29804
29902
|
operationsType: [operationsType],
|
|
29805
29903
|
operationsStatus: ["COMPLETED" /* COMPLETED */]
|
|
29806
29904
|
});
|
|
29807
|
-
console.log("transferHistory", transferHistory);
|
|
29808
29905
|
if (operationsType === "DEPOSIT" /* DEPOSIT */) {
|
|
29809
29906
|
const myTransferStatus = transferHistory.data.find((operation) => operation.transactionHash === orderId);
|
|
29810
29907
|
if (!myTransferStatus) {
|
|
29811
|
-
return
|
|
29908
|
+
return true;
|
|
29812
29909
|
}
|
|
29813
29910
|
return true;
|
|
29814
29911
|
} else {
|
|
29815
|
-
const myTransferStatus = transferHistory.data.find((operation) => operation.id === orderId);
|
|
29912
|
+
const myTransferStatus = transferHistory.data.find((operation) => operation.id.toString() === orderId.toString());
|
|
29816
29913
|
if (!myTransferStatus) {
|
|
29817
|
-
return
|
|
29914
|
+
return true;
|
|
29818
29915
|
}
|
|
29819
29916
|
return true;
|
|
29820
29917
|
}
|
|
@@ -33403,7 +33500,7 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33403
33500
|
packedArguments: [
|
|
33404
33501
|
fromToken.address.toBigInt(),
|
|
33405
33502
|
//wbtc
|
|
33406
|
-
|
|
33503
|
+
toToken.address.toBigInt(),
|
|
33407
33504
|
//usdc
|
|
33408
33505
|
vaultAllocator.toBigInt()
|
|
33409
33506
|
],
|
|
@@ -33417,13 +33514,11 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33417
33514
|
}
|
|
33418
33515
|
async getDepositCall(params) {
|
|
33419
33516
|
try {
|
|
33420
|
-
console.log("params.amount", params.amount);
|
|
33421
33517
|
const fromToken = this.config.supportedPositions[0].asset;
|
|
33422
33518
|
const toToken = this.config.supportedPositions[1].asset;
|
|
33423
33519
|
const vaultAllocator = ContractAddr.from(
|
|
33424
33520
|
this.config.vaultAllocator.address
|
|
33425
33521
|
);
|
|
33426
|
-
console.log("vaultAllocator", vaultAllocator);
|
|
33427
33522
|
const quote = await this.getQuotesAvnu(
|
|
33428
33523
|
fromToken.address.toString(),
|
|
33429
33524
|
toToken.address.toString(),
|
|
@@ -33479,7 +33574,6 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33479
33574
|
const vaultAllocator = ContractAddr.from(
|
|
33480
33575
|
this.config.vaultAllocator.address
|
|
33481
33576
|
);
|
|
33482
|
-
console.log("params.amount", params.amount);
|
|
33483
33577
|
const quote = await this.getQuotesAvnu(
|
|
33484
33578
|
fromToken.address.toString(),
|
|
33485
33579
|
toToken.address.toString(),
|
|
@@ -33498,8 +33592,6 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33498
33592
|
);
|
|
33499
33593
|
const swapCallData = getCalldata[0];
|
|
33500
33594
|
const amount = uint25614.bnToUint256(params.amount.toWei());
|
|
33501
|
-
console.log("amount", amount);
|
|
33502
|
-
console.log("swapCallData", swapCallData);
|
|
33503
33595
|
return [
|
|
33504
33596
|
{
|
|
33505
33597
|
sanitizer: SIMPLE_SANITIZER,
|
|
@@ -33574,14 +33666,12 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33574
33666
|
return dataObject2;
|
|
33575
33667
|
}
|
|
33576
33668
|
const btcPrice = await this.getPriceOfToken(toToken.address.toString());
|
|
33577
|
-
console.log("btcPrice", btcPrice);
|
|
33578
33669
|
if (!btcPrice) {
|
|
33579
33670
|
logger.error(`error getting btc price: ${btcPrice}`);
|
|
33580
33671
|
return null;
|
|
33581
33672
|
}
|
|
33582
33673
|
const estimatedUsdcAmount = Math.floor(amount * btcPrice);
|
|
33583
33674
|
const targetBtcBig = BigInt(returnFormattedAmount(amount, toTokenDecimals));
|
|
33584
|
-
console.log("targetBtcBig", targetBtcBig);
|
|
33585
33675
|
let low = BigInt(
|
|
33586
33676
|
Math.floor(
|
|
33587
33677
|
estimatedUsdcAmount * 10 ** fromToken.decimals * 0.9
|
|
@@ -33684,6 +33774,23 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33684
33774
|
debtPrice
|
|
33685
33775
|
};
|
|
33686
33776
|
}
|
|
33777
|
+
async getUnusedBalanceUSDCE() {
|
|
33778
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
33779
|
+
(token) => token.symbol === "USDCe"
|
|
33780
|
+
);
|
|
33781
|
+
const balance = await new ERC20(this.config).balanceOf(
|
|
33782
|
+
usdceToken.address,
|
|
33783
|
+
WALLET_ADDRESS,
|
|
33784
|
+
usdceToken.decimals
|
|
33785
|
+
);
|
|
33786
|
+
const price = await this.pricer.getPrice(usdceToken.symbol);
|
|
33787
|
+
const usdValue = Number(balance.toFixed(usdceToken.decimals)) * price.price;
|
|
33788
|
+
return {
|
|
33789
|
+
tokenInfo: usdceToken,
|
|
33790
|
+
amount: balance,
|
|
33791
|
+
usdValue
|
|
33792
|
+
};
|
|
33793
|
+
}
|
|
33687
33794
|
async getUnusedBalanceWBTC() {
|
|
33688
33795
|
const collateralToken = this.metadata.additionalInfo.borrowable_assets[0];
|
|
33689
33796
|
const balance = await new ERC20(this.config).balanceOf(
|
|
@@ -33729,22 +33836,30 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33729
33836
|
}
|
|
33730
33837
|
return extendedAdapter.adapter;
|
|
33731
33838
|
}
|
|
33732
|
-
async moveAssetsToVaultAllocator(amount) {
|
|
33839
|
+
async moveAssetsToVaultAllocator(amount, extendedAdapter) {
|
|
33733
33840
|
try {
|
|
33734
|
-
const
|
|
33735
|
-
(token) => token.symbol === "
|
|
33841
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
33842
|
+
(token) => token.symbol === "USDCe"
|
|
33736
33843
|
);
|
|
33737
33844
|
const approveCall = new ERC20(this.config).approve(
|
|
33738
|
-
|
|
33845
|
+
usdceToken.address,
|
|
33739
33846
|
this.metadata.additionalInfo.vaultAllocator,
|
|
33740
33847
|
amount
|
|
33741
33848
|
);
|
|
33742
33849
|
const transferCall = new ERC20(this.config).transfer(
|
|
33743
|
-
|
|
33850
|
+
usdceToken.address,
|
|
33744
33851
|
this.metadata.additionalInfo.vaultAllocator,
|
|
33745
33852
|
amount
|
|
33746
33853
|
);
|
|
33747
|
-
|
|
33854
|
+
const proofsInfo = extendedAdapter.getProofsForFromLegacySwap(
|
|
33855
|
+
this.getMerkleTree()
|
|
33856
|
+
);
|
|
33857
|
+
const proofGroups = proofsInfo.proofs;
|
|
33858
|
+
const call = this.getManageCall(
|
|
33859
|
+
proofGroups,
|
|
33860
|
+
await proofsInfo.callConstructor({ amount })
|
|
33861
|
+
);
|
|
33862
|
+
return [approveCall, transferCall, call];
|
|
33748
33863
|
} catch (err) {
|
|
33749
33864
|
logger.error(`error moving assets to vault allocator: ${err}`);
|
|
33750
33865
|
return [];
|
|
@@ -33856,11 +33971,9 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33856
33971
|
);
|
|
33857
33972
|
return calls;
|
|
33858
33973
|
}
|
|
33859
|
-
console.log("extendedAmount", extendedAmount);
|
|
33860
|
-
console.log("vesuAmount", vesuAmount);
|
|
33861
33974
|
if (extendedAmount.lessThan(0)) {
|
|
33862
33975
|
try {
|
|
33863
|
-
const extendedCalls = await this.moveAssets(
|
|
33976
|
+
const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
|
|
33864
33977
|
{
|
|
33865
33978
|
to: Protocols.VAULT.name,
|
|
33866
33979
|
from: Protocols.EXTENDED.name,
|
|
@@ -33869,14 +33982,18 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33869
33982
|
extendedAdapter,
|
|
33870
33983
|
vesuAdapter
|
|
33871
33984
|
);
|
|
33872
|
-
|
|
33985
|
+
if (extendedStatus) {
|
|
33986
|
+
calls.push(...extendedCalls);
|
|
33987
|
+
} else {
|
|
33988
|
+
return [];
|
|
33989
|
+
}
|
|
33873
33990
|
} catch (err) {
|
|
33874
33991
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
33875
33992
|
}
|
|
33876
33993
|
}
|
|
33877
33994
|
if (vesuAmount.lessThan(0)) {
|
|
33878
33995
|
try {
|
|
33879
|
-
const vesuCalls = await this.moveAssets(
|
|
33996
|
+
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
33880
33997
|
{
|
|
33881
33998
|
to: Protocols.EXTENDED.name,
|
|
33882
33999
|
from: Protocols.VESU.name,
|
|
@@ -33886,6 +34003,9 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33886
34003
|
vesuAdapter
|
|
33887
34004
|
);
|
|
33888
34005
|
calls.push(...vesuCalls);
|
|
34006
|
+
if (!vesuStatus) {
|
|
34007
|
+
return [];
|
|
34008
|
+
}
|
|
33889
34009
|
} catch (err) {
|
|
33890
34010
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
33891
34011
|
}
|
|
@@ -33901,7 +34021,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33901
34021
|
);
|
|
33902
34022
|
if (extendedAmount.minus(usdcAmountOnExtended).greaterThan(0)) {
|
|
33903
34023
|
try {
|
|
33904
|
-
const extendedCalls = await this.moveAssets(
|
|
34024
|
+
const { calls: extendedCalls } = await this.moveAssets(
|
|
33905
34025
|
{
|
|
33906
34026
|
to: Protocols.EXTENDED.name,
|
|
33907
34027
|
from: Protocols.VAULT.name,
|
|
@@ -33917,15 +34037,18 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33917
34037
|
}
|
|
33918
34038
|
if (vesuAmount.minus(usdcAmountInWallet).greaterThan(0)) {
|
|
33919
34039
|
try {
|
|
33920
|
-
const vesuCalls = await this.moveAssets(
|
|
34040
|
+
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
33921
34041
|
{
|
|
33922
|
-
to: Protocols.
|
|
34042
|
+
to: Protocols.VAULT.name,
|
|
33923
34043
|
from: Protocols.EXTENDED.name,
|
|
33924
34044
|
amount: vesuAmount.minus(usdcAmountInWallet)
|
|
33925
34045
|
},
|
|
33926
34046
|
extendedAdapter,
|
|
33927
34047
|
vesuAdapter
|
|
33928
34048
|
);
|
|
34049
|
+
if (!vesuStatus) {
|
|
34050
|
+
return [];
|
|
34051
|
+
}
|
|
33929
34052
|
calls.push(...vesuCalls);
|
|
33930
34053
|
} catch (err) {
|
|
33931
34054
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
@@ -33942,9 +34065,12 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33942
34065
|
const avnuAdapter = await this.getAvnuAdapter();
|
|
33943
34066
|
if (!avnuAdapter) {
|
|
33944
34067
|
logger.error(`avnu adapter not found: ${avnuAdapter}`);
|
|
33945
|
-
return
|
|
34068
|
+
return {
|
|
34069
|
+
calls: [],
|
|
34070
|
+
status: false
|
|
34071
|
+
};
|
|
33946
34072
|
}
|
|
33947
|
-
logger.info(
|
|
34073
|
+
logger.info(`moveAssets params, ${JSON.stringify(params)}`);
|
|
33948
34074
|
const collateralToken = vesuAdapter.config.supportedPositions[0].asset;
|
|
33949
34075
|
const {
|
|
33950
34076
|
collateralPrice
|
|
@@ -33961,18 +34087,58 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33961
34087
|
await proofsInfo.callConstructor({ amount: params.amount })
|
|
33962
34088
|
);
|
|
33963
34089
|
calls.push(call);
|
|
33964
|
-
return
|
|
34090
|
+
return {
|
|
34091
|
+
calls: [call],
|
|
34092
|
+
status: true
|
|
34093
|
+
};
|
|
33965
34094
|
} else if (params.to === Protocols.VAULT.name && params.from === Protocols.EXTENDED.name) {
|
|
34095
|
+
const extendedLeverage = calculateExtendedLevergae();
|
|
34096
|
+
const extendedHoldings = await extendedAdapter.getExtendedDepositAmount();
|
|
34097
|
+
if (!extendedHoldings) {
|
|
34098
|
+
logger.error(`error getting extended holdings: ${extendedHoldings}`);
|
|
34099
|
+
return {
|
|
34100
|
+
calls: [],
|
|
34101
|
+
status: false
|
|
34102
|
+
};
|
|
34103
|
+
}
|
|
34104
|
+
const extendedHoldingAmount = new Web3Number(
|
|
34105
|
+
extendedHoldings.availableForWithdrawal,
|
|
34106
|
+
USDC_TOKEN_DECIMALS
|
|
34107
|
+
);
|
|
34108
|
+
const leftAmountAfterWithdrawalAmountInAccount = params.amount.minus(extendedHoldingAmount);
|
|
34109
|
+
const btcAmount = leftAmountAfterWithdrawalAmountInAccount.dividedBy(collateralPrice.price);
|
|
34110
|
+
const openLongPosition = await extendedAdapter.createOrder(
|
|
34111
|
+
extendedLeverage.toString(),
|
|
34112
|
+
btcAmount.toNumber(),
|
|
34113
|
+
"BUY" /* BUY */
|
|
34114
|
+
);
|
|
34115
|
+
if (!openLongPosition) {
|
|
34116
|
+
logger.error(`error opening long position: ${openLongPosition}`);
|
|
34117
|
+
return {
|
|
34118
|
+
calls: [],
|
|
34119
|
+
status: false
|
|
34120
|
+
};
|
|
34121
|
+
}
|
|
34122
|
+
await new Promise((resolve) => setTimeout(resolve, 5e3));
|
|
33966
34123
|
const withdrawalFromExtended = await extendedAdapter.withdrawFromExtended(params.amount);
|
|
33967
34124
|
if (withdrawalFromExtended) {
|
|
33968
|
-
const
|
|
34125
|
+
const extendedHoldings2 = await extendedAdapter.getExtendedDepositAmount();
|
|
34126
|
+
logger.info(`extendedHoldings after withdrawal ${extendedHoldings2}`);
|
|
34127
|
+
await new Promise((resolve) => setTimeout(resolve, 1e4));
|
|
34128
|
+
const calls = await this.moveAssetsToVaultAllocator(params.amount, extendedAdapter);
|
|
33969
34129
|
if (calls.length > 0) {
|
|
33970
|
-
return
|
|
34130
|
+
return {
|
|
34131
|
+
calls,
|
|
34132
|
+
status: true
|
|
34133
|
+
};
|
|
33971
34134
|
}
|
|
33972
34135
|
} else {
|
|
33973
34136
|
logger.error("withdrawal from extended failed");
|
|
34137
|
+
return {
|
|
34138
|
+
calls: [],
|
|
34139
|
+
status: false
|
|
34140
|
+
};
|
|
33974
34141
|
}
|
|
33975
|
-
return [];
|
|
33976
34142
|
} else if (params.to === Protocols.VAULT.name && params.from === Protocols.VESU.name) {
|
|
33977
34143
|
const vesuAmountInBTC = new Web3Number(
|
|
33978
34144
|
params.amount.dividedBy(collateralPrice.price).toNumber(),
|
|
@@ -33993,7 +34159,10 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
33993
34159
|
await swapProofsInfo.callConstructor({ amount: vesuAmountInBTC })
|
|
33994
34160
|
);
|
|
33995
34161
|
calls.push(swapCall);
|
|
33996
|
-
return
|
|
34162
|
+
return {
|
|
34163
|
+
calls,
|
|
34164
|
+
status: true
|
|
34165
|
+
};
|
|
33997
34166
|
} else if (params.to === Protocols.EXTENDED.name && params.from === Protocols.VESU.name) {
|
|
33998
34167
|
const vesuAmountInBTC = new Web3Number(
|
|
33999
34168
|
params.amount.dividedBy(collateralPrice.price).toNumber(),
|
|
@@ -34024,13 +34193,21 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34024
34193
|
await proofsInfoDeposit.callConstructor({ amount: params.amount })
|
|
34025
34194
|
);
|
|
34026
34195
|
calls.push(callDeposit);
|
|
34027
|
-
return
|
|
34196
|
+
return {
|
|
34197
|
+
calls,
|
|
34198
|
+
status: true
|
|
34199
|
+
};
|
|
34028
34200
|
}
|
|
34029
|
-
|
|
34030
|
-
|
|
34201
|
+
return {
|
|
34202
|
+
calls: [],
|
|
34203
|
+
status: false
|
|
34204
|
+
};
|
|
34031
34205
|
} catch (err) {
|
|
34032
34206
|
logger.error(`error moving assets: ${err}`);
|
|
34033
|
-
return
|
|
34207
|
+
return {
|
|
34208
|
+
calls: [],
|
|
34209
|
+
status: false
|
|
34210
|
+
};
|
|
34034
34211
|
}
|
|
34035
34212
|
}
|
|
34036
34213
|
async handleDeposit() {
|
|
@@ -34089,8 +34266,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34089
34266
|
collateralTokenAmount,
|
|
34090
34267
|
collateralPrice.price
|
|
34091
34268
|
);
|
|
34092
|
-
|
|
34093
|
-
console.log("extendedAmountInBTC", extendedAmountInBTC);
|
|
34269
|
+
logger.info(`vesuAmountInBTC ${vesuAmountInBTC}, extendedAmountInBTC ${extendedAmountInBTC}`);
|
|
34094
34270
|
let calls = [];
|
|
34095
34271
|
if (vesuAmountInBTC.greaterThan(MINIMUM_EXTENDED_POSITION_SIZE)) {
|
|
34096
34272
|
const proofsInfo = vesuAdapter.getProofs(true, this.getMerkleTree());
|
|
@@ -34103,7 +34279,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34103
34279
|
);
|
|
34104
34280
|
const { amount: wbtcAmountInVaultAllocator } = await this.getUnusedBalanceWBTC();
|
|
34105
34281
|
if (wbtcAmountInVaultAllocator.lessThan(vesuAmountInBTC)) {
|
|
34106
|
-
|
|
34282
|
+
logger.info(`WBTC amount in vault allocator is less than vesu amount required in WBTC thus swapping, wbtcAmountInVaultAllocator: ${wbtcAmountInVaultAllocator}, vesuAmountInBTC: ${vesuAmountInBTC}`);
|
|
34107
34283
|
const swapProofsInfo = avnuAdapter.getProofs(true, this.getMerkleTree());
|
|
34108
34284
|
const swapProofGroups = swapProofsInfo.proofs;
|
|
34109
34285
|
const swapCall = this.getManageCall(
|
|
@@ -34147,7 +34323,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34147
34323
|
bid
|
|
34148
34324
|
} = await extendedAdapter.fetchOrderBookBTCUSDC();
|
|
34149
34325
|
const price = ask.plus(bid).dividedBy(2);
|
|
34150
|
-
const btcToken = vesuAdapter.config.supportedPositions[
|
|
34326
|
+
const btcToken = vesuAdapter.config.supportedPositions[0].asset;
|
|
34151
34327
|
const btcPriceAvnu = await avnuAdapter.getPriceOfToken(btcToken.address.toString());
|
|
34152
34328
|
if (!btcPriceAvnu) {
|
|
34153
34329
|
logger.error(`error getting btc price avnu: ${btcPriceAvnu}`);
|
|
@@ -34163,43 +34339,65 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34163
34339
|
async handleWithdraw(amount) {
|
|
34164
34340
|
try {
|
|
34165
34341
|
const usdcBalanceVaultAllocator = await this.getUnusedBalance();
|
|
34166
|
-
const usdcBalanceDifference = amount.minus(usdcBalanceVaultAllocator.usdValue);
|
|
34342
|
+
const usdcBalanceDifference = amount.plus(BUFFER_USDC_IN_WITHDRAWAL).minus(usdcBalanceVaultAllocator.usdValue);
|
|
34167
34343
|
logger.info(`usdcBalanceDifference, ${usdcBalanceDifference.toNumber()}`);
|
|
34344
|
+
let calls = [];
|
|
34345
|
+
let status = true;
|
|
34168
34346
|
if (usdcBalanceDifference.lessThan(0)) {
|
|
34169
|
-
const
|
|
34170
|
-
amount
|
|
34347
|
+
const withdrawCall2 = await this.getBringLiquidityCall({
|
|
34348
|
+
amount: usdcBalanceVaultAllocator.amount
|
|
34171
34349
|
});
|
|
34172
|
-
logger.info("withdraw call",
|
|
34173
|
-
|
|
34350
|
+
logger.info("withdraw call", withdrawCall2);
|
|
34351
|
+
calls.push(withdrawCall2);
|
|
34352
|
+
return {
|
|
34353
|
+
calls,
|
|
34354
|
+
status: true
|
|
34355
|
+
};
|
|
34174
34356
|
}
|
|
34175
34357
|
const vesuAdapter = await this.getVesuAdapter();
|
|
34176
34358
|
const extendedAdapter = await this.getExtendedAdapter();
|
|
34177
34359
|
if (!vesuAdapter || !extendedAdapter || !extendedAdapter.client) {
|
|
34360
|
+
status = false;
|
|
34178
34361
|
logger.error(
|
|
34179
34362
|
`vesu or extended adapter not found: vesuAdapter=${vesuAdapter}, extendedAdapter=${extendedAdapter}`
|
|
34180
34363
|
);
|
|
34181
|
-
return
|
|
34364
|
+
return {
|
|
34365
|
+
calls,
|
|
34366
|
+
status
|
|
34367
|
+
};
|
|
34182
34368
|
}
|
|
34183
34369
|
const { collateralTokenAmount } = await vesuAdapter.vesuAdapter.getAssetPrices();
|
|
34184
34370
|
const {
|
|
34185
34371
|
collateralPrice
|
|
34186
34372
|
} = await this.getAssetPrices();
|
|
34187
34373
|
const extendedPositon = await extendedAdapter.getAllOpenPositions();
|
|
34374
|
+
if (!extendedPositon) {
|
|
34375
|
+
status = false;
|
|
34376
|
+
logger.error("error getting extended position", extendedPositon);
|
|
34377
|
+
return {
|
|
34378
|
+
calls,
|
|
34379
|
+
status
|
|
34380
|
+
};
|
|
34381
|
+
}
|
|
34188
34382
|
const amountDistributionForWithdrawal = await calculateAmountDistributionForWithdrawal(
|
|
34189
|
-
|
|
34383
|
+
usdcBalanceDifference,
|
|
34190
34384
|
collateralPrice.price,
|
|
34191
34385
|
collateralTokenAmount,
|
|
34192
34386
|
extendedPositon
|
|
34193
34387
|
);
|
|
34194
34388
|
if (!amountDistributionForWithdrawal) {
|
|
34389
|
+
status = false;
|
|
34195
34390
|
logger.error(
|
|
34196
34391
|
`error calculating amount distribution for withdrawal: ${amountDistributionForWithdrawal}`
|
|
34197
34392
|
);
|
|
34198
|
-
return
|
|
34393
|
+
return {
|
|
34394
|
+
calls,
|
|
34395
|
+
status
|
|
34396
|
+
};
|
|
34199
34397
|
}
|
|
34200
34398
|
const { vesu_amount, extended_amount } = amountDistributionForWithdrawal;
|
|
34201
|
-
if (vesu_amount.greaterThan(0)) {
|
|
34202
|
-
const
|
|
34399
|
+
if (status && vesu_amount.greaterThan(0)) {
|
|
34400
|
+
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
34203
34401
|
{
|
|
34204
34402
|
amount: vesu_amount,
|
|
34205
34403
|
from: Protocols.VESU.name,
|
|
@@ -34208,10 +34406,11 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34208
34406
|
extendedAdapter,
|
|
34209
34407
|
vesuAdapter
|
|
34210
34408
|
);
|
|
34211
|
-
|
|
34409
|
+
status = vesuStatus;
|
|
34410
|
+
calls.push(...vesuCalls);
|
|
34212
34411
|
}
|
|
34213
|
-
if (extended_amount.greaterThan(0)) {
|
|
34214
|
-
const
|
|
34412
|
+
if (status && extended_amount.greaterThan(0)) {
|
|
34413
|
+
const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
|
|
34215
34414
|
{
|
|
34216
34415
|
amount: extended_amount,
|
|
34217
34416
|
from: Protocols.EXTENDED.name,
|
|
@@ -34220,12 +34419,32 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34220
34419
|
extendedAdapter,
|
|
34221
34420
|
vesuAdapter
|
|
34222
34421
|
);
|
|
34223
|
-
|
|
34422
|
+
status = extendedStatus;
|
|
34423
|
+
if (status) {
|
|
34424
|
+
calls.push(...extendedCalls);
|
|
34425
|
+
} else {
|
|
34426
|
+
logger.error("error moving assets to vault: extendedStatus: ${extendedStatus}");
|
|
34427
|
+
return {
|
|
34428
|
+
calls: [],
|
|
34429
|
+
status
|
|
34430
|
+
};
|
|
34431
|
+
}
|
|
34224
34432
|
}
|
|
34225
|
-
|
|
34433
|
+
const withdrawCall = await this.getBringLiquidityCall({
|
|
34434
|
+
amount
|
|
34435
|
+
});
|
|
34436
|
+
logger.info("withdraw call", withdrawCall);
|
|
34437
|
+
calls.push(withdrawCall);
|
|
34438
|
+
return {
|
|
34439
|
+
calls,
|
|
34440
|
+
status
|
|
34441
|
+
};
|
|
34226
34442
|
} catch (err) {
|
|
34227
34443
|
logger.error(`error handling withdrawal: ${err}`);
|
|
34228
|
-
return
|
|
34444
|
+
return {
|
|
34445
|
+
calls: [],
|
|
34446
|
+
status: false
|
|
34447
|
+
};
|
|
34229
34448
|
}
|
|
34230
34449
|
}
|
|
34231
34450
|
async getAUM() {
|
|
@@ -34359,6 +34578,7 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
34359
34578
|
() => vesuMultiplyAdapter.getWithdrawLeaf()
|
|
34360
34579
|
);
|
|
34361
34580
|
vaultSettings.leafAdapters.push(() => extendedAdapter.getDepositLeaf());
|
|
34581
|
+
vaultSettings.leafAdapters.push(() => extendedAdapter.getSwapFromLegacyLeaf());
|
|
34362
34582
|
vaultSettings.leafAdapters.push(() => avnuAdapter.getDepositLeaf());
|
|
34363
34583
|
vaultSettings.leafAdapters.push(() => avnuAdapter.getWithdrawLeaf());
|
|
34364
34584
|
vaultSettings.leafAdapters.push(
|