@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.browser.mjs
CHANGED
|
@@ -28351,7 +28351,7 @@ var STRK_API_RPC = process.env.STRK_API_RPC ?? "https://mainnet.starknet.a5a.ch"
|
|
|
28351
28351
|
var MAX_RETRIES = Number(process.env.MAX_RETRIES ?? 3);
|
|
28352
28352
|
var MAX_DELAY = Number(process.env.MAX_DELAY ?? 100);
|
|
28353
28353
|
var EXTEND_MARKET_NAME = "BTC-USD";
|
|
28354
|
-
var LIMIT_BALANCE = Number(process.env.LIMIT_BALANCE ??
|
|
28354
|
+
var LIMIT_BALANCE = Number(process.env.LIMIT_BALANCE ?? 0.05);
|
|
28355
28355
|
var REBALANCER_INTERVAL = Number(process.env.REBALANCER_INTERVAL ?? 18e4);
|
|
28356
28356
|
var WITHDRAWAL_INTERVAL = Number(process.env.WITHDRAWAL_INTERVAL ?? 18e6);
|
|
28357
28357
|
var INVESTING_INTERVAL = Number(process.env.INVESTING_INTERVAL ?? 18e4);
|
|
@@ -28390,8 +28390,7 @@ var calculateAmountDistribution = async (amount, client, marketName, collateralP
|
|
|
28390
28390
|
vesu_leverage: 0
|
|
28391
28391
|
};
|
|
28392
28392
|
}
|
|
28393
|
-
const
|
|
28394
|
-
const extendedExposureUSD = extendedBTCExposure.multipliedBy(collateralPrice);
|
|
28393
|
+
const extendedExposureUSD = extendedPosition.length > 0 ? new Web3Number(extendedPosition[0].value, WBTC_TOKEN_DECIMALS) : new Web3Number(0, WBTC_TOKEN_DECIMALS);
|
|
28395
28394
|
const vesuBTCExposureUSD = collateralUnits.multipliedBy(collateralPrice);
|
|
28396
28395
|
const numerator1 = vesu_leverage * amount + vesuBTCExposureUSD.toNumber();
|
|
28397
28396
|
const numerator2 = extendedExposureUSD.toNumber();
|
|
@@ -28609,6 +28608,7 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
28609
28608
|
vaultAllocator: config.vaultAllocator,
|
|
28610
28609
|
id: ""
|
|
28611
28610
|
});
|
|
28611
|
+
this.minimumVesuMovementAmount = config.minimumVesuMovementAmount ?? 5;
|
|
28612
28612
|
this.tokenMarketData = new TokenMarketData(
|
|
28613
28613
|
this.config.pricer,
|
|
28614
28614
|
this.config.networkConfig
|
|
@@ -29619,12 +29619,17 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29619
29619
|
timeout: this.config.extendedTimeout,
|
|
29620
29620
|
retries: this.config.extendedRetries
|
|
29621
29621
|
});
|
|
29622
|
+
this.minimumExtendedMovementAmount = this.config.minimumExtendedMovementAmount ?? 5;
|
|
29622
29623
|
this.client = client;
|
|
29624
|
+
this.retryDelayForOrderStatus = this.config.retryDelayForOrderStatus ?? 3e3;
|
|
29623
29625
|
}
|
|
29624
29626
|
//abstract means the method has no implementation in this class; instead, child classes must implement it.
|
|
29625
29627
|
async getAPY(supportedPosition) {
|
|
29626
29628
|
const side = supportedPosition.isDebt ? "LONG" : "SHORT";
|
|
29627
|
-
const fundingRates = await this.client.getFundingRates(
|
|
29629
|
+
const fundingRates = await this.client.getFundingRates(
|
|
29630
|
+
this.config.extendedMarketName,
|
|
29631
|
+
side
|
|
29632
|
+
);
|
|
29628
29633
|
if (fundingRates.status !== "OK") {
|
|
29629
29634
|
logger.error("error getting funding rates", fundingRates);
|
|
29630
29635
|
return { apy: 0, type: "base" /* BASE */ };
|
|
@@ -29668,14 +29673,14 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29668
29673
|
});
|
|
29669
29674
|
}
|
|
29670
29675
|
_getDepositLeaf() {
|
|
29671
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29676
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
29677
|
+
(token) => token.symbol === "USDCe"
|
|
29678
|
+
);
|
|
29672
29679
|
return [
|
|
29673
29680
|
{
|
|
29674
29681
|
target: this.config.supportedPositions[0].asset.address,
|
|
29675
29682
|
method: "approve",
|
|
29676
|
-
packedArguments: [
|
|
29677
|
-
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
|
|
29678
|
-
],
|
|
29683
|
+
packedArguments: [AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()],
|
|
29679
29684
|
id: `extended_approve_${this.config.supportedPositions[0].asset.symbol}`,
|
|
29680
29685
|
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29681
29686
|
},
|
|
@@ -29706,25 +29711,33 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29706
29711
|
const leafConfigs = this._getSwapFromLegacyLeaf();
|
|
29707
29712
|
const leaves = leafConfigs.map((config) => {
|
|
29708
29713
|
const { target, method, packedArguments, sanitizer, id } = config;
|
|
29709
|
-
const leaf = this.constructSimpleLeafData(
|
|
29710
|
-
|
|
29711
|
-
|
|
29712
|
-
|
|
29713
|
-
|
|
29714
|
-
|
|
29714
|
+
const leaf = this.constructSimpleLeafData(
|
|
29715
|
+
{
|
|
29716
|
+
id,
|
|
29717
|
+
target,
|
|
29718
|
+
method,
|
|
29719
|
+
packedArguments
|
|
29720
|
+
},
|
|
29721
|
+
sanitizer
|
|
29722
|
+
);
|
|
29715
29723
|
return leaf;
|
|
29716
29724
|
});
|
|
29717
|
-
return {
|
|
29725
|
+
return {
|
|
29726
|
+
leaves,
|
|
29727
|
+
callConstructor: this.getSwapFromLegacyCall.bind(
|
|
29728
|
+
this
|
|
29729
|
+
)
|
|
29730
|
+
};
|
|
29718
29731
|
}
|
|
29719
29732
|
_getSwapFromLegacyLeaf() {
|
|
29720
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29733
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
29734
|
+
(token) => token.symbol === "USDCe"
|
|
29735
|
+
);
|
|
29721
29736
|
return [
|
|
29722
29737
|
{
|
|
29723
29738
|
target: usdceToken.address,
|
|
29724
29739
|
method: "approve",
|
|
29725
|
-
packedArguments: [
|
|
29726
|
-
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
|
|
29727
|
-
],
|
|
29740
|
+
packedArguments: [AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()],
|
|
29728
29741
|
id: `extendedswaplegacyapprove_${usdceToken.symbol}`,
|
|
29729
29742
|
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29730
29743
|
},
|
|
@@ -29743,11 +29756,13 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29743
29756
|
async getDepositCall(params) {
|
|
29744
29757
|
try {
|
|
29745
29758
|
const usdcToken = this.config.supportedPositions[0].asset;
|
|
29746
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29747
|
-
|
|
29748
|
-
|
|
29759
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
29760
|
+
(token) => token.symbol === "USDCe"
|
|
29761
|
+
);
|
|
29762
|
+
const salt = Math.floor(Math.random() * 10 ** usdcToken.decimals);
|
|
29763
|
+
const amount = uint25613.bnToUint256(
|
|
29764
|
+
params.amount.multipliedBy(10).toWei()
|
|
29749
29765
|
);
|
|
29750
|
-
const amount = uint25613.bnToUint256(params.amount.multipliedBy(10).toWei());
|
|
29751
29766
|
const quotes = await this.config.avnuAdapter.getQuotesAvnu(
|
|
29752
29767
|
usdcToken.address.toString(),
|
|
29753
29768
|
usdceToken.address.toString(),
|
|
@@ -29760,7 +29775,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29760
29775
|
logger.error("error getting quotes from avnu");
|
|
29761
29776
|
return [];
|
|
29762
29777
|
}
|
|
29763
|
-
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
29778
|
+
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
29779
|
+
quotes
|
|
29780
|
+
);
|
|
29764
29781
|
const swapCallData = getCalldata[0];
|
|
29765
29782
|
return [
|
|
29766
29783
|
{
|
|
@@ -29836,8 +29853,12 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29836
29853
|
async getSwapFromLegacyCall(params) {
|
|
29837
29854
|
try {
|
|
29838
29855
|
const usdcToken = this.config.supportedPositions[0].asset;
|
|
29839
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29840
|
-
|
|
29856
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
29857
|
+
(token) => token.symbol === "USDCe"
|
|
29858
|
+
);
|
|
29859
|
+
const amount = uint25613.bnToUint256(
|
|
29860
|
+
params.amount.multipliedBy(10).toWei()
|
|
29861
|
+
);
|
|
29841
29862
|
const quotes = await this.config.avnuAdapter.getQuotesAvnu(
|
|
29842
29863
|
usdceToken.address.toString(),
|
|
29843
29864
|
usdcToken.address.toString(),
|
|
@@ -29850,7 +29871,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29850
29871
|
logger.error("error getting quotes from avnu");
|
|
29851
29872
|
return [];
|
|
29852
29873
|
}
|
|
29853
|
-
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
29874
|
+
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
29875
|
+
quotes
|
|
29876
|
+
);
|
|
29854
29877
|
const swapCallData = getCalldata[0];
|
|
29855
29878
|
return [
|
|
29856
29879
|
{
|
|
@@ -29898,9 +29921,14 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29898
29921
|
if (!this.client) {
|
|
29899
29922
|
throw new Error("Client not initialized");
|
|
29900
29923
|
}
|
|
29901
|
-
const withdrawalRequest = await this.client.withdrawUSDC(
|
|
29924
|
+
const withdrawalRequest = await this.client.withdrawUSDC(
|
|
29925
|
+
amount.toFixed(2)
|
|
29926
|
+
);
|
|
29902
29927
|
if (withdrawalRequest.status === "OK") {
|
|
29903
|
-
const withdrawalStatus = await this.getDepositOrWithdrawalStatus(
|
|
29928
|
+
const withdrawalStatus = await this.getDepositOrWithdrawalStatus(
|
|
29929
|
+
withdrawalRequest.data,
|
|
29930
|
+
"WITHDRAWAL" /* WITHDRAWAL */
|
|
29931
|
+
);
|
|
29904
29932
|
return withdrawalStatus;
|
|
29905
29933
|
}
|
|
29906
29934
|
return false;
|
|
@@ -29973,18 +30001,34 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29973
30001
|
logger.error("error initializing client");
|
|
29974
30002
|
return null;
|
|
29975
30003
|
}
|
|
29976
|
-
|
|
29977
|
-
const orderhistory = await this.getOrderHistory(marketName);
|
|
30004
|
+
let orderhistory = await this.getOrderHistory(marketName);
|
|
29978
30005
|
if (!orderhistory || orderhistory.length === 0) {
|
|
29979
|
-
logger.error(`error getting order: ${orderId}`);
|
|
29980
|
-
|
|
30006
|
+
logger.error(`error getting order history: ${orderId}`);
|
|
30007
|
+
} else {
|
|
30008
|
+
const order = orderhistory.slice(0, 10).find((order2) => order2.id.toString() === orderId);
|
|
30009
|
+
if (order) {
|
|
30010
|
+
return order;
|
|
30011
|
+
}
|
|
29981
30012
|
}
|
|
29982
|
-
|
|
29983
|
-
|
|
29984
|
-
|
|
29985
|
-
|
|
30013
|
+
for (let attempt = 1; attempt <= 5; attempt++) {
|
|
30014
|
+
await new Promise((resolve) => setTimeout(resolve, this.retryDelayForOrderStatus));
|
|
30015
|
+
orderhistory = await this.getOrderHistory(marketName);
|
|
30016
|
+
if (!orderhistory || orderhistory.length === 0) {
|
|
30017
|
+
logger.error(
|
|
30018
|
+
`error getting order history on retry ${attempt}: ${orderId}`
|
|
30019
|
+
);
|
|
30020
|
+
continue;
|
|
30021
|
+
}
|
|
30022
|
+
const order = orderhistory.slice(0, 5).find((order2) => order2.id.toString() === orderId);
|
|
30023
|
+
if (order && order.status === "FILLED" /* FILLED */) {
|
|
30024
|
+
return order;
|
|
30025
|
+
}
|
|
30026
|
+
logger.error(
|
|
30027
|
+
`order not found in top 15 entries on retry ${attempt}: ${orderId}`
|
|
30028
|
+
);
|
|
29986
30029
|
}
|
|
29987
|
-
|
|
30030
|
+
logger.error(`error getting order after all retries: ${orderId}`);
|
|
30031
|
+
return null;
|
|
29988
30032
|
}
|
|
29989
30033
|
async fetchOrderBookBTCUSDC() {
|
|
29990
30034
|
try {
|
|
@@ -30057,8 +30101,11 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30057
30101
|
return null;
|
|
30058
30102
|
}
|
|
30059
30103
|
await new Promise((resolve) => setTimeout(resolve, 5e3));
|
|
30060
|
-
const openOrder = await this.getOrderStatus(
|
|
30061
|
-
|
|
30104
|
+
const openOrder = await this.getOrderStatus(
|
|
30105
|
+
result.position_id,
|
|
30106
|
+
this.config.extendedMarketName
|
|
30107
|
+
);
|
|
30108
|
+
if (!openOrder) {
|
|
30062
30109
|
if (attempt >= maxAttempts) {
|
|
30063
30110
|
logger.error("Max retries reached \u2014 could not verify open position");
|
|
30064
30111
|
return null;
|
|
@@ -30080,7 +30127,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30080
30127
|
};
|
|
30081
30128
|
}
|
|
30082
30129
|
} catch (err) {
|
|
30083
|
-
logger.error(
|
|
30130
|
+
logger.error(
|
|
30131
|
+
`createShortOrder failed on attempt ${attempt}: ${err.message}`
|
|
30132
|
+
);
|
|
30084
30133
|
if (attempt < maxAttempts) {
|
|
30085
30134
|
const backoff = 1200 * attempt;
|
|
30086
30135
|
logger.info(`Retrying after ${backoff}ms...`);
|
|
@@ -30125,13 +30174,17 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30125
30174
|
operationsStatus: ["COMPLETED" /* COMPLETED */]
|
|
30126
30175
|
});
|
|
30127
30176
|
if (operationsType === "DEPOSIT" /* DEPOSIT */) {
|
|
30128
|
-
const myTransferStatus = transferHistory.data.find(
|
|
30177
|
+
const myTransferStatus = transferHistory.data.find(
|
|
30178
|
+
(operation) => operation.transactionHash === orderId
|
|
30179
|
+
);
|
|
30129
30180
|
if (!myTransferStatus) {
|
|
30130
30181
|
return true;
|
|
30131
30182
|
}
|
|
30132
30183
|
return true;
|
|
30133
30184
|
} else {
|
|
30134
|
-
const myTransferStatus = transferHistory.data.find(
|
|
30185
|
+
const myTransferStatus = transferHistory.data.find(
|
|
30186
|
+
(operation) => operation.id.toString() === orderId.toString()
|
|
30187
|
+
);
|
|
30135
30188
|
if (!myTransferStatus) {
|
|
30136
30189
|
return true;
|
|
30137
30190
|
}
|
|
@@ -33406,7 +33459,8 @@ function getLooperSettings(lstSymbol, underlyingSymbol, vaultSettings, pool1) {
|
|
|
33406
33459
|
minHealthFactor: vaultSettings.minHealthFactor,
|
|
33407
33460
|
quoteAmountToFetchPrice: vaultSettings.quoteAmountToFetchPrice,
|
|
33408
33461
|
...baseAdapterConfig,
|
|
33409
|
-
supportedPositions: [{ asset: lstToken, isDebt: false }, { asset: Global.getDefaultTokens().find((token) => token.symbol === position), isDebt: true }]
|
|
33462
|
+
supportedPositions: [{ asset: lstToken, isDebt: false }, { asset: Global.getDefaultTokens().find((token) => token.symbol === position), isDebt: true }],
|
|
33463
|
+
minimumVesuMovementAmount: 0
|
|
33410
33464
|
}));
|
|
33411
33465
|
const unusedBalanceAdapter = new UnusedBalanceAdapter({
|
|
33412
33466
|
...baseAdapterConfig
|
|
@@ -33867,7 +33921,7 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33867
33921
|
}
|
|
33868
33922
|
throw new Error("Failed to fetch quote after retries");
|
|
33869
33923
|
}
|
|
33870
|
-
async getQuotesAvnu(from_token_address, to_token_address, amount, takerAddress, toTokenDecimals, usdcToBtc, maxIterations = 5, tolerance =
|
|
33924
|
+
async getQuotesAvnu(from_token_address, to_token_address, amount, takerAddress, toTokenDecimals, usdcToBtc, maxIterations = 5, tolerance = 5e3) {
|
|
33871
33925
|
try {
|
|
33872
33926
|
const fromToken = this.config.supportedPositions[0].asset;
|
|
33873
33927
|
const toToken = this.config.supportedPositions[1].asset;
|
|
@@ -34107,7 +34161,8 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34107
34161
|
}
|
|
34108
34162
|
const balance = await this.getUnusedBalance();
|
|
34109
34163
|
const usdcBalanceOnExtended = await extendedAdapter.getExtendedDepositAmount();
|
|
34110
|
-
const amountToInvest = balance.
|
|
34164
|
+
const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).multipliedBy(1 - LIMIT_BALANCE);
|
|
34165
|
+
logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldInvest amountToInvest: ${amountToInvest.toNumber()}`);
|
|
34111
34166
|
if (amountToInvest.lessThan(0)) {
|
|
34112
34167
|
return {
|
|
34113
34168
|
shouldInvest: false,
|
|
@@ -34160,6 +34215,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34160
34215
|
vesuLeverage: 0
|
|
34161
34216
|
};
|
|
34162
34217
|
}
|
|
34218
|
+
logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldInvest vesu_amount: ${vesu_amount.toNumber()}, extended_amount: ${extended_amount.toNumber()}`);
|
|
34163
34219
|
return {
|
|
34164
34220
|
shouldInvest: true,
|
|
34165
34221
|
vesuAmount: vesu_amount,
|
|
@@ -34193,7 +34249,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34193
34249
|
);
|
|
34194
34250
|
return calls;
|
|
34195
34251
|
}
|
|
34196
|
-
if (extendedAmount.
|
|
34252
|
+
if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
|
|
34197
34253
|
try {
|
|
34198
34254
|
const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
|
|
34199
34255
|
{
|
|
@@ -34213,7 +34269,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34213
34269
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
34214
34270
|
}
|
|
34215
34271
|
}
|
|
34216
|
-
if (vesuAmount.lessThan(
|
|
34272
|
+
if (vesuAmount.isNegative() && vesuAmount.lessThan(vesuAdapter.minimumVesuMovementAmount)) {
|
|
34217
34273
|
try {
|
|
34218
34274
|
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
34219
34275
|
{
|
|
@@ -34239,15 +34295,15 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34239
34295
|
}
|
|
34240
34296
|
const usdcAmountInWallet = (await this.getUnusedBalance()).amount;
|
|
34241
34297
|
const usdcAmountOnExtended = parseFloat(
|
|
34242
|
-
extendedHoldings.
|
|
34298
|
+
extendedHoldings.availableForWithdrawal
|
|
34243
34299
|
);
|
|
34244
|
-
if (extendedAmount.
|
|
34300
|
+
if (extendedAmount.minus(usdcAmountOnExtended).greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
|
|
34245
34301
|
try {
|
|
34246
34302
|
const { calls: extendedCalls } = await this.moveAssets(
|
|
34247
34303
|
{
|
|
34248
34304
|
to: Protocols.EXTENDED.name,
|
|
34249
34305
|
from: Protocols.VAULT.name,
|
|
34250
|
-
amount: extendedAmount.
|
|
34306
|
+
amount: extendedAmount.minus(usdcAmountOnExtended)
|
|
34251
34307
|
},
|
|
34252
34308
|
extendedAdapter,
|
|
34253
34309
|
vesuAdapter
|
|
@@ -34257,7 +34313,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34257
34313
|
logger.error(`Failed moving assets to extended: ${err}`);
|
|
34258
34314
|
}
|
|
34259
34315
|
}
|
|
34260
|
-
if (vesuAmount.minus(usdcAmountInWallet).greaterThan(
|
|
34316
|
+
if (vesuAmount.minus(usdcAmountInWallet).greaterThan(vesuAdapter.minimumVesuMovementAmount)) {
|
|
34261
34317
|
try {
|
|
34262
34318
|
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
34263
34319
|
{
|
|
@@ -34485,7 +34541,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34485
34541
|
};
|
|
34486
34542
|
}
|
|
34487
34543
|
const extendedHoldingAmount = new Web3Number(
|
|
34488
|
-
extendedHoldings.
|
|
34544
|
+
extendedHoldings.availableForWithdrawal,
|
|
34489
34545
|
USDC_TOKEN_DECIMALS
|
|
34490
34546
|
);
|
|
34491
34547
|
const {
|
|
@@ -34545,7 +34601,6 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34545
34601
|
extendedAmountInBTC: new Web3Number(0, 0),
|
|
34546
34602
|
calls: []
|
|
34547
34603
|
};
|
|
34548
|
-
;
|
|
34549
34604
|
}
|
|
34550
34605
|
}
|
|
34551
34606
|
async checkPriceDifferenceBetweenAvnuAndExtended(extendedAdapter, vesuAdapter, avnuAdapter) {
|
|
@@ -34723,7 +34778,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34723
34778
|
};
|
|
34724
34779
|
}
|
|
34725
34780
|
};
|
|
34726
|
-
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, extendedBackendUrl, extendedApiKey, vaultIdExtended) {
|
|
34781
|
+
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus) {
|
|
34727
34782
|
vaultSettings.leafAdapters = [];
|
|
34728
34783
|
const wbtcToken = Global.getDefaultTokens().find(
|
|
34729
34784
|
(token) => token.symbol === lstSymbol
|
|
@@ -34763,7 +34818,10 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
34763
34818
|
extendedBaseUrl: "https://api.starknet.extended.exchange",
|
|
34764
34819
|
extendedMarketName: "BTC-USD",
|
|
34765
34820
|
extendedPrecision: 5,
|
|
34766
|
-
avnuAdapter
|
|
34821
|
+
avnuAdapter,
|
|
34822
|
+
retryDelayForOrderStatus: minimumExtendedRetriesDelayForOrderStatus ?? 3e3,
|
|
34823
|
+
minimumExtendedMovementAmount: minimumExtendedMovementAmount ?? 5
|
|
34824
|
+
//5 usdcs
|
|
34767
34825
|
});
|
|
34768
34826
|
const vesuMultiplyAdapter = new VesuMultiplyAdapter({
|
|
34769
34827
|
poolId: pool1,
|
|
@@ -34776,7 +34834,9 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
34776
34834
|
supportedPositions: [
|
|
34777
34835
|
{ asset: wbtcToken, isDebt: false },
|
|
34778
34836
|
{ asset: usdcToken, isDebt: true }
|
|
34779
|
-
]
|
|
34837
|
+
],
|
|
34838
|
+
minimumVesuMovementAmount: minimumVesuMovementAmount ?? 5
|
|
34839
|
+
//5 usdc
|
|
34780
34840
|
});
|
|
34781
34841
|
const unusedBalanceAdapter = new UnusedBalanceAdapter({
|
|
34782
34842
|
...baseAdapterConfig
|
|
@@ -34891,12 +34951,12 @@ var re7UsdcPrimeDevansh = {
|
|
|
34891
34951
|
borrowable_assets: [Global.getDefaultTokens().find((token) => token.symbol === "WBTC")],
|
|
34892
34952
|
minimumWBTCDifferenceForAvnuSwap: MINIMUM_WBTC_DIFFERENCE_FOR_AVNU_SWAP
|
|
34893
34953
|
};
|
|
34894
|
-
var VesuExtendedTestStrategies = (extendedBackendUrl, extendedApiKey, vaultIdExtended) => {
|
|
34954
|
+
var VesuExtendedTestStrategies = (extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus) => {
|
|
34895
34955
|
return [
|
|
34896
|
-
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false, extendedBackendUrl, extendedApiKey, vaultIdExtended)
|
|
34956
|
+
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus)
|
|
34897
34957
|
];
|
|
34898
34958
|
};
|
|
34899
|
-
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST, extendedBackendUrl, extendedApiKey, vaultIdExtended) {
|
|
34959
|
+
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus) {
|
|
34900
34960
|
return {
|
|
34901
34961
|
name: `Extended Test ${underlyingSymbol}`,
|
|
34902
34962
|
description: getDescription2(lstSymbol, underlyingSymbol),
|
|
@@ -34904,7 +34964,7 @@ function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses,
|
|
|
34904
34964
|
launchBlock: 0,
|
|
34905
34965
|
type: "Other",
|
|
34906
34966
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === underlyingSymbol)],
|
|
34907
|
-
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime, extendedBackendUrl, extendedApiKey, vaultIdExtended),
|
|
34967
|
+
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus),
|
|
34908
34968
|
risk: {
|
|
34909
34969
|
riskFactor: _riskFactor3,
|
|
34910
34970
|
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
package/dist/index.d.ts
CHANGED
|
@@ -945,11 +945,13 @@ interface VesuMultiplyAdapterConfig extends BaseAdapterConfig {
|
|
|
945
945
|
targetHealthFactor: number;
|
|
946
946
|
minHealthFactor: number;
|
|
947
947
|
quoteAmountToFetchPrice: Web3Number;
|
|
948
|
+
minimumVesuMovementAmount: number;
|
|
948
949
|
}
|
|
949
950
|
declare class VesuMultiplyAdapter extends BaseAdapter<DepositParams, WithdrawParams> {
|
|
950
951
|
readonly config: VesuMultiplyAdapterConfig;
|
|
951
952
|
readonly vesuAdapter: VesuAdapter;
|
|
952
953
|
readonly tokenMarketData: TokenMarketData;
|
|
954
|
+
readonly minimumVesuMovementAmount: number;
|
|
953
955
|
constructor(config: VesuMultiplyAdapterConfig);
|
|
954
956
|
protected getAPY(supportedPosition: SupportedPosition): Promise<PositionAPY>;
|
|
955
957
|
protected getPosition(supportedPosition: SupportedPosition): Promise<PositionAmount>;
|
|
@@ -1472,10 +1474,14 @@ interface ExtendedAdapterConfig extends BaseAdapterConfig {
|
|
|
1472
1474
|
extendedMarketName: string;
|
|
1473
1475
|
extendedPrecision: number;
|
|
1474
1476
|
avnuAdapter: AvnuAdapter;
|
|
1477
|
+
retryDelayForOrderStatus: number;
|
|
1478
|
+
minimumExtendedMovementAmount: number;
|
|
1475
1479
|
}
|
|
1476
1480
|
declare class ExtendedAdapter extends BaseAdapter<DepositParams, WithdrawParams> {
|
|
1477
1481
|
readonly config: ExtendedAdapterConfig;
|
|
1478
1482
|
readonly client: ExtendedWrapper;
|
|
1483
|
+
readonly retryDelayForOrderStatus: number;
|
|
1484
|
+
readonly minimumExtendedMovementAmount: number;
|
|
1479
1485
|
constructor(config: ExtendedAdapterConfig);
|
|
1480
1486
|
protected getAPY(supportedPosition: SupportedPosition): Promise<PositionAPY>;
|
|
1481
1487
|
protected getPosition(supportedPosition: SupportedPosition): Promise<PositionAmount>;
|
|
@@ -2245,7 +2251,7 @@ declare class VesuExtendedMultiplierStrategy<S extends VesuExtendedStrategySetti
|
|
|
2245
2251
|
splits: PositionInfo[];
|
|
2246
2252
|
}>;
|
|
2247
2253
|
}
|
|
2248
|
-
declare const VesuExtendedTestStrategies: (extendedBackendUrl: string, extendedApiKey: string, vaultIdExtended: number) => IStrategyMetadata<VesuExtendedStrategySettings>[];
|
|
2254
|
+
declare const VesuExtendedTestStrategies: (extendedBackendUrl: string, extendedApiKey: string, vaultIdExtended: number, minimumExtendedMovementAmount: number, minimumVesuMovementAmount: number, minimumExtendedRetriesDelayForOrderStatus: number) => IStrategyMetadata<VesuExtendedStrategySettings>[];
|
|
2249
2255
|
|
|
2250
2256
|
declare const AddressesConfig: {
|
|
2251
2257
|
readonly tokens: {
|