@strkfarm/sdk 2.0.0-dev.36 → 2.0.0-dev.37

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.
@@ -126416,6 +126416,7 @@ spurious results.`);
126416
126416
  ];
126417
126417
 
126418
126418
  // src/strategies/token-boosted-xstrk-carry-strategy.tsx
126419
+ var import_jsx_runtime6 = __toESM(require_jsx_runtime());
126419
126420
  var BoostedxSTRKCarryStrategy = class _BoostedxSTRKCarryStrategy extends SVKStrategy {
126420
126421
  constructor(config3, pricer, metadata) {
126421
126422
  super(config3, pricer, metadata);
@@ -127054,15 +127055,15 @@ spurious results.`);
127054
127055
  leafAdapters: [],
127055
127056
  adapters: [],
127056
127057
  // Calc using the maxLTV / targetLTV (0.5)
127057
- targetHealthFactor: 1.32,
127058
+ targetHealthFactor: 1.36,
127058
127059
  // Calc using the maxLTV / maxAcceptableLTV (0.55)
127059
- minHealthFactor: 1.2,
127060
+ minHealthFactor: 1.3,
127060
127061
  vesuPoolId: VesuPools.Prime,
127061
127062
  // New metadata-driven token configuration
127062
127063
  depositToken: Global.getDefaultTokens().find((t) => t.symbol === "USDC"),
127063
127064
  debtToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
127064
127065
  lstHyperToken: Global.getDefaultTokens().find((t) => t.symbol === "xSTRK"),
127065
- maxLTV: 0.66,
127066
+ maxLTV: 0.68,
127066
127067
  targetLTV: 0.5,
127067
127068
  // BTC.Fi rewards flag - false for USDC (uses old report flow)
127068
127069
  hasBtcFiRewards: false,
@@ -127093,13 +127094,13 @@ spurious results.`);
127093
127094
  ),
127094
127095
  leafAdapters: [],
127095
127096
  adapters: [],
127096
- targetHealthFactor: 1.32,
127097
- minHealthFactor: 1.2,
127097
+ targetHealthFactor: 1.4,
127098
+ minHealthFactor: 1.35,
127098
127099
  vesuPoolId: VesuPools.Prime,
127099
127100
  depositToken: Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
127100
127101
  debtToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
127101
127102
  lstHyperToken: Global.getDefaultTokens().find((t) => t.symbol === "xSTRK"),
127102
- maxLTV: 0.66,
127103
+ maxLTV: 0.7,
127103
127104
  targetLTV: 0.5,
127104
127105
  hasBtcFiRewards: true,
127105
127106
  hyperLstVaultAddress: ContractAddr.from(
@@ -127110,6 +127111,145 @@ spurious results.`);
127110
127111
  ),
127111
127112
  trovesStrategyId: "hyper_xstrk"
127112
127113
  };
