@strkfarm/sdk 2.0.0-dev.5 → 2.0.0-dev.7
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 +121 -61
- package/dist/index.browser.mjs +121 -61
- package/dist/index.d.ts +7 -1
- package/dist/index.js +121 -61
- package/dist/index.mjs +121 -61
- package/package.json +1 -1
- package/src/strategies/universal-adapters/avnu-adapter.ts +1 -1
- package/src/strategies/universal-adapters/extended-adapter.ts +157 -74
- package/src/strategies/universal-adapters/vesu-multiply-adapter.ts +3 -1
- package/src/strategies/universal-lst-muliplier-strategy.tsx +2 -1
- package/src/strategies/vesu-extended-strategy/utils/constants.ts +1 -1
- package/src/strategies/vesu-extended-strategy/utils/helper.ts +2 -4
- package/src/strategies/vesu-extended-strategy/vesu-extended-strategy.tsx +22 -16
package/dist/index.js
CHANGED
|
@@ -28168,7 +28168,7 @@ var STRK_API_RPC = process.env.STRK_API_RPC ?? "https://mainnet.starknet.a5a.ch"
|
|
|
28168
28168
|
var MAX_RETRIES = Number(process.env.MAX_RETRIES ?? 3);
|
|
28169
28169
|
var MAX_DELAY = Number(process.env.MAX_DELAY ?? 100);
|
|
28170
28170
|
var EXTEND_MARKET_NAME = "BTC-USD";
|
|
28171
|
-
var LIMIT_BALANCE = Number(process.env.LIMIT_BALANCE ??
|
|
28171
|
+
var LIMIT_BALANCE = Number(process.env.LIMIT_BALANCE ?? 0.05);
|
|
28172
28172
|
var REBALANCER_INTERVAL = Number(process.env.REBALANCER_INTERVAL ?? 18e4);
|
|
28173
28173
|
var WITHDRAWAL_INTERVAL = Number(process.env.WITHDRAWAL_INTERVAL ?? 18e6);
|
|
28174
28174
|
var INVESTING_INTERVAL = Number(process.env.INVESTING_INTERVAL ?? 18e4);
|
|
@@ -28207,8 +28207,7 @@ var calculateAmountDistribution = async (amount, client, marketName, collateralP
|
|
|
28207
28207
|
vesu_leverage: 0
|
|
28208
28208
|
};
|
|
28209
28209
|
}
|
|
28210
|
-
const
|
|
28211
|
-
const extendedExposureUSD = extendedBTCExposure.multipliedBy(collateralPrice);
|
|
28210
|
+
const extendedExposureUSD = extendedPosition.length > 0 ? new Web3Number(extendedPosition[0].value, WBTC_TOKEN_DECIMALS) : new Web3Number(0, WBTC_TOKEN_DECIMALS);
|
|
28212
28211
|
const vesuBTCExposureUSD = collateralUnits.multipliedBy(collateralPrice);
|
|
28213
28212
|
const numerator1 = vesu_leverage * amount + vesuBTCExposureUSD.toNumber();
|
|
28214
28213
|
const numerator2 = extendedExposureUSD.toNumber();
|
|
@@ -28426,6 +28425,7 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
28426
28425
|
vaultAllocator: config.vaultAllocator,
|
|
28427
28426
|
id: ""
|
|
28428
28427
|
});
|
|
28428
|
+
this.minimumVesuMovementAmount = config.minimumVesuMovementAmount ?? 5;
|
|
28429
28429
|
this.tokenMarketData = new TokenMarketData(
|
|
28430
28430
|
this.config.pricer,
|
|
28431
28431
|
this.config.networkConfig
|
|
@@ -29772,12 +29772,17 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29772
29772
|
timeout: this.config.extendedTimeout,
|
|
29773
29773
|
retries: this.config.extendedRetries
|
|
29774
29774
|
});
|
|
29775
|
+
this.minimumExtendedMovementAmount = this.config.minimumExtendedMovementAmount ?? 5;
|
|
29775
29776
|
this.client = client;
|
|
29777
|
+
this.retryDelayForOrderStatus = this.config.retryDelayForOrderStatus ?? 3e3;
|
|
29776
29778
|
}
|
|
29777
29779
|
//abstract means the method has no implementation in this class; instead, child classes must implement it.
|
|
29778
29780
|
async getAPY(supportedPosition) {
|
|
29779
29781
|
const side = supportedPosition.isDebt ? "LONG" : "SHORT";
|
|
29780
|
-
const fundingRates = await this.client.getFundingRates(
|
|
29782
|
+
const fundingRates = await this.client.getFundingRates(
|
|
29783
|
+
this.config.extendedMarketName,
|
|
29784
|
+
side
|
|
29785
|
+
);
|
|
29781
29786
|
if (fundingRates.status !== "OK") {
|
|
29782
29787
|
logger.error("error getting funding rates", fundingRates);
|
|
29783
29788
|
return { apy: 0, type: "base" /* BASE */ };
|
|
@@ -29821,14 +29826,14 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29821
29826
|
});
|
|
29822
29827
|
}
|
|
29823
29828
|
_getDepositLeaf() {
|
|
29824
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29829
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
29830
|
+
(token) => token.symbol === "USDCe"
|
|
29831
|
+
);
|
|
29825
29832
|
return [
|
|
29826
29833
|
{
|
|
29827
29834
|
target: this.config.supportedPositions[0].asset.address,
|
|
29828
29835
|
method: "approve",
|
|
29829
|
-
packedArguments: [
|
|
29830
|
-
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
|
|
29831
|
-
],
|
|
29836
|
+
packedArguments: [AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()],
|
|
29832
29837
|
id: `extended_approve_${this.config.supportedPositions[0].asset.symbol}`,
|
|
29833
29838
|
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29834
29839
|
},
|
|
@@ -29859,25 +29864,33 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29859
29864
|
const leafConfigs = this._getSwapFromLegacyLeaf();
|
|
29860
29865
|
const leaves = leafConfigs.map((config) => {
|
|
29861
29866
|
const { target, method, packedArguments, sanitizer, id } = config;
|
|
29862
|
-
const leaf = this.constructSimpleLeafData(
|
|
29863
|
-
|
|
29864
|
-
|
|
29865
|
-
|
|
29866
|
-
|
|
29867
|
-
|
|
29867
|
+
const leaf = this.constructSimpleLeafData(
|
|
29868
|
+
{
|
|
29869
|
+
id,
|
|
29870
|
+
target,
|
|
29871
|
+
method,
|
|
29872
|
+
packedArguments
|
|
29873
|
+
},
|
|
29874
|
+
sanitizer
|
|
29875
|
+
);
|
|
29868
29876
|
return leaf;
|
|
29869
29877
|
});
|
|
29870
|
-
return {
|
|
29878
|
+
return {
|
|
29879
|
+
leaves,
|
|
29880
|
+
callConstructor: this.getSwapFromLegacyCall.bind(
|
|
29881
|
+
this
|
|
29882
|
+
)
|
|
29883
|
+
};
|
|
29871
29884
|
}
|
|
29872
29885
|
_getSwapFromLegacyLeaf() {
|
|
29873
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29886
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
29887
|
+
(token) => token.symbol === "USDCe"
|
|
29888
|
+
);
|
|
29874
29889
|
return [
|
|
29875
29890
|
{
|
|
29876
29891
|
target: usdceToken.address,
|
|
29877
29892
|
method: "approve",
|
|
29878
|
-
packedArguments: [
|
|
29879
|
-
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
|
|
29880
|
-
],
|
|
29893
|
+
packedArguments: [AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()],
|
|
29881
29894
|
id: `extendedswaplegacyapprove_${usdceToken.symbol}`,
|
|
29882
29895
|
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29883
29896
|
},
|
|
@@ -29896,11 +29909,13 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29896
29909
|
async getDepositCall(params) {
|
|
29897
29910
|
try {
|
|
29898
29911
|
const usdcToken = this.config.supportedPositions[0].asset;
|
|
29899
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29900
|
-
|
|
29901
|
-
|
|
29912
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
29913
|
+
(token) => token.symbol === "USDCe"
|
|
29914
|
+
);
|
|
29915
|
+
const salt = Math.floor(Math.random() * 10 ** usdcToken.decimals);
|
|
29916
|
+
const amount = import_starknet22.uint256.bnToUint256(
|
|
29917
|
+
params.amount.multipliedBy(10).toWei()
|
|
29902
29918
|
);
|
|
29903
|
-
const amount = import_starknet22.uint256.bnToUint256(params.amount.multipliedBy(10).toWei());
|
|
29904
29919
|
const quotes = await this.config.avnuAdapter.getQuotesAvnu(
|
|
29905
29920
|
usdcToken.address.toString(),
|
|
29906
29921
|
usdceToken.address.toString(),
|
|
@@ -29913,7 +29928,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29913
29928
|
logger.error("error getting quotes from avnu");
|
|
29914
29929
|
return [];
|
|
29915
29930
|
}
|
|
29916
|
-
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
29931
|
+
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
29932
|
+
quotes
|
|
29933
|
+
);
|
|
29917
29934
|
const swapCallData = getCalldata[0];
|
|
29918
29935
|
return [
|
|
29919
29936
|
{
|
|
@@ -29989,8 +30006,12 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29989
30006
|
async getSwapFromLegacyCall(params) {
|
|
29990
30007
|
try {
|
|
29991
30008
|
const usdcToken = this.config.supportedPositions[0].asset;
|
|
29992
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29993
|
-
|
|
30009
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
30010
|
+
(token) => token.symbol === "USDCe"
|
|
30011
|
+
);
|
|
30012
|
+
const amount = import_starknet22.uint256.bnToUint256(
|
|
30013
|
+
params.amount.multipliedBy(10).toWei()
|
|
30014
|
+
);
|
|
29994
30015
|
const quotes = await this.config.avnuAdapter.getQuotesAvnu(
|
|
29995
30016
|
usdceToken.address.toString(),
|
|
29996
30017
|
usdcToken.address.toString(),
|
|
@@ -30003,7 +30024,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30003
30024
|
logger.error("error getting quotes from avnu");
|
|
30004
30025
|
return [];
|
|
30005
30026
|
}
|
|
30006
|
-
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
30027
|
+
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
30028
|
+
quotes
|
|
30029
|
+
);
|
|
30007
30030
|
const swapCallData = getCalldata[0];
|
|
30008
30031
|
return [
|
|
30009
30032
|
{
|
|
@@ -30051,9 +30074,14 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30051
30074
|
if (!this.client) {
|
|
30052
30075
|
throw new Error("Client not initialized");
|
|
30053
30076
|
}
|
|
30054
|
-
const withdrawalRequest = await this.client.withdrawUSDC(
|
|
30077
|
+
const withdrawalRequest = await this.client.withdrawUSDC(
|
|
30078
|
+
amount.toFixed(2)
|
|
30079
|
+
);
|
|
30055
30080
|
if (withdrawalRequest.status === "OK") {
|
|
30056
|
-
const withdrawalStatus = await this.getDepositOrWithdrawalStatus(
|
|
30081
|
+
const withdrawalStatus = await this.getDepositOrWithdrawalStatus(
|
|
30082
|
+
withdrawalRequest.data,
|
|
30083
|
+
"WITHDRAWAL" /* WITHDRAWAL */
|
|
30084
|
+
);
|
|
30057
30085
|
return withdrawalStatus;
|
|
30058
30086
|
}
|
|
30059
30087
|
return false;
|
|
@@ -30126,18 +30154,34 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30126
30154
|
logger.error("error initializing client");
|
|
30127
30155
|
return null;
|
|
30128
30156
|
}
|
|
30129
|
-
|
|
30130
|
-
const orderhistory = await this.getOrderHistory(marketName);
|
|
30157
|
+
let orderhistory = await this.getOrderHistory(marketName);
|
|
30131
30158
|
if (!orderhistory || orderhistory.length === 0) {
|
|
30132
|
-
logger.error(`error getting order: ${orderId}`);
|
|
30133
|
-
|
|
30159
|
+
logger.error(`error getting order history: ${orderId}`);
|
|
30160
|
+
} else {
|
|
30161
|
+
const order = orderhistory.slice(0, 10).find((order2) => order2.id.toString() === orderId);
|
|
30162
|
+
if (order) {
|
|
30163
|
+
return order;
|
|
30164
|
+
}
|
|
30134
30165
|
}
|
|
30135
|
-
|
|
30136
|
-
|
|
30137
|
-
|
|
30138
|
-
|
|
30166
|
+
for (let attempt = 1; attempt <= 5; attempt++) {
|
|
30167
|
+
await new Promise((resolve) => setTimeout(resolve, this.retryDelayForOrderStatus));
|
|
30168
|
+
orderhistory = await this.getOrderHistory(marketName);
|
|
30169
|
+
if (!orderhistory || orderhistory.length === 0) {
|
|
30170
|
+
logger.error(
|
|
30171
|
+
`error getting order history on retry ${attempt}: ${orderId}`
|
|
30172
|
+
);
|
|
30173
|
+
continue;
|
|
30174
|
+
}
|
|
30175
|
+
const order = orderhistory.slice(0, 5).find((order2) => order2.id.toString() === orderId);
|
|
30176
|
+
if (order && order.status === "FILLED" /* FILLED */) {
|
|
30177
|
+
return order;
|
|
30178
|
+
}
|
|
30179
|
+
logger.error(
|
|
30180
|
+
`order not found in top 15 entries on retry ${attempt}: ${orderId}`
|
|
30181
|
+
);
|
|
30139
30182
|
}
|
|
30140
|
-
|
|
30183
|
+
logger.error(`error getting order after all retries: ${orderId}`);
|
|
30184
|
+
return null;
|
|
30141
30185
|
}
|
|
30142
30186
|
async fetchOrderBookBTCUSDC() {
|
|
30143
30187
|
try {
|
|
@@ -30210,8 +30254,11 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30210
30254
|
return null;
|
|
30211
30255
|
}
|
|
30212
30256
|
await new Promise((resolve) => setTimeout(resolve, 5e3));
|
|
30213
|
-
const openOrder = await this.getOrderStatus(
|
|
30214
|
-
|
|
30257
|
+
const openOrder = await this.getOrderStatus(
|
|
30258
|
+
result.position_id,
|
|
30259
|
+
this.config.extendedMarketName
|
|
30260
|
+
);
|
|
30261
|
+
if (!openOrder) {
|
|
30215
30262
|
if (attempt >= maxAttempts) {
|
|
30216
30263
|
logger.error("Max retries reached \u2014 could not verify open position");
|
|
30217
30264
|
return null;
|
|
@@ -30233,7 +30280,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30233
30280
|
};
|
|
30234
30281
|
}
|
|
30235
30282
|
} catch (err) {
|
|
30236
|
-
logger.error(
|
|
30283
|
+
logger.error(
|
|
30284
|
+
`createShortOrder failed on attempt ${attempt}: ${err.message}`
|
|
30285
|
+
);
|
|
30237
30286
|
if (attempt < maxAttempts) {
|
|
30238
30287
|
const backoff = 1200 * attempt;
|
|
30239
30288
|
logger.info(`Retrying after ${backoff}ms...`);
|
|
@@ -30278,13 +30327,17 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30278
30327
|
operationsStatus: ["COMPLETED" /* COMPLETED */]
|
|
30279
30328
|
});
|
|
30280
30329
|
if (operationsType === "DEPOSIT" /* DEPOSIT */) {
|
|
30281
|
-
const myTransferStatus = transferHistory.data.find(
|
|
30330
|
+
const myTransferStatus = transferHistory.data.find(
|
|
30331
|
+
(operation) => operation.transactionHash === orderId
|
|
30332
|
+
);
|
|
30282
30333
|
if (!myTransferStatus) {
|
|
30283
30334
|
return true;
|
|
30284
30335
|
}
|
|
30285
30336
|
return true;
|
|
30286
30337
|
} else {
|
|
30287
|
-
const myTransferStatus = transferHistory.data.find(
|
|
30338
|
+
const myTransferStatus = transferHistory.data.find(
|
|
30339
|
+
(operation) => operation.id.toString() === orderId.toString()
|
|
30340
|
+
);
|
|
30288
30341
|
if (!myTransferStatus) {
|
|
30289
30342
|
return true;
|
|
30290
30343
|
}
|
|
@@ -33559,7 +33612,8 @@ function getLooperSettings(lstSymbol, underlyingSymbol, vaultSettings, pool1) {
|
|
|
33559
33612
|
minHealthFactor: vaultSettings.minHealthFactor,
|
|
33560
33613
|
quoteAmountToFetchPrice: vaultSettings.quoteAmountToFetchPrice,
|
|
33561
33614
|
...baseAdapterConfig,
|
|
33562
|
-
supportedPositions: [{ asset: lstToken, isDebt: false }, { asset: Global.getDefaultTokens().find((token) => token.symbol === position), isDebt: true }]
|
|
33615
|
+
supportedPositions: [{ asset: lstToken, isDebt: false }, { asset: Global.getDefaultTokens().find((token) => token.symbol === position), isDebt: true }],
|
|
33616
|
+
minimumVesuMovementAmount: 0
|
|
33563
33617
|
}));
|
|
33564
33618
|
const unusedBalanceAdapter = new UnusedBalanceAdapter({
|
|
33565
33619
|
...baseAdapterConfig
|
|
@@ -34020,7 +34074,7 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
34020
34074
|
}
|
|
34021
34075
|
throw new Error("Failed to fetch quote after retries");
|
|
34022
34076
|
}
|
|
34023
|
-
async getQuotesAvnu(from_token_address, to_token_address, amount, takerAddress, toTokenDecimals, usdcToBtc, maxIterations = 5, tolerance =
|
|
34077
|
+
async getQuotesAvnu(from_token_address, to_token_address, amount, takerAddress, toTokenDecimals, usdcToBtc, maxIterations = 5, tolerance = 5e3) {
|
|
34024
34078
|
try {
|
|
34025
34079
|
const fromToken = this.config.supportedPositions[0].asset;
|
|
34026
34080
|
const toToken = this.config.supportedPositions[1].asset;
|
|
@@ -34260,7 +34314,8 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34260
34314
|
}
|
|
34261
34315
|
const balance = await this.getUnusedBalance();
|
|
34262
34316
|
const usdcBalanceOnExtended = await extendedAdapter.getExtendedDepositAmount();
|
|
34263
|
-
const amountToInvest = balance.
|
|
34317
|
+
const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).multipliedBy(1 - LIMIT_BALANCE);
|
|
34318
|
+
logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldInvest amountToInvest: ${amountToInvest.toNumber()}`);
|
|
34264
34319
|
if (amountToInvest.lessThan(0)) {
|
|
34265
34320
|
return {
|
|
34266
34321
|
shouldInvest: false,
|
|
@@ -34313,6 +34368,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34313
34368
|
vesuLeverage: 0
|
|
34314
34369
|
};
|
|
34315
34370
|
}
|
|
34371
|
+
logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldInvest vesu_amount: ${vesu_amount.toNumber()}, extended_amount: ${extended_amount.toNumber()}`);
|
|
34316
34372
|
return {
|
|
34317
34373
|
shouldInvest: true,
|
|
34318
34374
|
vesuAmount: vesu_amount,
|
|
@@ -34346,7 +34402,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34346
34402
|
);
|
|
34347
34403
|
return calls;
|
|
34348
34404
|
}
|
|
34349
|
-
if (extendedAmount.
|
|
34405
|
+
if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
|
|
34350
34406
|
try {
|
|
34351
34407
|
const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
|
|
34352
34408
|
{
|
|
@@ -34366,7 +34422,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34366
34422
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
34367
34423
|
}
|
|
34368
34424
|
}
|
|
34369
|
-
if (vesuAmount.lessThan(
|
|
34425
|
+
if (vesuAmount.isNegative() && vesuAmount.lessThan(vesuAdapter.minimumVesuMovementAmount)) {
|
|
34370
34426
|
try {
|
|
34371
34427
|
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
34372
34428
|
{
|
|
@@ -34392,15 +34448,15 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34392
34448
|
}
|
|
34393
34449
|
const usdcAmountInWallet = (await this.getUnusedBalance()).amount;
|
|
34394
34450
|
const usdcAmountOnExtended = parseFloat(
|
|
34395
|
-
extendedHoldings.
|
|
34451
|
+
extendedHoldings.availableForWithdrawal
|
|
34396
34452
|
);
|
|
34397
|
-
if (extendedAmount.
|
|
34453
|
+
if (extendedAmount.minus(usdcAmountOnExtended).greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
|
|
34398
34454
|
try {
|
|
34399
34455
|
const { calls: extendedCalls } = await this.moveAssets(
|
|
34400
34456
|
{
|
|
34401
34457
|
to: Protocols.EXTENDED.name,
|
|
34402
34458
|
from: Protocols.VAULT.name,
|
|
34403
|
-
amount: extendedAmount.
|
|
34459
|
+
amount: extendedAmount.minus(usdcAmountOnExtended)
|
|
34404
34460
|
},
|
|
34405
34461
|
extendedAdapter,
|
|
34406
34462
|
vesuAdapter
|
|
@@ -34410,7 +34466,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34410
34466
|
logger.error(`Failed moving assets to extended: ${err}`);
|
|
34411
34467
|
}
|
|
34412
34468
|
}
|
|
34413
|
-
if (vesuAmount.minus(usdcAmountInWallet).greaterThan(
|
|
34469
|
+
if (vesuAmount.minus(usdcAmountInWallet).greaterThan(vesuAdapter.minimumVesuMovementAmount)) {
|
|
34414
34470
|
try {
|
|
34415
34471
|
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
34416
34472
|
{
|
|
@@ -34638,7 +34694,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34638
34694
|
};
|
|
34639
34695
|
}
|
|
34640
34696
|
const extendedHoldingAmount = new Web3Number(
|
|
34641
|
-
extendedHoldings.
|
|
34697
|
+
extendedHoldings.availableForWithdrawal,
|
|
34642
34698
|
USDC_TOKEN_DECIMALS
|
|
34643
34699
|
);
|
|
34644
34700
|
const {
|
|
@@ -34698,7 +34754,6 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34698
34754
|
extendedAmountInBTC: new Web3Number(0, 0),
|
|
34699
34755
|
calls: []
|
|
34700
34756
|
};
|
|
34701
|
-
;
|
|
34702
34757
|
}
|
|
34703
34758
|
}
|
|
34704
34759
|
async checkPriceDifferenceBetweenAvnuAndExtended(extendedAdapter, vesuAdapter, avnuAdapter) {
|
|
@@ -34876,7 +34931,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34876
34931
|
};
|
|
34877
34932
|
}
|
|
34878
34933
|
};
|
|
34879
|
-
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, extendedBackendUrl, extendedApiKey, vaultIdExtended) {
|
|
34934
|
+
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus) {
|
|
34880
34935
|
vaultSettings.leafAdapters = [];
|
|
34881
34936
|
const wbtcToken = Global.getDefaultTokens().find(
|
|
34882
34937
|
(token) => token.symbol === lstSymbol
|
|
@@ -34916,7 +34971,10 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
34916
34971
|
extendedBaseUrl: "https://api.starknet.extended.exchange",
|
|
34917
34972
|
extendedMarketName: "BTC-USD",
|
|
34918
34973
|
extendedPrecision: 5,
|
|
34919
|
-
avnuAdapter
|
|
34974
|
+
avnuAdapter,
|
|
34975
|
+
retryDelayForOrderStatus: minimumExtendedRetriesDelayForOrderStatus ?? 3e3,
|
|
34976
|
+
minimumExtendedMovementAmount: minimumExtendedMovementAmount ?? 5
|
|
34977
|
+
//5 usdcs
|
|
34920
34978
|
});
|
|
34921
34979
|
const vesuMultiplyAdapter = new VesuMultiplyAdapter({
|
|
34922
34980
|
poolId: pool1,
|
|
@@ -34929,7 +34987,9 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
34929
34987
|
supportedPositions: [
|
|
34930
34988
|
{ asset: wbtcToken, isDebt: false },
|
|
34931
34989
|
{ asset: usdcToken, isDebt: true }
|
|
34932
|
-
]
|
|
34990
|
+
],
|
|
34991
|
+
minimumVesuMovementAmount: minimumVesuMovementAmount ?? 5
|
|
34992
|
+
//5 usdc
|
|
34933
34993
|
});
|
|
34934
34994
|
const unusedBalanceAdapter = new UnusedBalanceAdapter({
|
|
34935
34995
|
...baseAdapterConfig
|
|
@@ -35044,12 +35104,12 @@ var re7UsdcPrimeDevansh = {
|
|
|
35044
35104
|
borrowable_assets: [Global.getDefaultTokens().find((token) => token.symbol === "WBTC")],
|
|
35045
35105
|
minimumWBTCDifferenceForAvnuSwap: MINIMUM_WBTC_DIFFERENCE_FOR_AVNU_SWAP
|
|
35046
35106
|
};
|
|
35047
|
-
var VesuExtendedTestStrategies = (extendedBackendUrl, extendedApiKey, vaultIdExtended) => {
|
|
35107
|
+
var VesuExtendedTestStrategies = (extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus) => {
|
|
35048
35108
|
return [
|
|
35049
|
-
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false, extendedBackendUrl, extendedApiKey, vaultIdExtended)
|
|
35109
|
+
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus)
|
|
35050
35110
|
];
|
|
35051
35111
|
};
|
|
35052
|
-
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST, extendedBackendUrl, extendedApiKey, vaultIdExtended) {
|
|
35112
|
+
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus) {
|
|
35053
35113
|
return {
|
|
35054
35114
|
name: `Extended Test ${underlyingSymbol}`,
|
|
35055
35115
|
description: getDescription2(lstSymbol, underlyingSymbol),
|
|
@@ -35057,7 +35117,7 @@ function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses,
|
|
|
35057
35117
|
launchBlock: 0,
|
|
35058
35118
|
type: "Other",
|
|
35059
35119
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === underlyingSymbol)],
|
|
35060
|
-
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime, extendedBackendUrl, extendedApiKey, vaultIdExtended),
|
|
35120
|
+
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus),
|
|
35061
35121
|
risk: {
|
|
35062
35122
|
riskFactor: _riskFactor3,
|
|
35063
35123
|
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|