@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.mjs
CHANGED
|
@@ -28026,7 +28026,7 @@ var STRK_API_RPC = process.env.STRK_API_RPC ?? "https://mainnet.starknet.a5a.ch"
|
|
|
28026
28026
|
var MAX_RETRIES = Number(process.env.MAX_RETRIES ?? 3);
|
|
28027
28027
|
var MAX_DELAY = Number(process.env.MAX_DELAY ?? 100);
|
|
28028
28028
|
var EXTEND_MARKET_NAME = "BTC-USD";
|
|
28029
|
-
var LIMIT_BALANCE = Number(process.env.LIMIT_BALANCE ??
|
|
28029
|
+
var LIMIT_BALANCE = Number(process.env.LIMIT_BALANCE ?? 0.05);
|
|
28030
28030
|
var REBALANCER_INTERVAL = Number(process.env.REBALANCER_INTERVAL ?? 18e4);
|
|
28031
28031
|
var WITHDRAWAL_INTERVAL = Number(process.env.WITHDRAWAL_INTERVAL ?? 18e6);
|
|
28032
28032
|
var INVESTING_INTERVAL = Number(process.env.INVESTING_INTERVAL ?? 18e4);
|
|
@@ -28065,8 +28065,7 @@ var calculateAmountDistribution = async (amount, client, marketName, collateralP
|
|
|
28065
28065
|
vesu_leverage: 0
|
|
28066
28066
|
};
|
|
28067
28067
|
}
|
|
28068
|
-
const
|
|
28069
|
-
const extendedExposureUSD = extendedBTCExposure.multipliedBy(collateralPrice);
|
|
28068
|
+
const extendedExposureUSD = extendedPosition.length > 0 ? new Web3Number(extendedPosition[0].value, WBTC_TOKEN_DECIMALS) : new Web3Number(0, WBTC_TOKEN_DECIMALS);
|
|
28070
28069
|
const vesuBTCExposureUSD = collateralUnits.multipliedBy(collateralPrice);
|
|
28071
28070
|
const numerator1 = vesu_leverage * amount + vesuBTCExposureUSD.toNumber();
|
|
28072
28071
|
const numerator2 = extendedExposureUSD.toNumber();
|
|
@@ -28284,6 +28283,7 @@ var VesuMultiplyAdapter = class _VesuMultiplyAdapter extends BaseAdapter {
|
|
|
28284
28283
|
vaultAllocator: config.vaultAllocator,
|
|
28285
28284
|
id: ""
|
|
28286
28285
|
});
|
|
28286
|
+
this.minimumVesuMovementAmount = config.minimumVesuMovementAmount ?? 5;
|
|
28287
28287
|
this.tokenMarketData = new TokenMarketData(
|
|
28288
28288
|
this.config.pricer,
|
|
28289
28289
|
this.config.networkConfig
|
|
@@ -29630,12 +29630,17 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29630
29630
|
timeout: this.config.extendedTimeout,
|
|
29631
29631
|
retries: this.config.extendedRetries
|
|
29632
29632
|
});
|
|
29633
|
+
this.minimumExtendedMovementAmount = this.config.minimumExtendedMovementAmount ?? 5;
|
|
29633
29634
|
this.client = client;
|
|
29635
|
+
this.retryDelayForOrderStatus = this.config.retryDelayForOrderStatus ?? 3e3;
|
|
29634
29636
|
}
|
|
29635
29637
|
//abstract means the method has no implementation in this class; instead, child classes must implement it.
|
|
29636
29638
|
async getAPY(supportedPosition) {
|
|
29637
29639
|
const side = supportedPosition.isDebt ? "LONG" : "SHORT";
|
|
29638
|
-
const fundingRates = await this.client.getFundingRates(
|
|
29640
|
+
const fundingRates = await this.client.getFundingRates(
|
|
29641
|
+
this.config.extendedMarketName,
|
|
29642
|
+
side
|
|
29643
|
+
);
|
|
29639
29644
|
if (fundingRates.status !== "OK") {
|
|
29640
29645
|
logger.error("error getting funding rates", fundingRates);
|
|
29641
29646
|
return { apy: 0, type: "base" /* BASE */ };
|
|
@@ -29679,14 +29684,14 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29679
29684
|
});
|
|
29680
29685
|
}
|
|
29681
29686
|
_getDepositLeaf() {
|
|
29682
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29687
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
29688
|
+
(token) => token.symbol === "USDCe"
|
|
29689
|
+
);
|
|
29683
29690
|
return [
|
|
29684
29691
|
{
|
|
29685
29692
|
target: this.config.supportedPositions[0].asset.address,
|
|
29686
29693
|
method: "approve",
|
|
29687
|
-
packedArguments: [
|
|
29688
|
-
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
|
|
29689
|
-
],
|
|
29694
|
+
packedArguments: [AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()],
|
|
29690
29695
|
id: `extended_approve_${this.config.supportedPositions[0].asset.symbol}`,
|
|
29691
29696
|
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29692
29697
|
},
|
|
@@ -29717,25 +29722,33 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29717
29722
|
const leafConfigs = this._getSwapFromLegacyLeaf();
|
|
29718
29723
|
const leaves = leafConfigs.map((config) => {
|
|
29719
29724
|
const { target, method, packedArguments, sanitizer, id } = config;
|
|
29720
|
-
const leaf = this.constructSimpleLeafData(
|
|
29721
|
-
|
|
29722
|
-
|
|
29723
|
-
|
|
29724
|
-
|
|
29725
|
-
|
|
29725
|
+
const leaf = this.constructSimpleLeafData(
|
|
29726
|
+
{
|
|
29727
|
+
id,
|
|
29728
|
+
target,
|
|
29729
|
+
method,
|
|
29730
|
+
packedArguments
|
|
29731
|
+
},
|
|
29732
|
+
sanitizer
|
|
29733
|
+
);
|
|
29726
29734
|
return leaf;
|
|
29727
29735
|
});
|
|
29728
|
-
return {
|
|
29736
|
+
return {
|
|
29737
|
+
leaves,
|
|
29738
|
+
callConstructor: this.getSwapFromLegacyCall.bind(
|
|
29739
|
+
this
|
|
29740
|
+
)
|
|
29741
|
+
};
|
|
29729
29742
|
}
|
|
29730
29743
|
_getSwapFromLegacyLeaf() {
|
|
29731
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29744
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
29745
|
+
(token) => token.symbol === "USDCe"
|
|
29746
|
+
);
|
|
29732
29747
|
return [
|
|
29733
29748
|
{
|
|
29734
29749
|
target: usdceToken.address,
|
|
29735
29750
|
method: "approve",
|
|
29736
|
-
packedArguments: [
|
|
29737
|
-
AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
|
|
29738
|
-
],
|
|
29751
|
+
packedArguments: [AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()],
|
|
29739
29752
|
id: `extendedswaplegacyapprove_${usdceToken.symbol}`,
|
|
29740
29753
|
sanitizer: AVNU_LEGACY_SANITIZER
|
|
29741
29754
|
},
|
|
@@ -29754,11 +29767,13 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29754
29767
|
async getDepositCall(params) {
|
|
29755
29768
|
try {
|
|
29756
29769
|
const usdcToken = this.config.supportedPositions[0].asset;
|
|
29757
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29758
|
-
|
|
29759
|
-
|
|
29770
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
29771
|
+
(token) => token.symbol === "USDCe"
|
|
29772
|
+
);
|
|
29773
|
+
const salt = Math.floor(Math.random() * 10 ** usdcToken.decimals);
|
|
29774
|
+
const amount = uint25613.bnToUint256(
|
|
29775
|
+
params.amount.multipliedBy(10).toWei()
|
|
29760
29776
|
);
|
|
29761
|
-
const amount = uint25613.bnToUint256(params.amount.multipliedBy(10).toWei());
|
|
29762
29777
|
const quotes = await this.config.avnuAdapter.getQuotesAvnu(
|
|
29763
29778
|
usdcToken.address.toString(),
|
|
29764
29779
|
usdceToken.address.toString(),
|
|
@@ -29771,7 +29786,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29771
29786
|
logger.error("error getting quotes from avnu");
|
|
29772
29787
|
return [];
|
|
29773
29788
|
}
|
|
29774
|
-
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
29789
|
+
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
29790
|
+
quotes
|
|
29791
|
+
);
|
|
29775
29792
|
const swapCallData = getCalldata[0];
|
|
29776
29793
|
return [
|
|
29777
29794
|
{
|
|
@@ -29847,8 +29864,12 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29847
29864
|
async getSwapFromLegacyCall(params) {
|
|
29848
29865
|
try {
|
|
29849
29866
|
const usdcToken = this.config.supportedPositions[0].asset;
|
|
29850
|
-
const usdceToken = Global.getDefaultTokens().find(
|
|
29851
|
-
|
|
29867
|
+
const usdceToken = Global.getDefaultTokens().find(
|
|
29868
|
+
(token) => token.symbol === "USDCe"
|
|
29869
|
+
);
|
|
29870
|
+
const amount = uint25613.bnToUint256(
|
|
29871
|
+
params.amount.multipliedBy(10).toWei()
|
|
29872
|
+
);
|
|
29852
29873
|
const quotes = await this.config.avnuAdapter.getQuotesAvnu(
|
|
29853
29874
|
usdceToken.address.toString(),
|
|
29854
29875
|
usdcToken.address.toString(),
|
|
@@ -29861,7 +29882,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29861
29882
|
logger.error("error getting quotes from avnu");
|
|
29862
29883
|
return [];
|
|
29863
29884
|
}
|
|
29864
|
-
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
29885
|
+
const getCalldata = await this.config.avnuAdapter.getSwapCallData(
|
|
29886
|
+
quotes
|
|
29887
|
+
);
|
|
29865
29888
|
const swapCallData = getCalldata[0];
|
|
29866
29889
|
return [
|
|
29867
29890
|
{
|
|
@@ -29909,9 +29932,14 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29909
29932
|
if (!this.client) {
|
|
29910
29933
|
throw new Error("Client not initialized");
|
|
29911
29934
|
}
|
|
29912
|
-
const withdrawalRequest = await this.client.withdrawUSDC(
|
|
29935
|
+
const withdrawalRequest = await this.client.withdrawUSDC(
|
|
29936
|
+
amount.toFixed(2)
|
|
29937
|
+
);
|
|
29913
29938
|
if (withdrawalRequest.status === "OK") {
|
|
29914
|
-
const withdrawalStatus = await this.getDepositOrWithdrawalStatus(
|
|
29939
|
+
const withdrawalStatus = await this.getDepositOrWithdrawalStatus(
|
|
29940
|
+
withdrawalRequest.data,
|
|
29941
|
+
"WITHDRAWAL" /* WITHDRAWAL */
|
|
29942
|
+
);
|
|
29915
29943
|
return withdrawalStatus;
|
|
29916
29944
|
}
|
|
29917
29945
|
return false;
|
|
@@ -29984,18 +30012,34 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
29984
30012
|
logger.error("error initializing client");
|
|
29985
30013
|
return null;
|
|
29986
30014
|
}
|
|
29987
|
-
|
|
29988
|
-
const orderhistory = await this.getOrderHistory(marketName);
|
|
30015
|
+
let orderhistory = await this.getOrderHistory(marketName);
|
|
29989
30016
|
if (!orderhistory || orderhistory.length === 0) {
|
|
29990
|
-
logger.error(`error getting order: ${orderId}`);
|
|
29991
|
-
|
|
30017
|
+
logger.error(`error getting order history: ${orderId}`);
|
|
30018
|
+
} else {
|
|
30019
|
+
const order = orderhistory.slice(0, 10).find((order2) => order2.id.toString() === orderId);
|
|
30020
|
+
if (order) {
|
|
30021
|
+
return order;
|
|
30022
|
+
}
|
|
29992
30023
|
}
|
|
29993
|
-
|
|
29994
|
-
|
|
29995
|
-
|
|
29996
|
-
|
|
30024
|
+
for (let attempt = 1; attempt <= 5; attempt++) {
|
|
30025
|
+
await new Promise((resolve) => setTimeout(resolve, this.retryDelayForOrderStatus));
|
|
30026
|
+
orderhistory = await this.getOrderHistory(marketName);
|
|
30027
|
+
if (!orderhistory || orderhistory.length === 0) {
|
|
30028
|
+
logger.error(
|
|
30029
|
+
`error getting order history on retry ${attempt}: ${orderId}`
|
|
30030
|
+
);
|
|
30031
|
+
continue;
|
|
30032
|
+
}
|
|
30033
|
+
const order = orderhistory.slice(0, 5).find((order2) => order2.id.toString() === orderId);
|
|
30034
|
+
if (order && order.status === "FILLED" /* FILLED */) {
|
|
30035
|
+
return order;
|
|
30036
|
+
}
|
|
30037
|
+
logger.error(
|
|
30038
|
+
`order not found in top 15 entries on retry ${attempt}: ${orderId}`
|
|
30039
|
+
);
|
|
29997
30040
|
}
|
|
29998
|
-
|
|
30041
|
+
logger.error(`error getting order after all retries: ${orderId}`);
|
|
30042
|
+
return null;
|
|
29999
30043
|
}
|
|
30000
30044
|
async fetchOrderBookBTCUSDC() {
|
|
30001
30045
|
try {
|
|
@@ -30068,8 +30112,11 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30068
30112
|
return null;
|
|
30069
30113
|
}
|
|
30070
30114
|
await new Promise((resolve) => setTimeout(resolve, 5e3));
|
|
30071
|
-
const openOrder = await this.getOrderStatus(
|
|
30072
|
-
|
|
30115
|
+
const openOrder = await this.getOrderStatus(
|
|
30116
|
+
result.position_id,
|
|
30117
|
+
this.config.extendedMarketName
|
|
30118
|
+
);
|
|
30119
|
+
if (!openOrder) {
|
|
30073
30120
|
if (attempt >= maxAttempts) {
|
|
30074
30121
|
logger.error("Max retries reached \u2014 could not verify open position");
|
|
30075
30122
|
return null;
|
|
@@ -30091,7 +30138,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30091
30138
|
};
|
|
30092
30139
|
}
|
|
30093
30140
|
} catch (err) {
|
|
30094
|
-
logger.error(
|
|
30141
|
+
logger.error(
|
|
30142
|
+
`createShortOrder failed on attempt ${attempt}: ${err.message}`
|
|
30143
|
+
);
|
|
30095
30144
|
if (attempt < maxAttempts) {
|
|
30096
30145
|
const backoff = 1200 * attempt;
|
|
30097
30146
|
logger.info(`Retrying after ${backoff}ms...`);
|
|
@@ -30136,13 +30185,17 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
|
|
|
30136
30185
|
operationsStatus: ["COMPLETED" /* COMPLETED */]
|
|
30137
30186
|
});
|
|
30138
30187
|
if (operationsType === "DEPOSIT" /* DEPOSIT */) {
|
|
30139
|
-
const myTransferStatus = transferHistory.data.find(
|
|
30188
|
+
const myTransferStatus = transferHistory.data.find(
|
|
30189
|
+
(operation) => operation.transactionHash === orderId
|
|
30190
|
+
);
|
|
30140
30191
|
if (!myTransferStatus) {
|
|
30141
30192
|
return true;
|
|
30142
30193
|
}
|
|
30143
30194
|
return true;
|
|
30144
30195
|
} else {
|
|
30145
|
-
const myTransferStatus = transferHistory.data.find(
|
|
30196
|
+
const myTransferStatus = transferHistory.data.find(
|
|
30197
|
+
(operation) => operation.id.toString() === orderId.toString()
|
|
30198
|
+
);
|
|
30146
30199
|
if (!myTransferStatus) {
|
|
30147
30200
|
return true;
|
|
30148
30201
|
}
|
|
@@ -33417,7 +33470,8 @@ function getLooperSettings(lstSymbol, underlyingSymbol, vaultSettings, pool1) {
|
|
|
33417
33470
|
minHealthFactor: vaultSettings.minHealthFactor,
|
|
33418
33471
|
quoteAmountToFetchPrice: vaultSettings.quoteAmountToFetchPrice,
|
|
33419
33472
|
...baseAdapterConfig,
|
|
33420
|
-
supportedPositions: [{ asset: lstToken, isDebt: false }, { asset: Global.getDefaultTokens().find((token) => token.symbol === position), isDebt: true }]
|
|
33473
|
+
supportedPositions: [{ asset: lstToken, isDebt: false }, { asset: Global.getDefaultTokens().find((token) => token.symbol === position), isDebt: true }],
|
|
33474
|
+
minimumVesuMovementAmount: 0
|
|
33421
33475
|
}));
|
|
33422
33476
|
const unusedBalanceAdapter = new UnusedBalanceAdapter({
|
|
33423
33477
|
...baseAdapterConfig
|
|
@@ -33878,7 +33932,7 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
|
|
|
33878
33932
|
}
|
|
33879
33933
|
throw new Error("Failed to fetch quote after retries");
|
|
33880
33934
|
}
|
|
33881
|
-
async getQuotesAvnu(from_token_address, to_token_address, amount, takerAddress, toTokenDecimals, usdcToBtc, maxIterations = 5, tolerance =
|
|
33935
|
+
async getQuotesAvnu(from_token_address, to_token_address, amount, takerAddress, toTokenDecimals, usdcToBtc, maxIterations = 5, tolerance = 5e3) {
|
|
33882
33936
|
try {
|
|
33883
33937
|
const fromToken = this.config.supportedPositions[0].asset;
|
|
33884
33938
|
const toToken = this.config.supportedPositions[1].asset;
|
|
@@ -34118,7 +34172,8 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34118
34172
|
}
|
|
34119
34173
|
const balance = await this.getUnusedBalance();
|
|
34120
34174
|
const usdcBalanceOnExtended = await extendedAdapter.getExtendedDepositAmount();
|
|
34121
|
-
const amountToInvest = balance.
|
|
34175
|
+
const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).multipliedBy(1 - LIMIT_BALANCE);
|
|
34176
|
+
logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldInvest amountToInvest: ${amountToInvest.toNumber()}`);
|
|
34122
34177
|
if (amountToInvest.lessThan(0)) {
|
|
34123
34178
|
return {
|
|
34124
34179
|
shouldInvest: false,
|
|
@@ -34171,6 +34226,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34171
34226
|
vesuLeverage: 0
|
|
34172
34227
|
};
|
|
34173
34228
|
}
|
|
34229
|
+
logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldInvest vesu_amount: ${vesu_amount.toNumber()}, extended_amount: ${extended_amount.toNumber()}`);
|
|
34174
34230
|
return {
|
|
34175
34231
|
shouldInvest: true,
|
|
34176
34232
|
vesuAmount: vesu_amount,
|
|
@@ -34204,7 +34260,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34204
34260
|
);
|
|
34205
34261
|
return calls;
|
|
34206
34262
|
}
|
|
34207
|
-
if (extendedAmount.
|
|
34263
|
+
if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
|
|
34208
34264
|
try {
|
|
34209
34265
|
const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
|
|
34210
34266
|
{
|
|
@@ -34224,7 +34280,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34224
34280
|
logger.error(`Failed moving assets to vault: ${err}`);
|
|
34225
34281
|
}
|
|
34226
34282
|
}
|
|
34227
|
-
if (vesuAmount.lessThan(
|
|
34283
|
+
if (vesuAmount.isNegative() && vesuAmount.lessThan(vesuAdapter.minimumVesuMovementAmount)) {
|
|
34228
34284
|
try {
|
|
34229
34285
|
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
34230
34286
|
{
|
|
@@ -34250,15 +34306,15 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34250
34306
|
}
|
|
34251
34307
|
const usdcAmountInWallet = (await this.getUnusedBalance()).amount;
|
|
34252
34308
|
const usdcAmountOnExtended = parseFloat(
|
|
34253
|
-
extendedHoldings.
|
|
34309
|
+
extendedHoldings.availableForWithdrawal
|
|
34254
34310
|
);
|
|
34255
|
-
if (extendedAmount.
|
|
34311
|
+
if (extendedAmount.minus(usdcAmountOnExtended).greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
|
|
34256
34312
|
try {
|
|
34257
34313
|
const { calls: extendedCalls } = await this.moveAssets(
|
|
34258
34314
|
{
|
|
34259
34315
|
to: Protocols.EXTENDED.name,
|
|
34260
34316
|
from: Protocols.VAULT.name,
|
|
34261
|
-
amount: extendedAmount.
|
|
34317
|
+
amount: extendedAmount.minus(usdcAmountOnExtended)
|
|
34262
34318
|
},
|
|
34263
34319
|
extendedAdapter,
|
|
34264
34320
|
vesuAdapter
|
|
@@ -34268,7 +34324,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34268
34324
|
logger.error(`Failed moving assets to extended: ${err}`);
|
|
34269
34325
|
}
|
|
34270
34326
|
}
|
|
34271
|
-
if (vesuAmount.minus(usdcAmountInWallet).greaterThan(
|
|
34327
|
+
if (vesuAmount.minus(usdcAmountInWallet).greaterThan(vesuAdapter.minimumVesuMovementAmount)) {
|
|
34272
34328
|
try {
|
|
34273
34329
|
const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
|
|
34274
34330
|
{
|
|
@@ -34496,7 +34552,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34496
34552
|
};
|
|
34497
34553
|
}
|
|
34498
34554
|
const extendedHoldingAmount = new Web3Number(
|
|
34499
|
-
extendedHoldings.
|
|
34555
|
+
extendedHoldings.availableForWithdrawal,
|
|
34500
34556
|
USDC_TOKEN_DECIMALS
|
|
34501
34557
|
);
|
|
34502
34558
|
const {
|
|
@@ -34556,7 +34612,6 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34556
34612
|
extendedAmountInBTC: new Web3Number(0, 0),
|
|
34557
34613
|
calls: []
|
|
34558
34614
|
};
|
|
34559
|
-
;
|
|
34560
34615
|
}
|
|
34561
34616
|
}
|
|
34562
34617
|
async checkPriceDifferenceBetweenAvnuAndExtended(extendedAdapter, vesuAdapter, avnuAdapter) {
|
|
@@ -34734,7 +34789,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
|
|
|
34734
34789
|
};
|
|
34735
34790
|
}
|
|
34736
34791
|
};
|
|
34737
|
-
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, extendedBackendUrl, extendedApiKey, vaultIdExtended) {
|
|
34792
|
+
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus) {
|
|
34738
34793
|
vaultSettings.leafAdapters = [];
|
|
34739
34794
|
const wbtcToken = Global.getDefaultTokens().find(
|
|
34740
34795
|
(token) => token.symbol === lstSymbol
|
|
@@ -34774,7 +34829,10 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
34774
34829
|
extendedBaseUrl: "https://api.starknet.extended.exchange",
|
|
34775
34830
|
extendedMarketName: "BTC-USD",
|
|
34776
34831
|
extendedPrecision: 5,
|
|
34777
|
-
avnuAdapter
|
|
34832
|
+
avnuAdapter,
|
|
34833
|
+
retryDelayForOrderStatus: minimumExtendedRetriesDelayForOrderStatus ?? 3e3,
|
|
34834
|
+
minimumExtendedMovementAmount: minimumExtendedMovementAmount ?? 5
|
|
34835
|
+
//5 usdcs
|
|
34778
34836
|
});
|
|
34779
34837
|
const vesuMultiplyAdapter = new VesuMultiplyAdapter({
|
|
34780
34838
|
poolId: pool1,
|
|
@@ -34787,7 +34845,9 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, e
|
|
|
34787
34845
|
supportedPositions: [
|
|
34788
34846
|
{ asset: wbtcToken, isDebt: false },
|
|
34789
34847
|
{ asset: usdcToken, isDebt: true }
|
|
34790
|
-
]
|
|
34848
|
+
],
|
|
34849
|
+
minimumVesuMovementAmount: minimumVesuMovementAmount ?? 5
|
|
34850
|
+
//5 usdc
|
|
34791
34851
|
});
|
|
34792
34852
|
const unusedBalanceAdapter = new UnusedBalanceAdapter({
|
|
34793
34853
|
...baseAdapterConfig
|
|
@@ -34902,12 +34962,12 @@ var re7UsdcPrimeDevansh = {
|
|
|
34902
34962
|
borrowable_assets: [Global.getDefaultTokens().find((token) => token.symbol === "WBTC")],
|
|
34903
34963
|
minimumWBTCDifferenceForAvnuSwap: MINIMUM_WBTC_DIFFERENCE_FOR_AVNU_SWAP
|
|
34904
34964
|
};
|
|
34905
|
-
var VesuExtendedTestStrategies = (extendedBackendUrl, extendedApiKey, vaultIdExtended) => {
|
|
34965
|
+
var VesuExtendedTestStrategies = (extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus) => {
|
|
34906
34966
|
return [
|
|
34907
|
-
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false, extendedBackendUrl, extendedApiKey, vaultIdExtended)
|
|
34967
|
+
getStrategySettingsVesuExtended("WBTC", "USDC", re7UsdcPrimeDevansh, false, false, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus)
|
|
34908
34968
|
];
|
|
34909
34969
|
};
|
|
34910
|
-
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST, extendedBackendUrl, extendedApiKey, vaultIdExtended) {
|
|
34970
|
+
function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses, isPreview = false, isLST, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus) {
|
|
34911
34971
|
return {
|
|
34912
34972
|
name: `Extended Test ${underlyingSymbol}`,
|
|
34913
34973
|
description: getDescription2(lstSymbol, underlyingSymbol),
|
|
@@ -34915,7 +34975,7 @@ function getStrategySettingsVesuExtended(lstSymbol, underlyingSymbol, addresses,
|
|
|
34915
34975
|
launchBlock: 0,
|
|
34916
34976
|
type: "Other",
|
|
34917
34977
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === underlyingSymbol)],
|
|
34918
|
-
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime, extendedBackendUrl, extendedApiKey, vaultIdExtended),
|
|
34978
|
+
additionalInfo: getLooperSettings2(lstSymbol, underlyingSymbol, addresses, VesuPools.Re7USDCPrime, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus),
|
|
34919
34979
|
risk: {
|
|
34920
34980
|
riskFactor: _riskFactor3,
|
|
34921
34981
|
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
package/package.json
CHANGED
|
@@ -303,7 +303,7 @@ export class AvnuAdapter extends BaseAdapter<DepositParams, WithdrawParams> {
|
|
|
303
303
|
toTokenDecimals: number,
|
|
304
304
|
usdcToBtc: boolean,
|
|
305
305
|
maxIterations: number = 5,
|
|
306
|
-
tolerance: number =
|
|
306
|
+
tolerance: number = 5000
|
|
307
307
|
): Promise<Quote | null>{
|
|
308
308
|
try {
|
|
309
309
|
const fromToken = this.config.supportedPositions[0].asset;
|