127114
+ var boostedCarryRiskFactors = [
127115
+ {
127116
+ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */,
127117
+ value: 2 /* WELL_AUDITED */,
127118
+ // 20% — core trust assumption; SVK is audited but still multi-contract (vault, manager, adapters).
127119
+ weight: 20,
127120
+ reason: "Built on the Starknet Vault Kit (SVK), with audits under the Sherlock-audited branch."
127121
+ },
127122
+ {
127123
+ type: "Liquidation Risk" /* LIQUIDATION_RISK */,
127124
+ value: 3 /* MODERATE_PROBABILITY */,
127125
+ // 20% — tied with smart contract; uncorrelated collateral/debt is the main principal risk here.
127126
+ weight: 20,
127127
+ reason: "Collateral (USDC or WBTC) and STRK debt are not price-correlated. We target ~50% LTV and rebalance above ~55%, with a health-factor buffer, but extreme moves or prolonged monitoring gaps can still trigger liquidation."
127128
+ },
127129
+ {
127130
+ type: "Low Liquidity Risk" /* LOW_LIQUIDITY_RISK */,
127131
+ value: 3 /* MODERATE_CONCERNS */,
127132
+ // 15% — below liquidation but above ops risks; every unwind/withdraw depends on xSTRK→STRK depth.
127133
+ weight: 15,
127134
+ reason: "Closing the loop requires selling xSTRK to STRK on DEXes to repay Vesu debt. xSTRK liquidity can be thin at fair prices; larger withdrawals or rebalances may take longer or complete in smaller chunks."
127135
+ },
127136
+ {
127137
+ type: "Technical Risk" /* TECHNICAL_RISK */,
127138
+ value: 3 /* SOME_COMPLEXITY */,
127139
+ // 13% — monitoring/rebalancing stack matters, but usually recoverable without instant loss.
127140
+ weight: 13,
127141
+ reason: "Yield routes across Vesu, Avnu, and Hyper xSTRK with automated monitoring. Technical failures can delay rebalancing."
127142
+ },
127143
+ {
127144
+ type: "Depeg Risk" /* DEPEG_RISK */,
127145
+ value: 3 /* OCCASIONAL_DEPEG */,
127146
+ // 12% — affects yield and swap notionals; USDC/WBTC depeg is rarer than xSTRK/STRK drift.
127147
+ weight: 12,
127148
+ reason: "xSTRK yield depends on its exchange rate vs STRK; USDC and WBTC carry standard stablecoin and BTC market risks."
127149
+ },
127150
+ {
127151
+ type: "Oracle Risk" /* ORACLE_RISK */,
127152
+ value: 2 /* SINGLE_RELIABLE */,
127153
+ // 10% — Vesu HF depends on feeds; Starknet oracles are established but not redundant here.
127154
+ weight: 10,
127155
+ reason: "Vesu collateral and debt valuations rely on Starknet price feeds."
127156
+ },
127157
+ {
127158
+ type: "Counterparty Risk" /* COUNTERPARTY_RISK */,
127159
+ value: 2 /* REPUTABLE_COUNTERPARTY */,
127160
+ // 10% — same tier as oracle; Vesu/Endur/Troves are mature but still protocol counterparty risk.
127161
+ weight: 10,
127162
+ reason: "Exposure to Vesu lending, Endur (xSTRK), and Troves Hyper vault infrastructure."
127163
+ },
127164
+ {
127165
+ type: "Market Risk" /* MARKET_RISK */,
127166
+ value: 3 /* MODERATE_VOLATILITY */,
127167
+ // 5% — largely captured by liquidation + depeg factors; kept small to avoid double-counting vol.
127168
+ weight: 5,
127169
+ reason: "STRK, BTC, and stablecoin volatility can move loan-to-value and swap costs."
127170
+ }
127171
+ ];
127172
+ function getBoostedCarryRisk() {
127173
+ const netRisk = boostedCarryRiskFactors.reduce(
127174
+ (acc, curr) => acc + curr.value * curr.weight,
127175
+ 0
127176
+ ) / boostedCarryRiskFactors.reduce((acc, curr) => acc + curr.weight, 0);
127177
+ return {
127178
+ riskFactor: boostedCarryRiskFactors,
127179
+ netRisk,
127180
+ notARisks: getNoRiskTags(boostedCarryRiskFactors)
127181
+ };
127182
+ }
127183
+ function getBoostedCarryFAQs(depositSymbol, debtSymbol, lstSymbol) {
127184
+ return [
127185
+ {
127186
+ question: `What is ${depositSymbol} Boosted?`,
127187
+ answer: `${depositSymbol} Boosted is a carry-style vault: your ${depositSymbol} is supplied as collateral on Vesu, ${debtSymbol} is borrowed, swapped to ${lstSymbol}, and deposited into Hyper-${lstSymbol} for additional yield on top of the lending loop.`
127188
+ },
127189
+ {
127190
+ question: "How does this strategy generate yield?",
127191
+ answer: `Yield comes from several layers: ${lstSymbol} staking yield inside Hyper-${lstSymbol}, the spread between borrowing ${debtSymbol} and holding ${lstSymbol}, and efficient routing via Avnu. The vault targets about 50% loan-to-value and rebalances when LTV rises above ~55% so risk and yield stay in balance.`
127192
+ },
127193
+ {
127194
+ question: "Which protocols are used?",
127195
+ answer: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { children: [
127196
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("strong", { children: "Vesu" }),
127197
+ " for collateral and borrowing, ",
127198
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("strong", { children: "Avnu" }),
127199
+ " ",
127200
+ "for swaps, ",
127201
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("strong", { children: "Endur" }),
127202
+ " for ",
127203
+ lstSymbol,
127204
+ ", and the Troves",
127205
+ " ",
127206
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("strong", { children: [
127207
+ "Hyper-",
127208
+ lstSymbol
127209
+ ] }),
127210
+ " vault for the boosted leg."
127211
+ ] })
127212
+ },
127213
+ {
127214
+ question: "Is there liquidation risk?",
127215
+ answer: `Yes. Your ${depositSymbol} collateral and ${debtSymbol} debt can move in different directions, which affects your health factor on Vesu. We actively monitor positions and rebalance automatically through our systems to keep loan-to-value near target. However, unexpected technical failures or very sharp market moves can still lead to liquidation. Under normal conditions we aim for a buffer of roughly 30% adverse price movement before liquidation becomes likely \u2014 but if monitoring is unavailable for many hours during a trending market, that buffer can be consumed. In extreme scenarios, liquidation remains possible.`
127216
+ },
127217
+ {
127218
+ question: "What do I receive when I deposit?",
127219
+ answer: "You receive vault tokens representing your share of the vault. They reflect both principal and accrued yield."
127220
+ },
127221
+ {
127222
+ question: "How long do withdrawals take?",
127223
+ answer: "Withdrawals typically take 1\u20132 hours. You receive an NFT for your request; funds are sent to the NFT owner once the vault unwinds its positions. The vault must sell xSTRK back to STRK to repay debt \u2014 if DEX liquidity is thin or your withdrawal is large, unwinding can take longer or happen in smaller steps to limit slippage."
127224
+ },
127225
+ {
127226
+ question: "Is this vault non-custodial?",
127227
+ answer: "Yes. The vault runs on-chain. You hold your vault tokens, and positions are transparent via on-chain contracts."
127228
+ },
127229
+ {
127230
+ question: "Are there any fees?",
127231
+ answer: "Troves charges a 10% performance fee on yield only \u2014 not on your deposited principal. The APY shown is already net of this fee. When you withdraw, a 0.1% redemption fee applies. That small fee helps keep the vault efficient for long-term depositors. This fee is sent back to the vault itself: very short stays create extra swap and rebalancing costs for everyone. If you stay for a reasonable period, your yield will typically far outweigh this one-time charge."
127232
+ },
127233
+ {
127234
+ question: "Is the vault audited?",
127235
+ answer: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { children: [
127236
+ "Yes. The strategy is built on the audited Starknet Vault Kit. See the security details beside the strategy name and the",
127237
+ " ",
127238
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
127239
+ "a",
127240
+ {
127241
+ href: "https://github.com/trovesfi/starknet_vault_kit/tree/sherlock-audited",
127242
+ target: "_blank",
127243
+ rel: "noopener noreferrer",
127244
+ style: { textDecoration: "underline" },
127245
+ children: "open-source repo"
127246
+ }
127247
+ ),
127248
+ "."
127249
+ ] })
127250
+ }
127251
+ ];
127252
+ }
127113
127253
  function getStrategySettings2(settings2, meta) {
127114
127254
  const depositToken = settings2.depositToken;
127115
127255
  const debtToken = settings2.debtToken;
@@ -127117,7 +127257,7 @@ spurious results.`);
127117
127257
  return {
127118
127258
  id: meta.id,
127119
127259
  name: meta.name,
127120
- description: `Deposits ${depositToken.symbol} as collateral on Vesu, borrows ${debtToken.symbol}, swaps to ${lstToken.symbol}, and deposits into Hyper-${lstToken.symbol} for boosted yield`,
127260
+ description: `Deposits ${depositToken.symbol} as collateral on Vesu, borrows ${debtToken.symbol}, swaps to ${lstToken.symbol}, and deposits into Hyper-${lstToken.symbol} for boosted yield. Target LTV is about 50%, with rebalances happening when LTV is above 55%.`,
127121
127261
  address: settings2.vaultAddress,
127122
127262
  launchBlock: meta.launchBlock,
127123
127263
  type: "ERC4626",
@@ -127127,13 +127267,8 @@ spurious results.`);
127127
127267
  },
