@strkfarm/sdk 1.1.23 → 1.1.25
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 +49 -22
- package/dist/index.browser.mjs +49 -22
- package/dist/index.d.ts +2 -2
- package/dist/index.js +49 -22
- package/dist/index.mjs +49 -22
- package/package.json +1 -1
- package/src/strategies/ekubo-cl-vault.tsx +9 -9
- package/src/strategies/universal-lst-muliplier-strategy.tsx +25 -16
- package/src/strategies/universal-strategy.tsx +7 -0
|
@@ -79484,8 +79484,8 @@ spurious results.`);
|
|
|
79484
79484
|
) / 1e4;
|
|
79485
79485
|
return apyForGivenBlocks * (365 * 24 * 3600) / timeDiffSeconds;
|
|
79486
79486
|
}
|
|
79487
|
-
async feeBasedAPY(
|
|
79488
|
-
const feeInfo = await this.getFeeHistory(
|
|
79487
|
+
async feeBasedAPY(timeperiod = "24h") {
|
|
79488
|
+
const feeInfo = await this.getFeeHistory(timeperiod);
|
|
79489
79489
|
const tvlNow = await this.getTVL("latest");
|
|
79490
79490
|
return feeInfo.summary.usdValue * 365 / tvlNow.usdValue;
|
|
79491
79491
|
}
|
|
@@ -79493,12 +79493,12 @@ spurious results.`);
|
|
|
79493
79493
|
* Calculates assets before and now in a given token of TVL per share to observe growth
|
|
79494
79494
|
* @returns {Promise<number>} The weighted average APY across all pools
|
|
79495
79495
|
*/
|
|
79496
|
-
async netAPY(blockIdentifier = "latest", sinceBlocks = 6e5) {
|
|
79496
|
+
async netAPY(blockIdentifier = "latest", sinceBlocks = 6e5, timeperiod = "24h") {
|
|
79497
79497
|
const isUSDCQouteToken = this.metadata.additionalInfo.quoteAsset.symbol === "USDC";
|
|
79498
79498
|
if (!isUSDCQouteToken) {
|
|
79499
79499
|
return this.netSharesBasedTrueAPY(blockIdentifier, sinceBlocks);
|
|
79500
79500
|
} else {
|
|
79501
|
-
return this.feeBasedAPY(
|
|
79501
|
+
return this.feeBasedAPY(timeperiod);
|
|
79502
79502
|
}
|
|
79503
79503
|
}
|
|
79504
79504
|
async getHarvestRewardShares(fromBlock, toBlock) {
|
|
@@ -80478,7 +80478,7 @@ spurious results.`);
|
|
|
80478
80478
|
return [baseFlow, rebalanceFlow];
|
|
80479
80479
|
}
|
|
80480
80480
|
};
|
|
80481
|
-
var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and
|
|
80481
|
+
var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and any rewards are automatically compounded back into the strategy. In return, you receive an ERC-20 token representing your share of the strategy";
|
|
80482
80482
|
var _protocol2 = {
|
|
80483
80483
|
name: "Ekubo",
|
|
80484
80484
|
logo: "https://app.ekubo.org/favicon.ico"
|
|
@@ -80515,7 +80515,7 @@ spurious results.`);
|
|
|
80515
80515
|
netRisk: highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
80516
80516
|
notARisks: getNoRiskTags(highVolatilityPoolRiskFactors)
|
|
80517
80517
|
};
|
|
80518
|
-
var AUDIT_URL2 = "https://
|
|
80518
|
+
var AUDIT_URL2 = "https://docs.troves.fi/p/security#ekubo-vault";
|
|
80519
80519
|
var faqs2 = [
|
|
80520
80520
|
{
|
|
80521
80521
|
question: "What is the Ekubo CL Vault strategy?",
|
|
@@ -80523,7 +80523,7 @@ spurious results.`);
|
|
|
80523
80523
|
},
|
|
80524
80524
|
{
|
|
80525
80525
|
question: "How are trading fees and rewards handled?",
|
|
80526
|
-
answer: "Trading fees and
|
|
80526
|
+
answer: "Trading fees and any rewards are automatically compounded back into the strategy, increasing your overall returns."
|
|
80527
80527
|
},
|
|
80528
80528
|
{
|
|
80529
80529
|
question: "What happens during withdrawal?",
|
|
@@ -80900,7 +80900,7 @@ spurious results.`);
|
|
|
80900
80900
|
s.investmentSteps = [
|
|
80901
80901
|
"Supply tokens to Ekubo's pool",
|
|
80902
80902
|
"Monitor and Rebalance position to optimize yield",
|
|
80903
|
-
"Harvest and
|
|
80903
|
+
"Harvest and re-invest any rewards every week (Auto-compound)"
|
|
80904
80904
|
];
|
|
80905
80905
|
});
|
|
80906
80906
|
|
|
@@ -91333,6 +91333,7 @@ spurious results.`);
|
|
|
91333
91333
|
"Vault manager reports asset under management (AUM) regularly to the vault",
|
|
91334
91334
|
"Request withdrawal and vault manager processes it in 1-2 hours"
|
|
91335
91335
|
];
|
|
91336
|
+
var AUDIT_URL3 = "https://docs.troves.fi/p/security#starknet-vault-kit";
|
|
91336
91337
|
var UniversalStrategies = [
|
|
91337
91338
|
{
|
|
91338
91339
|
name: "USDC Evergreen",
|
|
@@ -91347,6 +91348,7 @@ spurious results.`);
|
|
|
91347
91348
|
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
91348
91349
|
notARisks: getNoRiskTags(_riskFactor3)
|
|
91349
91350
|
},
|
|
91351
|
+
auditUrl: AUDIT_URL3,
|
|
91350
91352
|
protocols: [Protocols.VESU],
|
|
91351
91353
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
91352
91354
|
contractDetails: getContractDetails(usdcVaultSettings),
|
|
@@ -91370,7 +91372,8 @@ spurious results.`);
|
|
|
91370
91372
|
maxTVL: Web3Number.fromWei(0, 8),
|
|
91371
91373
|
contractDetails: getContractDetails(wbtcVaultSettings),
|
|
91372
91374
|
faqs: getFAQs(),
|
|
91373
|
-
investmentSteps
|
|
91375
|
+
investmentSteps,
|
|
91376
|
+
auditUrl: AUDIT_URL3
|
|
91374
91377
|
},
|
|
91375
91378
|
{
|
|
91376
91379
|
name: "ETH Evergreen",
|
|
@@ -91389,7 +91392,8 @@ spurious results.`);
|
|
|
91389
91392
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
91390
91393
|
contractDetails: getContractDetails(ethVaultSettings),
|
|
91391
91394
|
faqs: getFAQs(),
|
|
91392
|
-
investmentSteps
|
|
91395
|
+
investmentSteps,
|
|
91396
|
+
auditUrl: AUDIT_URL3
|
|
91393
91397
|
},
|
|
91394
91398
|
{
|
|
91395
91399
|
name: "STRK Evergreen",
|
|
@@ -91408,7 +91412,8 @@ spurious results.`);
|
|
|
91408
91412
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
91409
91413
|
contractDetails: getContractDetails(strkVaultSettings),
|
|
91410
91414
|
faqs: getFAQs(),
|
|
91411
|
-
investmentSteps
|
|
91415
|
+
investmentSteps,
|
|
91416
|
+
auditUrl: AUDIT_URL3
|
|
91412
91417
|
},
|
|
91413
91418
|
{
|
|
91414
91419
|
name: "USDT Evergreen",
|
|
@@ -91427,7 +91432,8 @@ spurious results.`);
|
|
|
91427
91432
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
91428
91433
|
contractDetails: getContractDetails(usdtVaultSettings),
|
|
91429
91434
|
faqs: getFAQs(),
|
|
91430
|
-
investmentSteps
|
|
91435
|
+
investmentSteps,
|
|
91436
|
+
auditUrl: AUDIT_URL3
|
|
91431
91437
|
}
|
|
91432
91438
|
];
|
|
91433
91439
|
|
|
@@ -91636,7 +91642,7 @@ spurious results.`);
|
|
|
91636
91642
|
return [this.getManageCall(proofsIDs, manageCalls)];
|
|
91637
91643
|
}
|
|
91638
91644
|
};
|
|
91639
|
-
function VaultDescription() {
|
|
91645
|
+
function VaultDescription(lstSymbol, underlyingSymbol) {
|
|
91640
91646
|
const containerStyle = {
|
|
91641
91647
|
maxWidth: "800px",
|
|
91642
91648
|
margin: "0 auto",
|
|
@@ -91646,8 +91652,27 @@ spurious results.`);
|
|
|
91646
91652
|
borderRadius: "12px"
|
|
91647
91653
|
};
|
|
91648
91654
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: containerStyle, children: [
|
|
91649
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.
|
|
91650
|
-
|
|
91655
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("h1", { style: { fontSize: "18px", marginBottom: "10px" }, children: [
|
|
91656
|
+
"Liquidation risk managed leverged ",
|
|
91657
|
+
lstSymbol,
|
|
91658
|
+
" Vault"
|
|
91659
|
+
] }),
|
|
91660
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { style: { fontSize: "14px", lineHeight: "1.5", marginBottom: "16px" }, children: [
|
|
91661
|
+
"This Levered Endur ",
|
|
91662
|
+
lstSymbol,
|
|
91663
|
+
" vault is a tokenized leveraged Vault, auto-compounding strategy that takes upto 5x leverage on ",
|
|
91664
|
+
lstSymbol,
|
|
91665
|
+
" by borrow ",
|
|
91666
|
+
underlyingSymbol,
|
|
91667
|
+
". Borrowed amount is swapped to ",
|
|
91668
|
+
lstSymbol,
|
|
91669
|
+
" to create leverage. Depositors receive vault shares that represent a proportional claim on the underlying assets and accrued yield."
|
|
91670
|
+
] }),
|
|
91671
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { style: { fontSize: "14px", lineHeight: "1.5", marginBottom: "16px" }, children: [
|
|
91672
|
+
"This vault uses Vesu for lending and borrowing. The oracle used by this pool is a ",
|
|
91673
|
+
highlightTextWithLinks("conversion rate oracle", [{ highlight: "conversion rate oracle", link: "https://docs.pragma.build/starknet/development#conversion-rate" }]),
|
|
91674
|
+
"which is resilient to liquidity issues and price volatility, hence reducing the risk of liquidation. However, overtime, if left un-monitored, debt can increase enough to trigger a liquidation. But no worries, our continuous monitoring systems look for situations with reduced health factor and balance collateral/debt to bring it back to safe levels. With Troves, you can have a peaceful sleep."
|
|
91675
|
+
] }),
|
|
91651
91676
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { backgroundColor: "#222", padding: "10px", borderRadius: "8px", marginBottom: "20px", border: "1px solid #444" }, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { style: { fontSize: "13px", color: "#ccc" }, children: [
|
|
91652
91677
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("strong", { children: "Withdrawals:" }),
|
|
91653
91678
|
" Requests can take up to ",
|
|
@@ -91656,8 +91681,8 @@ spurious results.`);
|
|
|
91656
91681
|
] }) })
|
|
91657
91682
|
] });
|
|
91658
91683
|
}
|
|
91659
|
-
function getDescription2(tokenSymbol) {
|
|
91660
|
-
return VaultDescription();
|
|
91684
|
+
function getDescription2(tokenSymbol, underlyingSymbol) {
|
|
91685
|
+
return VaultDescription(tokenSymbol, underlyingSymbol);
|
|
91661
91686
|
}
|
|
91662
91687
|
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1) {
|
|
91663
91688
|
vaultSettings.leafAdapters = [];
|
|
@@ -91698,11 +91723,12 @@ spurious results.`);
|
|
|
91698
91723
|
vaultSettings.leafAdapters.push(commonAdapter.getAvnuAdapter(STRKToken.address, lstToken.address, "avnu_swap_rewards" /* AVNU_SWAP_REWARDS */).bind(commonAdapter));
|
|
91699
91724
|
return vaultSettings;
|
|
91700
91725
|
}
|
|
91726
|
+
var AUDIT_URL4 = "https://docs.troves.fi/p/security#starknet-vault-kit";
|
|
91701
91727
|
function getFAQs2(lstSymbol, underlyingSymbol) {
|
|
91702
91728
|
return [
|
|
91703
91729
|
{
|
|
91704
91730
|
question: `What is the Hyper ${lstSymbol} Vault?`,
|
|
91705
|
-
answer: `The Hyper ${lstSymbol} Vault is a tokenized strategy that automatically loops your ${
|
|
91731
|
+
answer: `The Hyper ${lstSymbol} Vault is a tokenized strategy that automatically loops your ${lstSymbol} to create up to 5x leverage to hence yield in a very low risk manner.`
|
|
91706
91732
|
},
|
|
91707
91733
|
{
|
|
91708
91734
|
question: "How does yield allocation work?",
|
|
@@ -91746,8 +91772,9 @@ spurious results.`);
|
|
|
91746
91772
|
}
|
|
91747
91773
|
var _riskFactor4 = [
|
|
91748
91774
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 25, reason: "Audited by Zellic" },
|
|
91749
|
-
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1 /* VERY_LOW_PROBABILITY */, weight:
|
|
91750
|
-
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1 /* STABLE_INFRASTRUCTURE */, weight:
|
|
91775
|
+
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1 /* VERY_LOW_PROBABILITY */, weight: 25, reason: "The collateral and debt are highly correlated" },
|
|
91776
|
+
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1 /* STABLE_INFRASTRUCTURE */, weight: 25, reason: "Liquidation can only happen if vault is left un-monitored for weeks, which is highly unlikely. We actively monitor all services on a daily basis." },
|
|
91777
|
+
{ type: "Depeg Risk" /* DEPEG_RISK */, value: 2 /* GENERALLY_STABLE */, weight: 25, reason: "Generally stable pegged assets" }
|
|
91751
91778
|
];
|
|
91752
91779
|
var hyperxSTRK = {
|
|
91753
91780
|
vaultAddress: ContractAddr.from("0x46c7a54c82b1fe374353859f554a40b8bd31d3e30f742901579e7b57b1b5960"),
|
|
@@ -91810,14 +91837,13 @@ spurious results.`);
|
|
|
91810
91837
|
`The vault manager loops the ${underlyingSymbol} to buy ${lstSymbol}`,
|
|
91811
91838
|
`The vault manager collateralizes the ${lstSymbol} on Vesu`,
|
|
91812
91839
|
`The vault manager borrows more ${underlyingSymbol} to loop further`,
|
|
91813
|
-
`Claim BTCFi STRK rewards weekly to swap to ${lstSymbol} and reinvest`,
|
|
91814
91840
|
`If required, adjust leverage or re-allocate assets within LST pool on Vesu to optimize yield`
|
|
91815
91841
|
];
|
|
91816
91842
|
}
|
|
91817
91843
|
function getStrategySettings(lstSymbol, underlyingSymbol, addresses, isPreview = false) {
|
|
91818
91844
|
return {
|
|
91819
91845
|
name: `Hyper ${lstSymbol}`,
|
|
91820
|
-
description: getDescription2(lstSymbol),
|
|
91846
|
+
description: getDescription2(lstSymbol, underlyingSymbol),
|
|
91821
91847
|
address: addresses.vaultAddress,
|
|
91822
91848
|
launchBlock: 0,
|
|
91823
91849
|
type: "Other",
|
|
@@ -91828,6 +91854,7 @@ spurious results.`);
|
|
|
91828
91854
|
netRisk: _riskFactor4.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor4.reduce((acc, curr) => acc + curr.weight, 0),
|
|
91829
91855
|
notARisks: getNoRiskTags(_riskFactor4)
|
|
91830
91856
|
},
|
|
91857
|
+
auditUrl: AUDIT_URL4,
|
|
91831
91858
|
protocols: [Protocols.ENDUR, Protocols.VESU],
|
|
91832
91859
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
91833
91860
|
contractDetails: getContractDetails(addresses),
|
package/dist/index.browser.mjs
CHANGED
|
@@ -15563,8 +15563,8 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15563
15563
|
) / 1e4;
|
|
15564
15564
|
return apyForGivenBlocks * (365 * 24 * 3600) / timeDiffSeconds;
|
|
15565
15565
|
}
|
|
15566
|
-
async feeBasedAPY(
|
|
15567
|
-
const feeInfo = await this.getFeeHistory(
|
|
15566
|
+
async feeBasedAPY(timeperiod = "24h") {
|
|
15567
|
+
const feeInfo = await this.getFeeHistory(timeperiod);
|
|
15568
15568
|
const tvlNow = await this.getTVL("latest");
|
|
15569
15569
|
return feeInfo.summary.usdValue * 365 / tvlNow.usdValue;
|
|
15570
15570
|
}
|
|
@@ -15572,12 +15572,12 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15572
15572
|
* Calculates assets before and now in a given token of TVL per share to observe growth
|
|
15573
15573
|
* @returns {Promise<number>} The weighted average APY across all pools
|
|
15574
15574
|
*/
|
|
15575
|
-
async netAPY(blockIdentifier = "latest", sinceBlocks = 6e5) {
|
|
15575
|
+
async netAPY(blockIdentifier = "latest", sinceBlocks = 6e5, timeperiod = "24h") {
|
|
15576
15576
|
const isUSDCQouteToken = this.metadata.additionalInfo.quoteAsset.symbol === "USDC";
|
|
15577
15577
|
if (!isUSDCQouteToken) {
|
|
15578
15578
|
return this.netSharesBasedTrueAPY(blockIdentifier, sinceBlocks);
|
|
15579
15579
|
} else {
|
|
15580
|
-
return this.feeBasedAPY(
|
|
15580
|
+
return this.feeBasedAPY(timeperiod);
|
|
15581
15581
|
}
|
|
15582
15582
|
}
|
|
15583
15583
|
async getHarvestRewardShares(fromBlock, toBlock) {
|
|
@@ -16557,7 +16557,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
16557
16557
|
return [baseFlow, rebalanceFlow];
|
|
16558
16558
|
}
|
|
16559
16559
|
};
|
|
16560
|
-
var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and
|
|
16560
|
+
var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and any rewards are automatically compounded back into the strategy. In return, you receive an ERC-20 token representing your share of the strategy";
|
|
16561
16561
|
var _protocol2 = {
|
|
16562
16562
|
name: "Ekubo",
|
|
16563
16563
|
logo: "https://app.ekubo.org/favicon.ico"
|
|
@@ -16594,7 +16594,7 @@ var highRisk = {
|
|
|
16594
16594
|
netRisk: highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16595
16595
|
notARisks: getNoRiskTags(highVolatilityPoolRiskFactors)
|
|
16596
16596
|
};
|
|
16597
|
-
var AUDIT_URL2 = "https://
|
|
16597
|
+
var AUDIT_URL2 = "https://docs.troves.fi/p/security#ekubo-vault";
|
|
16598
16598
|
var faqs2 = [
|
|
16599
16599
|
{
|
|
16600
16600
|
question: "What is the Ekubo CL Vault strategy?",
|
|
@@ -16602,7 +16602,7 @@ var faqs2 = [
|
|
|
16602
16602
|
},
|
|
16603
16603
|
{
|
|
16604
16604
|
question: "How are trading fees and rewards handled?",
|
|
16605
|
-
answer: "Trading fees and
|
|
16605
|
+
answer: "Trading fees and any rewards are automatically compounded back into the strategy, increasing your overall returns."
|
|
16606
16606
|
},
|
|
16607
16607
|
{
|
|
16608
16608
|
question: "What happens during withdrawal?",
|
|
@@ -16979,7 +16979,7 @@ EkuboCLVaultStrategies.forEach((s) => {
|
|
|
16979
16979
|
s.investmentSteps = [
|
|
16980
16980
|
"Supply tokens to Ekubo's pool",
|
|
16981
16981
|
"Monitor and Rebalance position to optimize yield",
|
|
16982
|
-
"Harvest and
|
|
16982
|
+
"Harvest and re-invest any rewards every week (Auto-compound)"
|
|
16983
16983
|
];
|
|
16984
16984
|
});
|
|
16985
16985
|
|
|
@@ -27425,6 +27425,7 @@ var investmentSteps = [
|
|
|
27425
27425
|
"Vault manager reports asset under management (AUM) regularly to the vault",
|
|
27426
27426
|
"Request withdrawal and vault manager processes it in 1-2 hours"
|
|
27427
27427
|
];
|
|
27428
|
+
var AUDIT_URL3 = "https://docs.troves.fi/p/security#starknet-vault-kit";
|
|
27428
27429
|
var UniversalStrategies = [
|
|
27429
27430
|
{
|
|
27430
27431
|
name: "USDC Evergreen",
|
|
@@ -27439,6 +27440,7 @@ var UniversalStrategies = [
|
|
|
27439
27440
|
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
27440
27441
|
notARisks: getNoRiskTags(_riskFactor3)
|
|
27441
27442
|
},
|
|
27443
|
+
auditUrl: AUDIT_URL3,
|
|
27442
27444
|
protocols: [Protocols.VESU],
|
|
27443
27445
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
27444
27446
|
contractDetails: getContractDetails(usdcVaultSettings),
|
|
@@ -27462,7 +27464,8 @@ var UniversalStrategies = [
|
|
|
27462
27464
|
maxTVL: Web3Number.fromWei(0, 8),
|
|
27463
27465
|
contractDetails: getContractDetails(wbtcVaultSettings),
|
|
27464
27466
|
faqs: getFAQs(),
|
|
27465
|
-
investmentSteps
|
|
27467
|
+
investmentSteps,
|
|
27468
|
+
auditUrl: AUDIT_URL3
|
|
27466
27469
|
},
|
|
27467
27470
|
{
|
|
27468
27471
|
name: "ETH Evergreen",
|
|
@@ -27481,7 +27484,8 @@ var UniversalStrategies = [
|
|
|
27481
27484
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
27482
27485
|
contractDetails: getContractDetails(ethVaultSettings),
|
|
27483
27486
|
faqs: getFAQs(),
|
|
27484
|
-
investmentSteps
|
|
27487
|
+
investmentSteps,
|
|
27488
|
+
auditUrl: AUDIT_URL3
|
|
27485
27489
|
},
|
|
27486
27490
|
{
|
|
27487
27491
|
name: "STRK Evergreen",
|
|
@@ -27500,7 +27504,8 @@ var UniversalStrategies = [
|
|
|
27500
27504
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
27501
27505
|
contractDetails: getContractDetails(strkVaultSettings),
|
|
27502
27506
|
faqs: getFAQs(),
|
|
27503
|
-
investmentSteps
|
|
27507
|
+
investmentSteps,
|
|
27508
|
+
auditUrl: AUDIT_URL3
|
|
27504
27509
|
},
|
|
27505
27510
|
{
|
|
27506
27511
|
name: "USDT Evergreen",
|
|
@@ -27519,7 +27524,8 @@ var UniversalStrategies = [
|
|
|
27519
27524
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
27520
27525
|
contractDetails: getContractDetails(usdtVaultSettings),
|
|
27521
27526
|
faqs: getFAQs(),
|
|
27522
|
-
investmentSteps
|
|
27527
|
+
investmentSteps,
|
|
27528
|
+
auditUrl: AUDIT_URL3
|
|
27523
27529
|
}
|
|
27524
27530
|
];
|
|
27525
27531
|
|
|
@@ -27729,7 +27735,7 @@ var UniversalLstMultiplierStrategy = class _UniversalLstMultiplierStrategy exten
|
|
|
27729
27735
|
return [this.getManageCall(proofsIDs, manageCalls)];
|
|
27730
27736
|
}
|
|
27731
27737
|
};
|
|
27732
|
-
function VaultDescription() {
|
|
27738
|
+
function VaultDescription(lstSymbol, underlyingSymbol) {
|
|
27733
27739
|
const containerStyle = {
|
|
27734
27740
|
maxWidth: "800px",
|
|
27735
27741
|
margin: "0 auto",
|
|
@@ -27739,8 +27745,27 @@ function VaultDescription() {
|
|
|
27739
27745
|
borderRadius: "12px"
|
|
27740
27746
|
};
|
|
27741
27747
|
return /* @__PURE__ */ jsxs4("div", { style: containerStyle, children: [
|
|
27742
|
-
/* @__PURE__ */
|
|
27743
|
-
|
|
27748
|
+
/* @__PURE__ */ jsxs4("h1", { style: { fontSize: "18px", marginBottom: "10px" }, children: [
|
|
27749
|
+
"Liquidation risk managed leverged ",
|
|
27750
|
+
lstSymbol,
|
|
27751
|
+
" Vault"
|
|
27752
|
+
] }),
|
|
27753
|
+
/* @__PURE__ */ jsxs4("p", { style: { fontSize: "14px", lineHeight: "1.5", marginBottom: "16px" }, children: [
|
|
27754
|
+
"This Levered Endur ",
|
|
27755
|
+
lstSymbol,
|
|
27756
|
+
" vault is a tokenized leveraged Vault, auto-compounding strategy that takes upto 5x leverage on ",
|
|
27757
|
+
lstSymbol,
|
|
27758
|
+
" by borrow ",
|
|
27759
|
+
underlyingSymbol,
|
|
27760
|
+
". Borrowed amount is swapped to ",
|
|
27761
|
+
lstSymbol,
|
|
27762
|
+
" to create leverage. Depositors receive vault shares that represent a proportional claim on the underlying assets and accrued yield."
|
|
27763
|
+
] }),
|
|
27764
|
+
/* @__PURE__ */ jsxs4("p", { style: { fontSize: "14px", lineHeight: "1.5", marginBottom: "16px" }, children: [
|
|
27765
|
+
"This vault uses Vesu for lending and borrowing. The oracle used by this pool is a ",
|
|
27766
|
+
highlightTextWithLinks("conversion rate oracle", [{ highlight: "conversion rate oracle", link: "https://docs.pragma.build/starknet/development#conversion-rate" }]),
|
|
27767
|
+
"which is resilient to liquidity issues and price volatility, hence reducing the risk of liquidation. However, overtime, if left un-monitored, debt can increase enough to trigger a liquidation. But no worries, our continuous monitoring systems look for situations with reduced health factor and balance collateral/debt to bring it back to safe levels. With Troves, you can have a peaceful sleep."
|
|
27768
|
+
] }),
|
|
27744
27769
|
/* @__PURE__ */ jsx5("div", { style: { backgroundColor: "#222", padding: "10px", borderRadius: "8px", marginBottom: "20px", border: "1px solid #444" }, children: /* @__PURE__ */ jsxs4("p", { style: { fontSize: "13px", color: "#ccc" }, children: [
|
|
27745
27770
|
/* @__PURE__ */ jsx5("strong", { children: "Withdrawals:" }),
|
|
27746
27771
|
" Requests can take up to ",
|
|
@@ -27749,8 +27774,8 @@ function VaultDescription() {
|
|
|
27749
27774
|
] }) })
|
|
27750
27775
|
] });
|
|
27751
27776
|
}
|
|
27752
|
-
function getDescription2(tokenSymbol) {
|
|
27753
|
-
return VaultDescription();
|
|
27777
|
+
function getDescription2(tokenSymbol, underlyingSymbol) {
|
|
27778
|
+
return VaultDescription(tokenSymbol, underlyingSymbol);
|
|
27754
27779
|
}
|
|
27755
27780
|
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1) {
|
|
27756
27781
|
vaultSettings.leafAdapters = [];
|
|
@@ -27791,11 +27816,12 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1) {
|
|
|
27791
27816
|
vaultSettings.leafAdapters.push(commonAdapter.getAvnuAdapter(STRKToken.address, lstToken.address, "avnu_swap_rewards" /* AVNU_SWAP_REWARDS */).bind(commonAdapter));
|
|
27792
27817
|
return vaultSettings;
|
|
27793
27818
|
}
|
|
27819
|
+
var AUDIT_URL4 = "https://docs.troves.fi/p/security#starknet-vault-kit";
|
|
27794
27820
|
function getFAQs2(lstSymbol, underlyingSymbol) {
|
|
27795
27821
|
return [
|
|
27796
27822
|
{
|
|
27797
27823
|
question: `What is the Hyper ${lstSymbol} Vault?`,
|
|
27798
|
-
answer: `The Hyper ${lstSymbol} Vault is a tokenized strategy that automatically loops your ${
|
|
27824
|
+
answer: `The Hyper ${lstSymbol} Vault is a tokenized strategy that automatically loops your ${lstSymbol} to create up to 5x leverage to hence yield in a very low risk manner.`
|
|
27799
27825
|
},
|
|
27800
27826
|
{
|
|
27801
27827
|
question: "How does yield allocation work?",
|
|
@@ -27839,8 +27865,9 @@ function getFAQs2(lstSymbol, underlyingSymbol) {
|
|
|
27839
27865
|
}
|
|
27840
27866
|
var _riskFactor4 = [
|
|
27841
27867
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 25, reason: "Audited by Zellic" },
|
|
27842
|
-
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1 /* VERY_LOW_PROBABILITY */, weight:
|
|
27843
|
-
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1 /* STABLE_INFRASTRUCTURE */, weight:
|
|
27868
|
+
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1 /* VERY_LOW_PROBABILITY */, weight: 25, reason: "The collateral and debt are highly correlated" },
|
|
27869
|
+
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1 /* STABLE_INFRASTRUCTURE */, weight: 25, reason: "Liquidation can only happen if vault is left un-monitored for weeks, which is highly unlikely. We actively monitor all services on a daily basis." },
|
|
27870
|
+
{ type: "Depeg Risk" /* DEPEG_RISK */, value: 2 /* GENERALLY_STABLE */, weight: 25, reason: "Generally stable pegged assets" }
|
|
27844
27871
|
];
|
|
27845
27872
|
var hyperxSTRK = {
|
|
27846
27873
|
vaultAddress: ContractAddr.from("0x46c7a54c82b1fe374353859f554a40b8bd31d3e30f742901579e7b57b1b5960"),
|
|
@@ -27903,14 +27930,13 @@ function getInvestmentSteps(lstSymbol, underlyingSymbol) {
|
|
|
27903
27930
|
`The vault manager loops the ${underlyingSymbol} to buy ${lstSymbol}`,
|
|
27904
27931
|
`The vault manager collateralizes the ${lstSymbol} on Vesu`,
|
|
27905
27932
|
`The vault manager borrows more ${underlyingSymbol} to loop further`,
|
|
27906
|
-
`Claim BTCFi STRK rewards weekly to swap to ${lstSymbol} and reinvest`,
|
|
27907
27933
|
`If required, adjust leverage or re-allocate assets within LST pool on Vesu to optimize yield`
|
|
27908
27934
|
];
|
|
27909
27935
|
}
|
|
27910
27936
|
function getStrategySettings(lstSymbol, underlyingSymbol, addresses, isPreview = false) {
|
|
27911
27937
|
return {
|
|
27912
27938
|
name: `Hyper ${lstSymbol}`,
|
|
27913
|
-
description: getDescription2(lstSymbol),
|
|
27939
|
+
description: getDescription2(lstSymbol, underlyingSymbol),
|
|
27914
27940
|
address: addresses.vaultAddress,
|
|
27915
27941
|
launchBlock: 0,
|
|
27916
27942
|
type: "Other",
|
|
@@ -27921,6 +27947,7 @@ function getStrategySettings(lstSymbol, underlyingSymbol, addresses, isPreview =
|
|
|
27921
27947
|
netRisk: _riskFactor4.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor4.reduce((acc, curr) => acc + curr.weight, 0),
|
|
27922
27948
|
notARisks: getNoRiskTags(_riskFactor4)
|
|
27923
27949
|
},
|
|
27950
|
+
auditUrl: AUDIT_URL4,
|
|
27924
27951
|
protocols: [Protocols.ENDUR, Protocols.VESU],
|
|
27925
27952
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
27926
27953
|
contractDetails: getContractDetails(addresses),
|
package/dist/index.d.ts
CHANGED
|
@@ -706,12 +706,12 @@ declare class EkuboCLVault extends BaseStrategy<DualTokenInfo, DualActionAmount>
|
|
|
706
706
|
history: FeeHistory[];
|
|
707
707
|
}>;
|
|
708
708
|
netSharesBasedTrueAPY(blockIdentifier?: BlockIdentifier, sinceBlocks?: number): Promise<number>;
|
|
709
|
-
feeBasedAPY(
|
|
709
|
+
feeBasedAPY(timeperiod?: '24h' | '30d' | '3m'): Promise<number>;
|
|
710
710
|
/**
|
|
711
711
|
* Calculates assets before and now in a given token of TVL per share to observe growth
|
|
712
712
|
* @returns {Promise<number>} The weighted average APY across all pools
|
|
713
713
|
*/
|
|
714
|
-
netAPY(blockIdentifier?: BlockIdentifier, sinceBlocks?: number): Promise<number>;
|
|
714
|
+
netAPY(blockIdentifier?: BlockIdentifier, sinceBlocks?: number, timeperiod?: '24h' | '30d' | '3m'): Promise<number>;
|
|
715
715
|
getHarvestRewardShares(fromBlock: number, toBlock: number): Promise<Web3Number>;
|
|
716
716
|
balanceOf(user: ContractAddr, blockIdentifier?: BlockIdentifier): Promise<Web3Number>;
|
|
717
717
|
getUserTVL(user: ContractAddr, blockIdentifier?: BlockIdentifier): Promise<DualTokenInfo>;
|
package/dist/index.js
CHANGED
|
@@ -15659,8 +15659,8 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15659
15659
|
) / 1e4;
|
|
15660
15660
|
return apyForGivenBlocks * (365 * 24 * 3600) / timeDiffSeconds;
|
|
15661
15661
|
}
|
|
15662
|
-
async feeBasedAPY(
|
|
15663
|
-
const feeInfo = await this.getFeeHistory(
|
|
15662
|
+
async feeBasedAPY(timeperiod = "24h") {
|
|
15663
|
+
const feeInfo = await this.getFeeHistory(timeperiod);
|
|
15664
15664
|
const tvlNow = await this.getTVL("latest");
|
|
15665
15665
|
return feeInfo.summary.usdValue * 365 / tvlNow.usdValue;
|
|
15666
15666
|
}
|
|
@@ -15668,12 +15668,12 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15668
15668
|
* Calculates assets before and now in a given token of TVL per share to observe growth
|
|
15669
15669
|
* @returns {Promise<number>} The weighted average APY across all pools
|
|
15670
15670
|
*/
|
|
15671
|
-
async netAPY(blockIdentifier = "latest", sinceBlocks = 6e5) {
|
|
15671
|
+
async netAPY(blockIdentifier = "latest", sinceBlocks = 6e5, timeperiod = "24h") {
|
|
15672
15672
|
const isUSDCQouteToken = this.metadata.additionalInfo.quoteAsset.symbol === "USDC";
|
|
15673
15673
|
if (!isUSDCQouteToken) {
|
|
15674
15674
|
return this.netSharesBasedTrueAPY(blockIdentifier, sinceBlocks);
|
|
15675
15675
|
} else {
|
|
15676
|
-
return this.feeBasedAPY(
|
|
15676
|
+
return this.feeBasedAPY(timeperiod);
|
|
15677
15677
|
}
|
|
15678
15678
|
}
|
|
15679
15679
|
async getHarvestRewardShares(fromBlock, toBlock) {
|
|
@@ -16653,7 +16653,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
16653
16653
|
return [baseFlow, rebalanceFlow];
|
|
16654
16654
|
}
|
|
16655
16655
|
};
|
|
16656
|
-
var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and
|
|
16656
|
+
var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and any rewards are automatically compounded back into the strategy. In return, you receive an ERC-20 token representing your share of the strategy";
|
|
16657
16657
|
var _protocol2 = {
|
|
16658
16658
|
name: "Ekubo",
|
|
16659
16659
|
logo: "https://app.ekubo.org/favicon.ico"
|
|
@@ -16690,7 +16690,7 @@ var highRisk = {
|
|
|
16690
16690
|
netRisk: highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16691
16691
|
notARisks: getNoRiskTags(highVolatilityPoolRiskFactors)
|
|
16692
16692
|
};
|
|
16693
|
-
var AUDIT_URL2 = "https://
|
|
16693
|
+
var AUDIT_URL2 = "https://docs.troves.fi/p/security#ekubo-vault";
|
|
16694
16694
|
var faqs2 = [
|
|
16695
16695
|
{
|
|
16696
16696
|
question: "What is the Ekubo CL Vault strategy?",
|
|
@@ -16698,7 +16698,7 @@ var faqs2 = [
|
|
|
16698
16698
|
},
|
|
16699
16699
|
{
|
|
16700
16700
|
question: "How are trading fees and rewards handled?",
|
|
16701
|
-
answer: "Trading fees and
|
|
16701
|
+
answer: "Trading fees and any rewards are automatically compounded back into the strategy, increasing your overall returns."
|
|
16702
16702
|
},
|
|
16703
16703
|
{
|
|
16704
16704
|
question: "What happens during withdrawal?",
|
|
@@ -17075,7 +17075,7 @@ EkuboCLVaultStrategies.forEach((s) => {
|
|
|
17075
17075
|
s.investmentSteps = [
|
|
17076
17076
|
"Supply tokens to Ekubo's pool",
|
|
17077
17077
|
"Monitor and Rebalance position to optimize yield",
|
|
17078
|
-
"Harvest and
|
|
17078
|
+
"Harvest and re-invest any rewards every week (Auto-compound)"
|
|
17079
17079
|
];
|
|
17080
17080
|
});
|
|
17081
17081
|
|
|
@@ -27521,6 +27521,7 @@ var investmentSteps = [
|
|
|
27521
27521
|
"Vault manager reports asset under management (AUM) regularly to the vault",
|
|
27522
27522
|
"Request withdrawal and vault manager processes it in 1-2 hours"
|
|
27523
27523
|
];
|
|
27524
|
+
var AUDIT_URL3 = "https://docs.troves.fi/p/security#starknet-vault-kit";
|
|
27524
27525
|
var UniversalStrategies = [
|
|
27525
27526
|
{
|
|
27526
27527
|
name: "USDC Evergreen",
|
|
@@ -27535,6 +27536,7 @@ var UniversalStrategies = [
|
|
|
27535
27536
|
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
27536
27537
|
notARisks: getNoRiskTags(_riskFactor3)
|
|
27537
27538
|
},
|
|
27539
|
+
auditUrl: AUDIT_URL3,
|
|
27538
27540
|
protocols: [Protocols.VESU],
|
|
27539
27541
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
27540
27542
|
contractDetails: getContractDetails(usdcVaultSettings),
|
|
@@ -27558,7 +27560,8 @@ var UniversalStrategies = [
|
|
|
27558
27560
|
maxTVL: Web3Number.fromWei(0, 8),
|
|
27559
27561
|
contractDetails: getContractDetails(wbtcVaultSettings),
|
|
27560
27562
|
faqs: getFAQs(),
|
|
27561
|
-
investmentSteps
|
|
27563
|
+
investmentSteps,
|
|
27564
|
+
auditUrl: AUDIT_URL3
|
|
27562
27565
|
},
|
|
27563
27566
|
{
|
|
27564
27567
|
name: "ETH Evergreen",
|
|
@@ -27577,7 +27580,8 @@ var UniversalStrategies = [
|
|
|
27577
27580
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
27578
27581
|
contractDetails: getContractDetails(ethVaultSettings),
|
|
27579
27582
|
faqs: getFAQs(),
|
|
27580
|
-
investmentSteps
|
|
27583
|
+
investmentSteps,
|
|
27584
|
+
auditUrl: AUDIT_URL3
|
|
27581
27585
|
},
|
|
27582
27586
|
{
|
|
27583
27587
|
name: "STRK Evergreen",
|
|
@@ -27596,7 +27600,8 @@ var UniversalStrategies = [
|
|
|
27596
27600
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
27597
27601
|
contractDetails: getContractDetails(strkVaultSettings),
|
|
27598
27602
|
faqs: getFAQs(),
|
|
27599
|
-
investmentSteps
|
|
27603
|
+
investmentSteps,
|
|
27604
|
+
auditUrl: AUDIT_URL3
|
|
27600
27605
|
},
|
|
27601
27606
|
{
|
|
27602
27607
|
name: "USDT Evergreen",
|
|
@@ -27615,7 +27620,8 @@ var UniversalStrategies = [
|
|
|
27615
27620
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
27616
27621
|
contractDetails: getContractDetails(usdtVaultSettings),
|
|
27617
27622
|
faqs: getFAQs(),
|
|
27618
|
-
investmentSteps
|
|
27623
|
+
investmentSteps,
|
|
27624
|
+
auditUrl: AUDIT_URL3
|
|
27619
27625
|
}
|
|
27620
27626
|
];
|
|
27621
27627
|
|
|
@@ -27825,7 +27831,7 @@ var UniversalLstMultiplierStrategy = class _UniversalLstMultiplierStrategy exten
|
|
|
27825
27831
|
return [this.getManageCall(proofsIDs, manageCalls)];
|
|
27826
27832
|
}
|
|
27827
27833
|
};
|
|
27828
|
-
function VaultDescription() {
|
|
27834
|
+
function VaultDescription(lstSymbol, underlyingSymbol) {
|
|
27829
27835
|
const containerStyle = {
|
|
27830
27836
|
maxWidth: "800px",
|
|
27831
27837
|
margin: "0 auto",
|
|
@@ -27835,8 +27841,27 @@ function VaultDescription() {
|
|
|
27835
27841
|
borderRadius: "12px"
|
|
27836
27842
|
};
|
|
27837
27843
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: containerStyle, children: [
|
|
27838
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.
|
|
27839
|
-
|
|
27844
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("h1", { style: { fontSize: "18px", marginBottom: "10px" }, children: [
|
|
27845
|
+
"Liquidation risk managed leverged ",
|
|
27846
|
+
lstSymbol,
|
|
27847
|
+
" Vault"
|
|
27848
|
+
] }),
|
|
27849
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { style: { fontSize: "14px", lineHeight: "1.5", marginBottom: "16px" }, children: [
|
|
27850
|
+
"This Levered Endur ",
|
|
27851
|
+
lstSymbol,
|
|
27852
|
+
" vault is a tokenized leveraged Vault, auto-compounding strategy that takes upto 5x leverage on ",
|
|
27853
|
+
lstSymbol,
|
|
27854
|
+
" by borrow ",
|
|
27855
|
+
underlyingSymbol,
|
|
27856
|
+
". Borrowed amount is swapped to ",
|
|
27857
|
+
lstSymbol,
|
|
27858
|
+
" to create leverage. Depositors receive vault shares that represent a proportional claim on the underlying assets and accrued yield."
|
|
27859
|
+
] }),
|
|
27860
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { style: { fontSize: "14px", lineHeight: "1.5", marginBottom: "16px" }, children: [
|
|
27861
|
+
"This vault uses Vesu for lending and borrowing. The oracle used by this pool is a ",
|
|
27862
|
+
highlightTextWithLinks("conversion rate oracle", [{ highlight: "conversion rate oracle", link: "https://docs.pragma.build/starknet/development#conversion-rate" }]),
|
|
27863
|
+
"which is resilient to liquidity issues and price volatility, hence reducing the risk of liquidation. However, overtime, if left un-monitored, debt can increase enough to trigger a liquidation. But no worries, our continuous monitoring systems look for situations with reduced health factor and balance collateral/debt to bring it back to safe levels. With Troves, you can have a peaceful sleep."
|
|
27864
|
+
] }),
|
|
27840
27865
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { style: { backgroundColor: "#222", padding: "10px", borderRadius: "8px", marginBottom: "20px", border: "1px solid #444" }, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { style: { fontSize: "13px", color: "#ccc" }, children: [
|
|
27841
27866
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("strong", { children: "Withdrawals:" }),
|
|
27842
27867
|
" Requests can take up to ",
|
|
@@ -27845,8 +27870,8 @@ function VaultDescription() {
|
|
|
27845
27870
|
] }) })
|
|
27846
27871
|
] });
|
|
27847
27872
|
}
|
|
27848
|
-
function getDescription2(tokenSymbol) {
|
|
27849
|
-
return VaultDescription();
|
|
27873
|
+
function getDescription2(tokenSymbol, underlyingSymbol) {
|
|
27874
|
+
return VaultDescription(tokenSymbol, underlyingSymbol);
|
|
27850
27875
|
}
|
|
27851
27876
|
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1) {
|
|
27852
27877
|
vaultSettings.leafAdapters = [];
|
|
@@ -27887,11 +27912,12 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1) {
|
|
|
27887
27912
|
vaultSettings.leafAdapters.push(commonAdapter.getAvnuAdapter(STRKToken.address, lstToken.address, "avnu_swap_rewards" /* AVNU_SWAP_REWARDS */).bind(commonAdapter));
|
|
27888
27913
|
return vaultSettings;
|
|
27889
27914
|
}
|
|
27915
|
+
var AUDIT_URL4 = "https://docs.troves.fi/p/security#starknet-vault-kit";
|
|
27890
27916
|
function getFAQs2(lstSymbol, underlyingSymbol) {
|
|
27891
27917
|
return [
|
|
27892
27918
|
{
|
|
27893
27919
|
question: `What is the Hyper ${lstSymbol} Vault?`,
|
|
27894
|
-
answer: `The Hyper ${lstSymbol} Vault is a tokenized strategy that automatically loops your ${
|
|
27920
|
+
answer: `The Hyper ${lstSymbol} Vault is a tokenized strategy that automatically loops your ${lstSymbol} to create up to 5x leverage to hence yield in a very low risk manner.`
|
|
27895
27921
|
},
|
|
27896
27922
|
{
|
|
27897
27923
|
question: "How does yield allocation work?",
|
|
@@ -27935,8 +27961,9 @@ function getFAQs2(lstSymbol, underlyingSymbol) {
|
|
|
27935
27961
|
}
|
|
27936
27962
|
var _riskFactor4 = [
|
|
27937
27963
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 25, reason: "Audited by Zellic" },
|
|
27938
|
-
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1 /* VERY_LOW_PROBABILITY */, weight:
|
|
27939
|
-
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1 /* STABLE_INFRASTRUCTURE */, weight:
|
|
27964
|
+
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1 /* VERY_LOW_PROBABILITY */, weight: 25, reason: "The collateral and debt are highly correlated" },
|
|
27965
|
+
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1 /* STABLE_INFRASTRUCTURE */, weight: 25, reason: "Liquidation can only happen if vault is left un-monitored for weeks, which is highly unlikely. We actively monitor all services on a daily basis." },
|
|
27966
|
+
{ type: "Depeg Risk" /* DEPEG_RISK */, value: 2 /* GENERALLY_STABLE */, weight: 25, reason: "Generally stable pegged assets" }
|
|
27940
27967
|
];
|
|
27941
27968
|
var hyperxSTRK = {
|
|
27942
27969
|
vaultAddress: ContractAddr.from("0x46c7a54c82b1fe374353859f554a40b8bd31d3e30f742901579e7b57b1b5960"),
|
|
@@ -27999,14 +28026,13 @@ function getInvestmentSteps(lstSymbol, underlyingSymbol) {
|
|
|
27999
28026
|
`The vault manager loops the ${underlyingSymbol} to buy ${lstSymbol}`,
|
|
28000
28027
|
`The vault manager collateralizes the ${lstSymbol} on Vesu`,
|
|
28001
28028
|
`The vault manager borrows more ${underlyingSymbol} to loop further`,
|
|
28002
|
-
`Claim BTCFi STRK rewards weekly to swap to ${lstSymbol} and reinvest`,
|
|
28003
28029
|
`If required, adjust leverage or re-allocate assets within LST pool on Vesu to optimize yield`
|
|
28004
28030
|
];
|
|
28005
28031
|
}
|
|
28006
28032
|
function getStrategySettings(lstSymbol, underlyingSymbol, addresses, isPreview = false) {
|
|
28007
28033
|
return {
|
|
28008
28034
|
name: `Hyper ${lstSymbol}`,
|
|
28009
|
-
description: getDescription2(lstSymbol),
|
|
28035
|
+
description: getDescription2(lstSymbol, underlyingSymbol),
|
|
28010
28036
|
address: addresses.vaultAddress,
|
|
28011
28037
|
launchBlock: 0,
|
|
28012
28038
|
type: "Other",
|
|
@@ -28017,6 +28043,7 @@ function getStrategySettings(lstSymbol, underlyingSymbol, addresses, isPreview =
|
|
|
28017
28043
|
netRisk: _riskFactor4.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor4.reduce((acc, curr) => acc + curr.weight, 0),
|
|
28018
28044
|
notARisks: getNoRiskTags(_riskFactor4)
|
|
28019
28045
|
},
|
|
28046
|
+
auditUrl: AUDIT_URL4,
|
|
28020
28047
|
protocols: [Protocols.ENDUR, Protocols.VESU],
|
|
28021
28048
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
28022
28049
|
contractDetails: getContractDetails(addresses),
|
package/dist/index.mjs
CHANGED
|
@@ -15562,8 +15562,8 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15562
15562
|
) / 1e4;
|
|
15563
15563
|
return apyForGivenBlocks * (365 * 24 * 3600) / timeDiffSeconds;
|
|
15564
15564
|
}
|
|
15565
|
-
async feeBasedAPY(
|
|
15566
|
-
const feeInfo = await this.getFeeHistory(
|
|
15565
|
+
async feeBasedAPY(timeperiod = "24h") {
|
|
15566
|
+
const feeInfo = await this.getFeeHistory(timeperiod);
|
|
15567
15567
|
const tvlNow = await this.getTVL("latest");
|
|
15568
15568
|
return feeInfo.summary.usdValue * 365 / tvlNow.usdValue;
|
|
15569
15569
|
}
|
|
@@ -15571,12 +15571,12 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15571
15571
|
* Calculates assets before and now in a given token of TVL per share to observe growth
|
|
15572
15572
|
* @returns {Promise<number>} The weighted average APY across all pools
|
|
15573
15573
|
*/
|
|
15574
|
-
async netAPY(blockIdentifier = "latest", sinceBlocks = 6e5) {
|
|
15574
|
+
async netAPY(blockIdentifier = "latest", sinceBlocks = 6e5, timeperiod = "24h") {
|
|
15575
15575
|
const isUSDCQouteToken = this.metadata.additionalInfo.quoteAsset.symbol === "USDC";
|
|
15576
15576
|
if (!isUSDCQouteToken) {
|
|
15577
15577
|
return this.netSharesBasedTrueAPY(blockIdentifier, sinceBlocks);
|
|
15578
15578
|
} else {
|
|
15579
|
-
return this.feeBasedAPY(
|
|
15579
|
+
return this.feeBasedAPY(timeperiod);
|
|
15580
15580
|
}
|
|
15581
15581
|
}
|
|
15582
15582
|
async getHarvestRewardShares(fromBlock, toBlock) {
|
|
@@ -16556,7 +16556,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
16556
16556
|
return [baseFlow, rebalanceFlow];
|
|
16557
16557
|
}
|
|
16558
16558
|
};
|
|
16559
|
-
var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and
|
|
16559
|
+
var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and any rewards are automatically compounded back into the strategy. In return, you receive an ERC-20 token representing your share of the strategy";
|
|
16560
16560
|
var _protocol2 = {
|
|
16561
16561
|
name: "Ekubo",
|
|
16562
16562
|
logo: "https://app.ekubo.org/favicon.ico"
|
|
@@ -16593,7 +16593,7 @@ var highRisk = {
|
|
|
16593
16593
|
netRisk: highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16594
16594
|
notARisks: getNoRiskTags(highVolatilityPoolRiskFactors)
|
|
16595
16595
|
};
|
|
16596
|
-
var AUDIT_URL2 = "https://
|
|
16596
|
+
var AUDIT_URL2 = "https://docs.troves.fi/p/security#ekubo-vault";
|
|
16597
16597
|
var faqs2 = [
|
|
16598
16598
|
{
|
|
16599
16599
|
question: "What is the Ekubo CL Vault strategy?",
|
|
@@ -16601,7 +16601,7 @@ var faqs2 = [
|
|
|
16601
16601
|
},
|
|
16602
16602
|
{
|
|
16603
16603
|
question: "How are trading fees and rewards handled?",
|
|
16604
|
-
answer: "Trading fees and
|
|
16604
|
+
answer: "Trading fees and any rewards are automatically compounded back into the strategy, increasing your overall returns."
|
|
16605
16605
|
},
|
|
16606
16606
|
{
|
|
16607
16607
|
question: "What happens during withdrawal?",
|
|
@@ -16978,7 +16978,7 @@ EkuboCLVaultStrategies.forEach((s) => {
|
|
|
16978
16978
|
s.investmentSteps = [
|
|
16979
16979
|
"Supply tokens to Ekubo's pool",
|
|
16980
16980
|
"Monitor and Rebalance position to optimize yield",
|
|
16981
|
-
"Harvest and
|
|
16981
|
+
"Harvest and re-invest any rewards every week (Auto-compound)"
|
|
16982
16982
|
];
|
|
16983
16983
|
});
|
|
16984
16984
|
|
|
@@ -27424,6 +27424,7 @@ var investmentSteps = [
|
|
|
27424
27424
|
"Vault manager reports asset under management (AUM) regularly to the vault",
|
|
27425
27425
|
"Request withdrawal and vault manager processes it in 1-2 hours"
|
|
27426
27426
|
];
|
|
27427
|
+
var AUDIT_URL3 = "https://docs.troves.fi/p/security#starknet-vault-kit";
|
|
27427
27428
|
var UniversalStrategies = [
|
|
27428
27429
|
{
|
|
27429
27430
|
name: "USDC Evergreen",
|
|
@@ -27438,6 +27439,7 @@ var UniversalStrategies = [
|
|
|
27438
27439
|
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
27439
27440
|
notARisks: getNoRiskTags(_riskFactor3)
|
|
27440
27441
|
},
|
|
27442
|
+
auditUrl: AUDIT_URL3,
|
|
27441
27443
|
protocols: [Protocols.VESU],
|
|
27442
27444
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
27443
27445
|
contractDetails: getContractDetails(usdcVaultSettings),
|
|
@@ -27461,7 +27463,8 @@ var UniversalStrategies = [
|
|
|
27461
27463
|
maxTVL: Web3Number.fromWei(0, 8),
|
|
27462
27464
|
contractDetails: getContractDetails(wbtcVaultSettings),
|
|
27463
27465
|
faqs: getFAQs(),
|
|
27464
|
-
investmentSteps
|
|
27466
|
+
investmentSteps,
|
|
27467
|
+
auditUrl: AUDIT_URL3
|
|
27465
27468
|
},
|
|
27466
27469
|
{
|
|
27467
27470
|
name: "ETH Evergreen",
|
|
@@ -27480,7 +27483,8 @@ var UniversalStrategies = [
|
|
|
27480
27483
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
27481
27484
|
contractDetails: getContractDetails(ethVaultSettings),
|
|
27482
27485
|
faqs: getFAQs(),
|
|
27483
|
-
investmentSteps
|
|
27486
|
+
investmentSteps,
|
|
27487
|
+
auditUrl: AUDIT_URL3
|
|
27484
27488
|
},
|
|
27485
27489
|
{
|
|
27486
27490
|
name: "STRK Evergreen",
|
|
@@ -27499,7 +27503,8 @@ var UniversalStrategies = [
|
|
|
27499
27503
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
27500
27504
|
contractDetails: getContractDetails(strkVaultSettings),
|
|
27501
27505
|
faqs: getFAQs(),
|
|
27502
|
-
investmentSteps
|
|
27506
|
+
investmentSteps,
|
|
27507
|
+
auditUrl: AUDIT_URL3
|
|
27503
27508
|
},
|
|
27504
27509
|
{
|
|
27505
27510
|
name: "USDT Evergreen",
|
|
@@ -27518,7 +27523,8 @@ var UniversalStrategies = [
|
|
|
27518
27523
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
27519
27524
|
contractDetails: getContractDetails(usdtVaultSettings),
|
|
27520
27525
|
faqs: getFAQs(),
|
|
27521
|
-
investmentSteps
|
|
27526
|
+
investmentSteps,
|
|
27527
|
+
auditUrl: AUDIT_URL3
|
|
27522
27528
|
}
|
|
27523
27529
|
];
|
|
27524
27530
|
|
|
@@ -27728,7 +27734,7 @@ var UniversalLstMultiplierStrategy = class _UniversalLstMultiplierStrategy exten
|
|
|
27728
27734
|
return [this.getManageCall(proofsIDs, manageCalls)];
|
|
27729
27735
|
}
|
|
27730
27736
|
};
|
|
27731
|
-
function VaultDescription() {
|
|
27737
|
+
function VaultDescription(lstSymbol, underlyingSymbol) {
|
|
27732
27738
|
const containerStyle = {
|
|
27733
27739
|
maxWidth: "800px",
|
|
27734
27740
|
margin: "0 auto",
|
|
@@ -27738,8 +27744,27 @@ function VaultDescription() {
|
|
|
27738
27744
|
borderRadius: "12px"
|
|
27739
27745
|
};
|
|
27740
27746
|
return /* @__PURE__ */ jsxs4("div", { style: containerStyle, children: [
|
|
27741
|
-
/* @__PURE__ */
|
|
27742
|
-
|
|
27747
|
+
/* @__PURE__ */ jsxs4("h1", { style: { fontSize: "18px", marginBottom: "10px" }, children: [
|
|
27748
|
+
"Liquidation risk managed leverged ",
|
|
27749
|
+
lstSymbol,
|
|
27750
|
+
" Vault"
|
|
27751
|
+
] }),
|
|
27752
|
+
/* @__PURE__ */ jsxs4("p", { style: { fontSize: "14px", lineHeight: "1.5", marginBottom: "16px" }, children: [
|
|
27753
|
+
"This Levered Endur ",
|
|
27754
|
+
lstSymbol,
|
|
27755
|
+
" vault is a tokenized leveraged Vault, auto-compounding strategy that takes upto 5x leverage on ",
|
|
27756
|
+
lstSymbol,
|
|
27757
|
+
" by borrow ",
|
|
27758
|
+
underlyingSymbol,
|
|
27759
|
+
". Borrowed amount is swapped to ",
|
|
27760
|
+
lstSymbol,
|
|
27761
|
+
" to create leverage. Depositors receive vault shares that represent a proportional claim on the underlying assets and accrued yield."
|
|
27762
|
+
] }),
|
|
27763
|
+
/* @__PURE__ */ jsxs4("p", { style: { fontSize: "14px", lineHeight: "1.5", marginBottom: "16px" }, children: [
|
|
27764
|
+
"This vault uses Vesu for lending and borrowing. The oracle used by this pool is a ",
|
|
27765
|
+
highlightTextWithLinks("conversion rate oracle", [{ highlight: "conversion rate oracle", link: "https://docs.pragma.build/starknet/development#conversion-rate" }]),
|
|
27766
|
+
"which is resilient to liquidity issues and price volatility, hence reducing the risk of liquidation. However, overtime, if left un-monitored, debt can increase enough to trigger a liquidation. But no worries, our continuous monitoring systems look for situations with reduced health factor and balance collateral/debt to bring it back to safe levels. With Troves, you can have a peaceful sleep."
|
|
27767
|
+
] }),
|
|
27743
27768
|
/* @__PURE__ */ jsx5("div", { style: { backgroundColor: "#222", padding: "10px", borderRadius: "8px", marginBottom: "20px", border: "1px solid #444" }, children: /* @__PURE__ */ jsxs4("p", { style: { fontSize: "13px", color: "#ccc" }, children: [
|
|
27744
27769
|
/* @__PURE__ */ jsx5("strong", { children: "Withdrawals:" }),
|
|
27745
27770
|
" Requests can take up to ",
|
|
@@ -27748,8 +27773,8 @@ function VaultDescription() {
|
|
|
27748
27773
|
] }) })
|
|
27749
27774
|
] });
|
|
27750
27775
|
}
|
|
27751
|
-
function getDescription2(tokenSymbol) {
|
|
27752
|
-
return VaultDescription();
|
|
27776
|
+
function getDescription2(tokenSymbol, underlyingSymbol) {
|
|
27777
|
+
return VaultDescription(tokenSymbol, underlyingSymbol);
|
|
27753
27778
|
}
|
|
27754
27779
|
function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1) {
|
|
27755
27780
|
vaultSettings.leafAdapters = [];
|
|
@@ -27790,11 +27815,12 @@ function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1) {
|
|
|
27790
27815
|
vaultSettings.leafAdapters.push(commonAdapter.getAvnuAdapter(STRKToken.address, lstToken.address, "avnu_swap_rewards" /* AVNU_SWAP_REWARDS */).bind(commonAdapter));
|
|
27791
27816
|
return vaultSettings;
|
|
27792
27817
|
}
|
|
27818
|
+
var AUDIT_URL4 = "https://docs.troves.fi/p/security#starknet-vault-kit";
|
|
27793
27819
|
function getFAQs2(lstSymbol, underlyingSymbol) {
|
|
27794
27820
|
return [
|
|
27795
27821
|
{
|
|
27796
27822
|
question: `What is the Hyper ${lstSymbol} Vault?`,
|
|
27797
|
-
answer: `The Hyper ${lstSymbol} Vault is a tokenized strategy that automatically loops your ${
|
|
27823
|
+
answer: `The Hyper ${lstSymbol} Vault is a tokenized strategy that automatically loops your ${lstSymbol} to create up to 5x leverage to hence yield in a very low risk manner.`
|
|
27798
27824
|
},
|
|
27799
27825
|
{
|
|
27800
27826
|
question: "How does yield allocation work?",
|
|
@@ -27838,8 +27864,9 @@ function getFAQs2(lstSymbol, underlyingSymbol) {
|
|
|
27838
27864
|
}
|
|
27839
27865
|
var _riskFactor4 = [
|
|
27840
27866
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 25, reason: "Audited by Zellic" },
|
|
27841
|
-
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1 /* VERY_LOW_PROBABILITY */, weight:
|
|
27842
|
-
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1 /* STABLE_INFRASTRUCTURE */, weight:
|
|
27867
|
+
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1 /* VERY_LOW_PROBABILITY */, weight: 25, reason: "The collateral and debt are highly correlated" },
|
|
27868
|
+
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1 /* STABLE_INFRASTRUCTURE */, weight: 25, reason: "Liquidation can only happen if vault is left un-monitored for weeks, which is highly unlikely. We actively monitor all services on a daily basis." },
|
|
27869
|
+
{ type: "Depeg Risk" /* DEPEG_RISK */, value: 2 /* GENERALLY_STABLE */, weight: 25, reason: "Generally stable pegged assets" }
|
|
27843
27870
|
];
|
|
27844
27871
|
var hyperxSTRK = {
|
|
27845
27872
|
vaultAddress: ContractAddr.from("0x46c7a54c82b1fe374353859f554a40b8bd31d3e30f742901579e7b57b1b5960"),
|
|
@@ -27902,14 +27929,13 @@ function getInvestmentSteps(lstSymbol, underlyingSymbol) {
|
|
|
27902
27929
|
`The vault manager loops the ${underlyingSymbol} to buy ${lstSymbol}`,
|
|
27903
27930
|
`The vault manager collateralizes the ${lstSymbol} on Vesu`,
|
|
27904
27931
|
`The vault manager borrows more ${underlyingSymbol} to loop further`,
|
|
27905
|
-
`Claim BTCFi STRK rewards weekly to swap to ${lstSymbol} and reinvest`,
|
|
27906
27932
|
`If required, adjust leverage or re-allocate assets within LST pool on Vesu to optimize yield`
|
|
27907
27933
|
];
|
|
27908
27934
|
}
|
|
27909
27935
|
function getStrategySettings(lstSymbol, underlyingSymbol, addresses, isPreview = false) {
|
|
27910
27936
|
return {
|
|
27911
27937
|
name: `Hyper ${lstSymbol}`,
|
|
27912
|
-
description: getDescription2(lstSymbol),
|
|
27938
|
+
description: getDescription2(lstSymbol, underlyingSymbol),
|
|
27913
27939
|
address: addresses.vaultAddress,
|
|
27914
27940
|
launchBlock: 0,
|
|
27915
27941
|
type: "Other",
|
|
@@ -27920,6 +27946,7 @@ function getStrategySettings(lstSymbol, underlyingSymbol, addresses, isPreview =
|
|
|
27920
27946
|
netRisk: _riskFactor4.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor4.reduce((acc, curr) => acc + curr.weight, 0),
|
|
27921
27947
|
notARisks: getNoRiskTags(_riskFactor4)
|
|
27922
27948
|
},
|
|
27949
|
+
auditUrl: AUDIT_URL4,
|
|
27923
27950
|
protocols: [Protocols.ENDUR, Protocols.VESU],
|
|
27924
27951
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
27925
27952
|
contractDetails: getContractDetails(addresses),
|
package/package.json
CHANGED
|
@@ -449,10 +449,9 @@ export class EkuboCLVault extends BaseStrategy<
|
|
|
449
449
|
}
|
|
450
450
|
|
|
451
451
|
async feeBasedAPY(
|
|
452
|
-
|
|
453
|
-
sinceBlocks = 600000
|
|
452
|
+
timeperiod: '24h' | '30d' | '3m' = '24h'
|
|
454
453
|
): Promise<number> {
|
|
455
|
-
const feeInfo = await this.getFeeHistory(
|
|
454
|
+
const feeInfo = await this.getFeeHistory(timeperiod);
|
|
456
455
|
const tvlNow = await this.getTVL('latest');
|
|
457
456
|
return feeInfo.summary.usdValue * 365 / tvlNow.usdValue;
|
|
458
457
|
}
|
|
@@ -463,7 +462,8 @@ export class EkuboCLVault extends BaseStrategy<
|
|
|
463
462
|
*/
|
|
464
463
|
async netAPY(
|
|
465
464
|
blockIdentifier: BlockIdentifier = "latest",
|
|
466
|
-
sinceBlocks = 600000
|
|
465
|
+
sinceBlocks = 600000,
|
|
466
|
+
timeperiod: '24h' | '30d' | '3m' = '24h' // temp thing for fee based APY
|
|
467
467
|
): Promise<number> {
|
|
468
468
|
const isUSDCQouteToken = this.metadata.additionalInfo.quoteAsset.symbol === "USDC";
|
|
469
469
|
if (!isUSDCQouteToken) {
|
|
@@ -471,7 +471,7 @@ export class EkuboCLVault extends BaseStrategy<
|
|
|
471
471
|
return this.netSharesBasedTrueAPY(blockIdentifier, sinceBlocks);
|
|
472
472
|
} else {
|
|
473
473
|
// good for non-stables
|
|
474
|
-
return this.feeBasedAPY(
|
|
474
|
+
return this.feeBasedAPY(timeperiod);
|
|
475
475
|
}
|
|
476
476
|
}
|
|
477
477
|
|
|
@@ -1751,7 +1751,7 @@ export class EkuboCLVault extends BaseStrategy<
|
|
|
1751
1751
|
}
|
|
1752
1752
|
|
|
1753
1753
|
const _description =
|
|
1754
|
-
"Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and
|
|
1754
|
+
"Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and any rewards are automatically compounded back into the strategy. In return, you receive an ERC-20 token representing your share of the strategy";
|
|
1755
1755
|
const _protocol: IProtocol = {
|
|
1756
1756
|
name: "Ekubo",
|
|
1757
1757
|
logo: "https://app.ekubo.org/favicon.ico",
|
|
@@ -1801,7 +1801,7 @@ const highRisk = {
|
|
|
1801
1801
|
|
|
1802
1802
|
|
|
1803
1803
|
const AUDIT_URL =
|
|
1804
|
-
"https://
|
|
1804
|
+
"https://docs.troves.fi/p/security#ekubo-vault";
|
|
1805
1805
|
|
|
1806
1806
|
const faqs: FAQ[] = [
|
|
1807
1807
|
{
|
|
@@ -1812,7 +1812,7 @@ const faqs: FAQ[] = [
|
|
|
1812
1812
|
{
|
|
1813
1813
|
question: "How are trading fees and rewards handled?",
|
|
1814
1814
|
answer:
|
|
1815
|
-
"Trading fees and
|
|
1815
|
+
"Trading fees and any rewards are automatically compounded back into the strategy, increasing your overall returns.",
|
|
1816
1816
|
},
|
|
1817
1817
|
{
|
|
1818
1818
|
question: "What happens during withdrawal?",
|
|
@@ -2217,6 +2217,6 @@ EkuboCLVaultStrategies.forEach((s) => {
|
|
|
2217
2217
|
s.investmentSteps = [
|
|
2218
2218
|
"Supply tokens to Ekubo's pool",
|
|
2219
2219
|
"Monitor and Rebalance position to optimize yield",
|
|
2220
|
-
"Harvest and
|
|
2220
|
+
"Harvest and re-invest any rewards every week (Auto-compound)",
|
|
2221
2221
|
]
|
|
2222
2222
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { FAQ, getNoRiskTags, IConfig, IStrategyMetadata, Protocols, RiskFactor, RiskType } from "@/interfaces";
|
|
1
|
+
import { FAQ, getNoRiskTags, highlightTextWithLinks, IConfig, IStrategyMetadata, Protocols, RiskFactor, RiskType } from "@/interfaces";
|
|
2
2
|
import { AUMTypes, getContractDetails, UNIVERSAL_ADAPTERS, UNIVERSAL_MANAGE_IDS, UniversalManageCall, UniversalStrategy, UniversalStrategySettings } from "./universal-strategy";
|
|
3
3
|
import { PricerBase } from "@/modules/pricerBase";
|
|
4
4
|
import { ContractAddr, Web3Number } from "@/dataTypes";
|
|
5
5
|
import { Global } from "@/global";
|
|
6
6
|
import { ApproveCallParams, CommonAdapter, getVesuSingletonAddress, ManageCall, Swap, VesuAdapter, VesuModifyDelegationCallParams, VesuMultiplyCallParams, VesuPools } from "./universal-adapters";
|
|
7
7
|
import { AVNU_MIDDLEWARE } from "./universal-adapters/adapter-utils";
|
|
8
|
-
import { LiquidationRiskLevel, SmartContractRiskLevel, TechnicalRiskLevel } from "@/interfaces/risks";
|
|
8
|
+
import { DepegRiskLevel, LiquidationRiskLevel, SmartContractRiskLevel, TechnicalRiskLevel } from "@/interfaces/risks";
|
|
9
9
|
import { EkuboQuoter, ERC20, PricerLST } from "@/modules";
|
|
10
10
|
import { assert, logger } from "@/utils";
|
|
11
11
|
import { SingleTokenInfo } from "./base-strategy";
|
|
@@ -293,7 +293,10 @@ export class UniversalLstMultiplierStrategy extends UniversalStrategy<UniversalS
|
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
295
|
|
|
296
|
-
export default function VaultDescription(
|
|
296
|
+
export default function VaultDescription(
|
|
297
|
+
lstSymbol: string,
|
|
298
|
+
underlyingSymbol: string
|
|
299
|
+
) {
|
|
297
300
|
const containerStyle = {
|
|
298
301
|
maxWidth: "800px",
|
|
299
302
|
margin: "0 auto",
|
|
@@ -305,13 +308,16 @@ export default function VaultDescription() {
|
|
|
305
308
|
|
|
306
309
|
return (
|
|
307
310
|
<div style={containerStyle}>
|
|
308
|
-
<h1 style={{ fontSize: "18px", marginBottom: "10px" }}>
|
|
311
|
+
<h1 style={{ fontSize: "18px", marginBottom: "10px" }}>Liquidation risk managed leverged {lstSymbol} Vault</h1>
|
|
312
|
+
<p style={{ fontSize: "14px", lineHeight: "1.5", marginBottom: "16px" }}>
|
|
313
|
+
This Levered Endur {lstSymbol} vault is a tokenized leveraged Vault, auto-compounding strategy that takes upto 5x leverage on {lstSymbol} by borrow {underlyingSymbol}. Borrowed amount
|
|
314
|
+
is swapped to {lstSymbol} to create leverage. Depositors receive vault shares that
|
|
315
|
+
represent a proportional claim on the underlying assets and accrued yield.
|
|
316
|
+
</p>
|
|
317
|
+
|
|
309
318
|
<p style={{ fontSize: "14px", lineHeight: "1.5", marginBottom: "16px" }}>
|
|
310
|
-
This
|
|
311
|
-
|
|
312
|
-
represent a proportional claim on the underlying assets and accrued yield. Allocation shifts are
|
|
313
|
-
handled programmatically based on on-chain signals and risk filters, minimizing idle capital and
|
|
314
|
-
maximizing net APY.
|
|
319
|
+
This vault uses Vesu for lending and borrowing. The oracle used by this pool is a {highlightTextWithLinks("conversion rate oracle", [{highlight: "conversion rate oracle", link: "https://docs.pragma.build/starknet/development#conversion-rate"}])}
|
|
320
|
+
which is resilient to liquidity issues and price volatility, hence reducing the risk of liquidation. However, overtime, if left un-monitored, debt can increase enough to trigger a liquidation. But no worries, our continuous monitoring systems look for situations with reduced health factor and balance collateral/debt to bring it back to safe levels. With Troves, you can have a peaceful sleep.
|
|
315
321
|
</p>
|
|
316
322
|
|
|
317
323
|
<div style={{ backgroundColor: "#222", padding: "10px", borderRadius: "8px", marginBottom: "20px", border: "1px solid #444" }}>
|
|
@@ -324,8 +330,8 @@ export default function VaultDescription() {
|
|
|
324
330
|
}
|
|
325
331
|
|
|
326
332
|
|
|
327
|
-
function getDescription(tokenSymbol: string) {
|
|
328
|
-
return VaultDescription();
|
|
333
|
+
function getDescription(tokenSymbol: string, underlyingSymbol: string) {
|
|
334
|
+
return VaultDescription(tokenSymbol, underlyingSymbol);
|
|
329
335
|
}
|
|
330
336
|
|
|
331
337
|
enum LST_MULTIPLIER_MANAGE_IDS {
|
|
@@ -393,12 +399,14 @@ function getLooperSettings(
|
|
|
393
399
|
return vaultSettings;
|
|
394
400
|
}
|
|
395
401
|
|
|
402
|
+
const AUDIT_URL = 'https://docs.troves.fi/p/security#starknet-vault-kit'
|
|
403
|
+
|
|
396
404
|
function getFAQs(lstSymbol: string, underlyingSymbol: string): FAQ[] {
|
|
397
405
|
return [
|
|
398
406
|
{
|
|
399
407
|
question: `What is the Hyper ${lstSymbol} Vault?`,
|
|
400
408
|
answer:
|
|
401
|
-
`The Hyper ${lstSymbol} Vault is a tokenized strategy that automatically loops your ${
|
|
409
|
+
`The Hyper ${lstSymbol} Vault is a tokenized strategy that automatically loops your ${lstSymbol} to create up to 5x leverage to hence yield in a very low risk manner.`,
|
|
402
410
|
},
|
|
403
411
|
{
|
|
404
412
|
question: "How does yield allocation work?",
|
|
@@ -447,8 +455,9 @@ function getFAQs(lstSymbol: string, underlyingSymbol: string): FAQ[] {
|
|
|
447
455
|
|
|
448
456
|
const _riskFactor: RiskFactor[] = [
|
|
449
457
|
{ type: RiskType.SMART_CONTRACT_RISK, value: SmartContractRiskLevel.WELL_AUDITED, weight: 25, reason: "Audited by Zellic" },
|
|
450
|
-
{ type: RiskType.LIQUIDATION_RISK, value: LiquidationRiskLevel.VERY_LOW_PROBABILITY, weight:
|
|
451
|
-
{ type: RiskType.TECHNICAL_RISK, value: TechnicalRiskLevel.STABLE_INFRASTRUCTURE, weight:
|
|
458
|
+
{ type: RiskType.LIQUIDATION_RISK, value: LiquidationRiskLevel.VERY_LOW_PROBABILITY, weight: 25, reason: "The collateral and debt are highly correlated" },
|
|
459
|
+
{ type: RiskType.TECHNICAL_RISK, value: TechnicalRiskLevel.STABLE_INFRASTRUCTURE, weight: 25, reason: "Liquidation can only happen if vault is left un-monitored for weeks, which is highly unlikely. We actively monitor all services on a daily basis." },
|
|
460
|
+
{type: RiskType.DEPEG_RISK, value: DepegRiskLevel.GENERALLY_STABLE, weight: 25, reason: "Generally stable pegged assets" },
|
|
452
461
|
];
|
|
453
462
|
|
|
454
463
|
const hyperxSTRK: UniversalStrategySettings = {
|
|
@@ -517,7 +526,6 @@ function getInvestmentSteps(lstSymbol: string, underlyingSymbol: string) {
|
|
|
517
526
|
`The vault manager loops the ${underlyingSymbol} to buy ${lstSymbol}`,
|
|
518
527
|
`The vault manager collateralizes the ${lstSymbol} on Vesu`,
|
|
519
528
|
`The vault manager borrows more ${underlyingSymbol} to loop further`,
|
|
520
|
-
`Claim BTCFi STRK rewards weekly to swap to ${lstSymbol} and reinvest`,
|
|
521
529
|
`If required, adjust leverage or re-allocate assets within LST pool on Vesu to optimize yield`
|
|
522
530
|
]
|
|
523
531
|
}
|
|
@@ -525,7 +533,7 @@ function getInvestmentSteps(lstSymbol: string, underlyingSymbol: string) {
|
|
|
525
533
|
function getStrategySettings(lstSymbol: string, underlyingSymbol: string, addresses: UniversalStrategySettings, isPreview: boolean = false): IStrategyMetadata<UniversalStrategySettings> {
|
|
526
534
|
return {
|
|
527
535
|
name: `Hyper ${lstSymbol}`,
|
|
528
|
-
description: getDescription(lstSymbol),
|
|
536
|
+
description: getDescription(lstSymbol, underlyingSymbol),
|
|
529
537
|
address: addresses.vaultAddress,
|
|
530
538
|
launchBlock: 0,
|
|
531
539
|
type: 'Other',
|
|
@@ -538,6 +546,7 @@ function getStrategySettings(lstSymbol: string, underlyingSymbol: string, addres
|
|
|
538
546
|
_riskFactor.reduce((acc, curr) => acc + curr.weight, 0),
|
|
539
547
|
notARisks: getNoRiskTags(_riskFactor)
|
|
540
548
|
},
|
|
549
|
+
auditUrl: AUDIT_URL,
|
|
541
550
|
protocols: [Protocols.ENDUR, Protocols.VESU],
|
|
542
551
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
543
552
|
contractDetails: getContractDetails(addresses),
|
|
@@ -1092,6 +1092,8 @@ const investmentSteps: string[] = [
|
|
|
1092
1092
|
"Vault manager reports asset under management (AUM) regularly to the vault",
|
|
1093
1093
|
"Request withdrawal and vault manager processes it in 1-2 hours"
|
|
1094
1094
|
]
|
|
1095
|
+
|
|
1096
|
+
const AUDIT_URL = 'https://docs.troves.fi/p/security#starknet-vault-kit'
|
|
1095
1097
|
export const UniversalStrategies: IStrategyMetadata<UniversalStrategySettings>[] =
|
|
1096
1098
|
[
|
|
1097
1099
|
{
|
|
@@ -1109,6 +1111,7 @@ export const UniversalStrategies: IStrategyMetadata<UniversalStrategySettings>[]
|
|
|
1109
1111
|
_riskFactor.reduce((acc, curr) => acc + curr.weight, 0),
|
|
1110
1112
|
notARisks: getNoRiskTags(_riskFactor)
|
|
1111
1113
|
},
|
|
1114
|
+
auditUrl: AUDIT_URL,
|
|
1112
1115
|
protocols: [Protocols.VESU],
|
|
1113
1116
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
1114
1117
|
contractDetails: getContractDetails(usdcVaultSettings),
|
|
@@ -1135,6 +1138,7 @@ export const UniversalStrategies: IStrategyMetadata<UniversalStrategySettings>[]
|
|
|
1135
1138
|
contractDetails: getContractDetails(wbtcVaultSettings),
|
|
1136
1139
|
faqs: getFAQs(),
|
|
1137
1140
|
investmentSteps: investmentSteps,
|
|
1141
|
+
auditUrl: AUDIT_URL,
|
|
1138
1142
|
},
|
|
1139
1143
|
{
|
|
1140
1144
|
name: "ETH Evergreen",
|
|
@@ -1156,6 +1160,7 @@ export const UniversalStrategies: IStrategyMetadata<UniversalStrategySettings>[]
|
|
|
1156
1160
|
contractDetails: getContractDetails(ethVaultSettings),
|
|
1157
1161
|
faqs: getFAQs(),
|
|
1158
1162
|
investmentSteps: investmentSteps,
|
|
1163
|
+
auditUrl: AUDIT_URL,
|
|
1159
1164
|
},
|
|
1160
1165
|
{
|
|
1161
1166
|
name: "STRK Evergreen",
|
|
@@ -1177,6 +1182,7 @@ export const UniversalStrategies: IStrategyMetadata<UniversalStrategySettings>[]
|
|
|
1177
1182
|
contractDetails: getContractDetails(strkVaultSettings),
|
|
1178
1183
|
faqs: getFAQs(),
|
|
1179
1184
|
investmentSteps: investmentSteps,
|
|
1185
|
+
auditUrl: AUDIT_URL,
|
|
1180
1186
|
},
|
|
1181
1187
|
{
|
|
1182
1188
|
name: "USDT Evergreen",
|
|
@@ -1198,5 +1204,6 @@ export const UniversalStrategies: IStrategyMetadata<UniversalStrategySettings>[]
|
|
|
1198
1204
|
contractDetails: getContractDetails(usdtVaultSettings),
|
|
1199
1205
|
faqs: getFAQs(),
|
|
1200
1206
|
investmentSteps: investmentSteps,
|
|
1207
|
+
auditUrl: AUDIT_URL,
|
|
1201
1208
|
}
|
|
1202
1209
|
]
|