127128
127268
  depositTokens: [depositToken],
127129
127269
  additionalInfo: getBoostedxSTRKCarrySettings(settings2),
127130
- // TODO: config lateron
127131
- risk: {
127132
- riskFactor: [],
127133
- netRisk: 0,
127134
- notARisks: []
127135
- },
127136
- protocols: [Protocols.VESU, Protocols.TROVES],
127270
+ risk: getBoostedCarryRisk(),
127271
+ protocols: [Protocols.VESU, Protocols.ENDUR, Protocols.TROVES],
127137
127272
  curator: {
127138
127273
  name: "Unwrap Labs",
127139
127274
  logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
@@ -127141,7 +127276,7 @@ spurious results.`);
127141
127276
  settings: {
127142
127277
  maxTVL: Web3Number.fromWei(0, depositToken.decimals),
127143
127278
  isPaused: false,
127144
- isAudited: false,
127279
+ isAudited: true,
127145
127280
  isInstantWithdrawal: false,
127146
127281
  hideHarvestInfo: true,
127147
127282
  quoteToken: depositToken,
@@ -127154,27 +127289,32 @@ spurious results.`);
127154
127289
  ]
127155
127290
  },
127156
127291
  contractDetails: getContractDetails(settings2),
127157
- // TODO: config later
127158
- faqs: [],
127292
+ faqs: getBoostedCarryFAQs(
127293
+ depositToken.symbol,
127294
+ debtToken.symbol,
127295
+ lstToken.symbol
127296
+ ),
127297
+ apyMethodology: "APY reflects net returns after a 10% performance fee on yield (not on principal). Underlying xSTRK appreciation and Vesu borrow costs can move over time; displayed APY is an estimate.",
127159
127298
  investmentSteps: [
127160
127299
  `Deposit ${depositToken.symbol} into the vault`,
127161
127300
  `${depositToken.symbol} is supplied as collateral on Vesu, ${debtToken.symbol} is borrowed`,
127162
127301
  `Borrowed ${debtToken.symbol} is swapped to ${lstToken.symbol} via Avnu`,
127163
127302
  `${lstToken.symbol} is deposited into the Hyper-${lstToken.symbol} vault for additional yield`,
127164
- `On withdrawal, the pipeline reverses to return ${depositToken.symbol}`
127303
+ `Actively monitored and rebalanced to maintain optimal LTV and yield.`
127165
127304
  ],
127166
127305
  // TODO: config later
127167
127306
  tags: ["Meta Vaults" /* META_VAULT */],
127168
127307
  security: {
127169
127308
  auditStatus: "Audited" /* AUDITED */,
127170
127309
  sourceCode: {
127171
- type: "Closed Source" /* CLOSED_SOURCE */,
127172
- contractLink: "https://github.com/trovesfi/troves-contracts"
127310
+ type: "Open Source" /* OPEN_SOURCE */,
127311
+ contractLink: "https://github.com/trovesfi/starknet_vault_kit/tree/sherlock-audited"
127173
127312
  },
127313
+ // TODO
127174
127314
  accessControl: {
127175
127315
  type: "Standard Account" /* STANDARD_ACCOUNT */,
127176
127316
  addresses: [ContractAddr.from("0x0")],
127177
- timeLock: "2 Days"
127317
+ timeLock: "0 Days"
127178
127318
  }
127179
127319
  },
127180
127320
  redemptionInfo: {
@@ -127193,8 +127333,8 @@ spurious results.`);
127193
127333
  }
127194
127334
  ]
127195
127335
  },
127196
- usualTimeToEarnings: null,
127197
- usualTimeToEarningsDescription: null
127336
+ usualTimeToEarnings: "2 weeks",
127337
+ usualTimeToEarningsDescription: "This strategy depends on Hyper xSTRK's yield, which depends on the price of xSTRK on DEX appreciating. It may be possible the increase is not continuous and generally rebases atleast once every 2 weeks."
127198
127338
  };
127199
127339
  }
127200
127340
  var BoostedxSTRKCarryStrategies = [
@@ -39015,6 +39015,7 @@ var HyperLSTStrategies = [
39015
39015
 
39016
39016
  // src/strategies/token-boosted-xstrk-carry-strategy.tsx
39017
39017
  import { uint256 as uint25624, num as num14 } from "starknet";
39018
+ import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
39018
39019
  var BoostedxSTRKCarryStrategy = class _BoostedxSTRKCarryStrategy extends SVKStrategy {
39019
39020
  constructor(config, pricer, metadata) {
39020
39021
  super(config, pricer, metadata);
@@ -39653,15 +39654,15 @@ var boostedxSTRKCarrySettings = {
39653
39654
  leafAdapters: [],
39654
39655
  adapters: [],
39655
39656
  // Calc using the maxLTV / targetLTV (0.5)
39656
- targetHealthFactor: 1.32,
39657
+ targetHealthFactor: 1.36,
39657
39658
  // Calc using the maxLTV / maxAcceptableLTV (0.55)
39658
- minHealthFactor: 1.2,
39659
+ minHealthFactor: 1.3,
39659
39660
  vesuPoolId: VesuPools.Prime,
39660
39661
  // New metadata-driven token configuration
39661
39662
  depositToken: Global.getDefaultTokens().find((t) => t.symbol === "USDC"),
39662
39663
  debtToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
39663
39664
  lstHyperToken: Global.getDefaultTokens().find((t) => t.symbol === "xSTRK"),
39664
- maxLTV: 0.66,
39665
+ maxLTV: 0.68,
39665
39666
  targetLTV: 0.5,
39666
39667
  // BTC.Fi rewards flag - false for USDC (uses old report flow)
39667
39668
  hasBtcFiRewards: false,
@@ -39692,13 +39693,13 @@ var wbtcBoostedSettings = {
39692
39693
  ),
39693
39694
  leafAdapters: [],
39694
39695
  adapters: [],
39695
- targetHealthFactor: 1.32,
39696
- minHealthFactor: 1.2,
39696
+ targetHealthFactor: 1.4,
39697
+ minHealthFactor: 1.35,
39697
39698
  vesuPoolId: VesuPools.Prime,
39698
39699
  depositToken: Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
39699
39700
  debtToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
39700
39701
  lstHyperToken: Global.getDefaultTokens().find((t) => t.symbol === "xSTRK"),
39701
- maxLTV: 0.66,
39702
+ maxLTV: 0.7,
39702
39703
  targetLTV: 0.5,
39703
39704
  hasBtcFiRewards: true,
39704
39705
  hyperLstVaultAddress: ContractAddr.from(
@@ -39709,6 +39710,145 @@ var wbtcBoostedSettings = {
39709
39710
  ),
39710
39711
  trovesStrategyId: "hyper_xstrk"
39711
39712
  };
39713
+ var boostedCarryRiskFactors = [
39714
+ {
39715
+ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */,
39716
+ value: 2 /* WELL_AUDITED */,
39717
+ // 20% — core trust assumption; SVK is audited but still multi-contract (vault, manager, adapters).
39718
+ weight: 20,
39719
+ reason: "Built on the Starknet Vault Kit (SVK), with audits under the Sherlock-audited branch."
39720
+ },
39721
+ {
39722
+ type: "Liquidation Risk" /* LIQUIDATION_RISK */,
39723
+ value: 3 /* MODERATE_PROBABILITY */,
39724
+ // 20% — tied with smart contract; uncorrelated collateral/debt is the main principal risk here.
39725
+ weight: 20,
39726
+ reason: "Collateral (USDC or WBTC) and STRK debt are not price-correlated. We target ~50% LTV and rebalance above ~55%, with a health-factor buffer, but extreme moves or prolonged monitoring gaps can still trigger liquidation."
39727
+ },
39728
+ {
39729
+ type: "Low Liquidity Risk" /* LOW_LIQUIDITY_RISK */,
39730
+ value: 3 /* MODERATE_CONCERNS */,
39731
+ // 15% — below liquidation but above ops risks; every unwind/withdraw depends on xSTRK→STRK depth.
39732
+ weight: 15,
39733
+ reason: "Closing the loop requires selling xSTRK to STRK on DEXes to repay Vesu debt. xSTRK liquidity can be thin at fair prices; larger withdrawals or rebalances may take longer or complete in smaller chunks."
39734
+ },
39735
+ {
39736
+ type: "Technical Risk" /* TECHNICAL_RISK */,
39737
+ value: 3 /* SOME_COMPLEXITY */,
39738
+ // 13% — monitoring/rebalancing stack matters, but usually recoverable without instant loss.
39739
+ weight: 13,
39740
+ reason: "Yield routes across Vesu, Avnu, and Hyper xSTRK with automated monitoring. Technical failures can delay rebalancing."
39741
+ },
39742
+ {
39743
+ type: "Depeg Risk" /* DEPEG_RISK */,
39744
+ value: 3 /* OCCASIONAL_DEPEG */,
39745
+ // 12% — affects yield and swap notionals; USDC/WBTC depeg is rarer than xSTRK/STRK drift.
39746
+ weight: 12,
39747
+ reason: "xSTRK yield depends on its exchange rate vs STRK; USDC and WBTC carry standard stablecoin and BTC market risks."
39748
+ },
39749
+ {
39750
+ type: "Oracle Risk" /* ORACLE_RISK */,
39751
+ value: 2 /* SINGLE_RELIABLE */,
39752
+ // 10% — Vesu HF depends on feeds; Starknet oracles are established but not redundant here.
39753
+ weight: 10,
39754
+ reason: "Vesu collateral and debt valuations rely on Starknet price feeds."
39755
+ },
39756
+ {
39757
+ type: "Counterparty Risk" /* COUNTERPARTY_RISK */,
39758
+ value: 2 /* REPUTABLE_COUNTERPARTY */,
39759
+ // 10% — same tier as oracle; Vesu/Endur/Troves are mature but still protocol counterparty risk.
39760
+ weight: 10,
39761
+ reason: "Exposure to Vesu lending, Endur (xSTRK), and Troves Hyper vault infrastructure."
39762
+ },
39763
+ {
39764
+ type: "Market Risk" /* MARKET_RISK */,
39765
+ value: 3 /* MODERATE_VOLATILITY */,
39766
+ // 5% — largely captured by liquidation + depeg factors; kept small to avoid double-counting vol.
39767
+ weight: 5,
39768
+ reason: "STRK, BTC, and stablecoin volatility can move loan-to-value and swap costs."
39769
+ }
39770
+ ];
39771
+ function getBoostedCarryRisk() {
39772
+ const netRisk = boostedCarryRiskFactors.reduce(
39773
+ (acc, curr) => acc + curr.value * curr.weight,
39774
+ 0
39775
+ ) / boostedCarryRiskFactors.reduce((acc, curr) => acc + curr.weight, 0);
39776
+ return {
39777
+ riskFactor: boostedCarryRiskFactors,
39778
+ netRisk,
39779
+ notARisks: getNoRiskTags(boostedCarryRiskFactors)
39780
+ };
39781
+ }
39782
+ function getBoostedCarryFAQs(depositSymbol, debtSymbol, lstSymbol) {
39783
+ return [
39784
+ {
39785
+ question: `What is ${depositSymbol} Boosted?`,
39786
+ answer: `${depositSymbol} Boosted is a carry-style vault: your ${depositSymbol} is supplied as collateral on Vesu, ${debtSymbol} is borrowed, swapped to ${lstSymbol}, and deposited into Hyper-${lstSymbol} for additional yield on top of the lending loop.`
39787
+ },
39788
+ {
39789
+ question: "How does this strategy generate yield?",
39790
+ answer: `Yield comes from several layers: ${lstSymbol} staking yield inside Hyper-${lstSymbol}, the spread between borrowing ${debtSymbol} and holding ${lstSymbol}, and efficient routing via Avnu. The vault targets about 50% loan-to-value and rebalances when LTV rises above ~55% so risk and yield stay in balance.`
39791
+ },
39792
+ {
39793
+ question: "Which protocols are used?",
39794
+ answer: /* @__PURE__ */ jsxs5("span", { children: [
39795
+ /* @__PURE__ */ jsx6("strong", { children: "Vesu" }),
39796
+ " for collateral and borrowing, ",
39797
+ /* @__PURE__ */ jsx6("strong", { children: "Avnu" }),
39798
+ " ",
39799
+ "for swaps, ",
39800
+ /* @__PURE__ */ jsx6("strong", { children: "Endur" }),
39801
+ " for ",
39802
+ lstSymbol,
39803
+ ", and the Troves",
39804
+ " ",
39805
+ /* @__PURE__ */ jsxs5("strong", { children: [
39806
+ "Hyper-",
39807
+ lstSymbol
39808
+ ] }),
39809
+ " vault for the boosted leg."
39810
+ ] })
39811
+ },
39812
+ {
39813
+ question: "Is there liquidation risk?",
39814
+ answer: `Yes. Your ${depositSymbol} collateral and ${debtSymbol} debt can move in different directions, which affects your health factor on Vesu. We actively monitor positions and rebalance automatically through our systems to keep loan-to-value near target. However, unexpected technical failures or very sharp market moves can still lead to liquidation. Under normal conditions we aim for a buffer of roughly 30% adverse price movement before liquidation becomes likely \u2014 but if monitoring is unavailable for many hours during a trending market, that buffer can be consumed. In extreme scenarios, liquidation remains possible.`
39815
+ },
39816
+ {
39817
+ question: "What do I receive when I deposit?",
39818
+ answer: "You receive vault tokens representing your share of the vault. They reflect both principal and accrued yield."
39819
+ },
39820
+ {
39821
+ question: "How long do withdrawals take?",
39822
+ answer: "Withdrawals typically take 1\u20132 hours. You receive an NFT for your request; funds are sent to the NFT owner once the vault unwinds its positions. The vault must sell xSTRK back to STRK to repay debt \u2014 if DEX liquidity is thin or your withdrawal is large, unwinding can take longer or happen in smaller steps to limit slippage."
39823
+ },
39824
+ {
39825
+ question: "Is this vault non-custodial?",
39826
+ answer: "Yes. The vault runs on-chain. You hold your vault tokens, and positions are transparent via on-chain contracts."
39827
+ },
39828
+ {
39829
+ question: "Are there any fees?",
39830
+ answer: "Troves charges a 10% performance fee on yield only \u2014 not on your deposited principal. The APY shown is already net of this fee. When you withdraw, a 0.1% redemption fee applies. That small fee helps keep the vault efficient for long-term depositors. This fee is sent back to the vault itself: very short stays create extra swap and rebalancing costs for everyone. If you stay for a reasonable period, your yield will typically far outweigh this one-time charge."
39831
+ },
39832
+ {
39833
+ question: "Is the vault audited?",
39834
+ answer: /* @__PURE__ */ jsxs5("span", { children: [
39835
+ "Yes. The strategy is built on the audited Starknet Vault Kit. See the security details beside the strategy name and the",
39836
+ " ",
39837
+ /* @__PURE__ */ jsx6(
39838
+ "a",
39839
+ {
39840
+ href: "https://github.com/trovesfi/starknet_vault_kit/tree/sherlock-audited",
39841
+ target: "_blank",
39842
+ rel: "noopener noreferrer",
39843
+ style: { textDecoration: "underline" },
39844
+ children: "open-source repo"
39845
+ }
39846
+ ),
39847
+ "."
39848
+ ] })
39849
+ }
39850
+ ];
39851
+ }
39712
39852
  function getStrategySettings2(settings, meta) {
39713
39853
  const depositToken = settings.depositToken;
39714
39854
  const debtToken = settings.debtToken;
@@ -39716,7 +39856,7 @@ function getStrategySettings2(settings, meta) {
39716
39856
  return {
39717
39857
  id: meta.id,
39718
39858
  name: meta.name,
39719
- description: `Deposits ${depositToken.symbol} as collateral on Vesu, borrows ${debtToken.symbol}, swaps to ${lstToken.symbol}, and deposits into Hyper-${lstToken.symbol} for boosted yield`,
39859
+ description: `Deposits ${depositToken.symbol} as collateral on Vesu, borrows ${debtToken.symbol}, swaps to ${lstToken.symbol}, and deposits into Hyper-${lstToken.symbol} for boosted yield. Target LTV is about 50%, with rebalances happening when LTV is above 55%.`,
39720
39860
  address: settings.vaultAddress,
39721
39861
  launchBlock: meta.launchBlock,
39722
39862
  type: "ERC4626",
@@ -39726,13 +39866,8 @@ function getStrategySettings2(settings, meta) {
39726
39866
  },
39727
39867
  depositTokens: [depositToken],
39728
39868
  additionalInfo: getBoostedxSTRKCarrySettings(settings),
39729
- // TODO: config lateron
39730
- risk: {
39731
- riskFactor: [],
39732
- netRisk: 0,
39733
- notARisks: []
39734
- },
39735
- protocols: [Protocols.VESU, Protocols.TROVES],
39869
+ risk: getBoostedCarryRisk(),
39870
+ protocols: [Protocols.VESU, Protocols.ENDUR, Protocols.TROVES],
39736
39871
  curator: {
39737
39872
  name: "Unwrap Labs",
39738
39873
  logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
@@ -39740,7 +39875,7 @@ function getStrategySettings2(settings, meta) {
39740
39875
  settings: {
39741
39876
  maxTVL: Web3Number.fromWei(0, depositToken.decimals),
39742
39877
  isPaused: false,
39743
- isAudited: false,
39878
+ isAudited: true,
39744
39879
  isInstantWithdrawal: false,
39745
39880
  hideHarvestInfo: true,
39746
39881
  quoteToken: depositToken,
@@ -39753,27 +39888,32 @@ function getStrategySettings2(settings, meta) {
39753
39888
  ]
39754
39889
  },
39755
39890
  contractDetails: getContractDetails(settings),
39756
- // TODO: config later
39757
- faqs: [],
39891
+ faqs: getBoostedCarryFAQs(
39892
+ depositToken.symbol,
39893
+ debtToken.symbol,
39894
+ lstToken.symbol
39895
+ ),
39896
+ apyMethodology: "APY reflects net returns after a 10% performance fee on yield (not on principal). Underlying xSTRK appreciation and Vesu borrow costs can move over time; displayed APY is an estimate.",
39758
39897
  investmentSteps: [
39759
39898
  `Deposit ${depositToken.symbol} into the vault`,
39760
39899
  `${depositToken.symbol} is supplied as collateral on Vesu, ${debtToken.symbol} is borrowed`,
39761
39900
  `Borrowed ${debtToken.symbol} is swapped to ${lstToken.symbol} via Avnu`,
39762
39901
  `${lstToken.symbol} is deposited into the Hyper-${lstToken.symbol} vault for additional yield`,
39763
- `On withdrawal, the pipeline reverses to return ${depositToken.symbol}`
39902
+ `Actively monitored and rebalanced to maintain optimal LTV and yield.`
39764
39903
  ],
39765
39904
  // TODO: config later
39766
39905
  tags: ["Meta Vaults" /* META_VAULT */],
39767
39906
  security: {
39768
39907
  auditStatus: "Audited" /* AUDITED */,
39769
39908
  sourceCode: {
39770
- type: "Closed Source" /* CLOSED_SOURCE */,
39771
- contractLink: "https://github.com/trovesfi/troves-contracts"
39909
+ type: "Open Source" /* OPEN_SOURCE */,
39910
+ contractLink: "https://github.com/trovesfi/starknet_vault_kit/tree/sherlock-audited"
39772
39911
  },
39912
+ // TODO
39773
39913
  accessControl: {
39774
39914
  type: "Standard Account" /* STANDARD_ACCOUNT */,
39775
39915
  addresses: [ContractAddr.from("0x0")],
39776
- timeLock: "2 Days"
39916
+ timeLock: "0 Days"
39777
39917
  }
39778
39918
  },
39779
39919
  redemptionInfo: {
@@ -39792,8 +39932,8 @@ function getStrategySettings2(settings, meta) {
39792
39932
  }
39793
39933
  ]
39794
39934
  },
39795
- usualTimeToEarnings: null,
39796
- usualTimeToEarningsDescription: null
39935
+ usualTimeToEarnings: "2 weeks",
39936
+ usualTimeToEarningsDescription: "This strategy depends on Hyper xSTRK's yield, which depends on the price of xSTRK on DEX appreciating. It may be possible the increase is not continuous and generally rebases atleast once every 2 weeks."
39797
39937
  };
39798
39938
  }
39799
39939
  var BoostedxSTRKCarryStrategies = [