@strkfarm/sdk 2.0.0-dev.36 → 2.0.0-dev.38
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 +177 -23
- package/dist/index.browser.mjs +177 -23
- package/dist/index.d.ts +5 -3
- package/dist/index.js +178 -23
- package/dist/index.mjs +177 -23
- package/package.json +1 -1
- package/src/strategies/factory.ts +23 -3
- package/src/strategies/token-boosted-xstrk-carry-strategy.tsx +190 -24
package/dist/index.d.ts
CHANGED
|
@@ -2906,7 +2906,8 @@ declare enum FactoryStrategyType {
|
|
|
2906
2906
|
HYPER_LST = "HYPER_LST",
|
|
2907
2907
|
VESU_REBALANCE = "VESU_REBALANCE",
|
|
2908
2908
|
SENSEI = "SENSEI",
|
|
2909
|
-
YOLO_VAULT = "YOLO_VAULT"
|
|
2909
|
+
YOLO_VAULT = "YOLO_VAULT",
|
|
2910
|
+
BOOSTEDXSTRKCARRY = "BOOSTEDXSTRKCARRY"
|
|
2910
2911
|
}
|
|
2911
2912
|
declare function createUniversalStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<UniversalStrategySettings>): UniversalStrategy<UniversalStrategySettings>;
|
|
2912
2913
|
declare function createEkuboCLStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<CLVaultStrategySettings>): EkuboCLVault;
|
|
@@ -2914,6 +2915,7 @@ declare function createYoloVaultStrategy(config: IConfig, pricer: PricerBase, me
|
|
|
2914
2915
|
declare function createHyperLSTStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<HyperLSTStrategySettings>): UniversalLstMultiplierStrategy<HyperLSTStrategySettings>;
|
|
2915
2916
|
declare function createVesuRebalanceStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<VesuRebalanceSettings>): VesuRebalance;
|
|
2916
2917
|
declare function createSenseiStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<SenseiVaultSettings>): SenseiVault;
|
|
2918
|
+
declare function createBoostedXSTRKCarryStrategy(config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<BoostedxSTRKCarryStrategySettings>): BoostedxSTRKCarryStrategy<BoostedxSTRKCarryStrategySettings>;
|
|
2917
2919
|
/**
|
|
2918
2920
|
* Determines the strategy type from metadata by inspecting the additionalInfo structure
|
|
2919
2921
|
*/
|
|
@@ -2921,7 +2923,7 @@ declare function getStrategyTypeFromMetadata(metadata: IStrategyMetadata<any>):
|
|
|
2921
2923
|
/**
|
|
2922
2924
|
* Generic factory function that creates SDK strategy instances based on type
|
|
2923
2925
|
*/
|
|
2924
|
-
declare function createStrategy(type: FactoryStrategyType, config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<any>): EkuboCLVault | VesuRebalance | SenseiVault | YoLoVault | UniversalStrategy<UniversalStrategySettings> | UniversalLstMultiplierStrategy<HyperLSTStrategySettings>;
|
|
2926
|
+
declare function createStrategy(type: FactoryStrategyType, config: IConfig, pricer: PricerBase, metadata: IStrategyMetadata<any>): EkuboCLVault | VesuRebalance | SenseiVault | YoLoVault | UniversalStrategy<UniversalStrategySettings> | UniversalLstMultiplierStrategy<HyperLSTStrategySettings> | BoostedxSTRKCarryStrategy<BoostedxSTRKCarryStrategySettings>;
|
|
2925
2927
|
|
|
2926
2928
|
interface EkuboRouteNode {
|
|
2927
2929
|
pool_key: {
|
|
@@ -3290,4 +3292,4 @@ declare class PasswordJsonCryptoUtil {
|
|
|
3290
3292
|
decrypt(encryptedData: string, password: string): any;
|
|
3291
3293
|
}
|
|
3292
3294
|
|
|
3293
|
-
export { type APYInfo, APYType, AUDIT_URL, AUMTypes, AVNU_EXCHANGE, AVNU_EXCHANGE_FOR_LEGACY_USDC, AVNU_LEGACY_SANITIZER, AVNU_MIDDLEWARE, AVNU_QUOTE_URL, type AccessControlInfo, AccessControlType, type AccountInfo, type AdapterLeafType, type AllAccountsStore, type AmountInfo, type AmountsInfo, type ApproveCallParams, AuditStatus, AutoCompounderSTRK, AvnuAdapter, type AvnuAdapterConfig, type AvnuDepositParams, type AvnuSwapCallParams, type AvnuWithdrawParams, AvnuWrapper, BaseAdapter, type BaseAdapterConfig, BaseStrategy, BoostedxSTRKCarryStrategies, BoostedxSTRKCarryStrategy, type BoostedxSTRKCarryStrategySettings, type CLVaultStrategySettings, CommonAdapter, type CommonAdapterConfig, ContractAddr, DEFAULT_TROVES_STRATEGIES_API, type DecreaseLeverParams, Deployer, type DepositParams, type DualActionAmount, type DualTokenInfo, ERC20, EXTENDED_CONTRACT, EXTENDED_SANITIZER, type EkuboBounds, EkuboCLVault, EkuboCLVaultStrategies, type EkuboPoolKey, EkuboPricer, type EkuboQuote, EkuboQuoter, type EkuboRouteNode, type EkuboSplit, type FAQ, FactoryStrategyType, FatalError, type FilterOption, type FlashloanCallParams, FlowChartColors, type GenerateCallFn, Global, HealthFactorMath, HyperLSTStrategies, type HyperLSTStrategySettings, type IConfig, type ICurator, type IInvestmentFlow, ILending, type ILendingMetadata, type ILendingPosition, type IProtocol, type IStrategyMetadata, type IncreaseLeverParams, Initializable, type InputModeFromAction, InstantWithdrawalVault, LSTAPRService, LSTPriceType, type LSTStats, type LeafAdapterFn, type LeafData, type LendingToken, type LoggerConfig, type LoggerLevel, type ManageCall, MarginType, Midas, MyNumber, type NetAPYDetails, type NetAPYSplit, Network, PRICE_ROUTER, type ParsedStarknetCall, PasswordJsonCryptoUtil, type PositionAPY, type PositionAmount, type PositionInfo, PositionTypeAvnuExtended, Pragma, type PriceInfo, Pricer, PricerBase, PricerFromApi, PricerLST, PricerRedis, Protocols, type RedemptionInfo, type RequiredFields, type RequiredKeys, type RequiredStoreConfig, type RiskFactor, RiskType, type Route, type RouteNode, SIMPLE_SANITIZER, SIMPLE_SANITIZER_V2, SIMPLE_SANITIZER_VESU_V1_DELEGATIONS, SVK_SIMPLE_SANITIZER, type SecurityMetadata, SenseiStrategies, SenseiVault, type SenseiVaultSettings, type SingleActionAmount, type SingleTokenInfo, type SourceCodeInfo, SourceCodeType, StandardMerkleTree, type StandardMerkleTreeData, StarknetCallParser, type StarknetCallParserOptions, Store, type StoreConfig, type StrategyAlert, type StrategyApyHistoryUIConfig, type StrategyCapabilities, type StrategyFilterMetadata, type StrategyInputMode, StrategyLiveStatus, type StrategyMetadata, type StrategyRegistryEntry, type StrategySettings, StrategyTag, StrategyType, type SupportedPosition, SvkTrovesAdapter, type SvkTrovesAdapterConfig, type Swap, type SwapInfo, type SwapPriceInfo, TRANSFER_SANITIZER, TelegramGroupNotif, TelegramNotif, type TokenAmount, type TokenInfo, TokenMarketData, TokenTransferAdapter, type TokenTransferAdapterConfig, UNIVERSAL_ADAPTER_IDS, UNIVERSAL_MANAGE_IDS, UniversalLstMultiplierStrategy, type UniversalManageCall, UniversalStrategies, UniversalStrategy, type UniversalStrategySettings, UnwrapLabsCurator, type UserPositionCard, type UserPositionCardSubValueColor, type UserPositionCardsInput, type UserYoloInfo, VESU_SINGLETON, VESU_V2_MODIFY_POSITION_SANITIZER, type VaultPosition, VaultType, VesuAdapter, type VesuAdapterConfig, type VesuAmount, VesuAmountDenomination, VesuAmountType, type VesuDefiSpringRewardsCallParams, type VesuDepositParams, type VesuModifyDelegationCallParams, VesuModifyPositionAdapter, type VesuModifyPositionAdapterConfig, type VesuModifyPositionCallParams, type VesuModifyPositionDepositParams, type VesuModifyPositionWithdrawParams, VesuMultiplyAdapter, type VesuMultiplyAdapterConfig, type VesuMultiplyCallParams, VesuPoolMetadata, VesuPools, VesuRebalance, type VesuRebalanceSettings, VesuRebalanceStrategies, VesuSupplyOnlyAdapter, type VesuSupplyOnlyAdapterConfig, type VesuWithdrawParams, Web3Number, type WithdrawParams, YoLoVault, type YoloSettings, type YoloSpendingLevel, type YoloVaultSettings, type YoloVaultStatus, YoloVaultStrategies, ZkLend, _riskFactor, assert, buildStrategyRegistry, configureLogger, createEkuboCLStrategy, createHyperLSTStrategy, createSenseiStrategy, createStrategy, createUniversalStrategy, createVesuRebalanceStrategy, createYoloVaultStrategy, detectCapabilities, extensionMap, getAPIUsingHeadlessBrowser, getAllStrategyMetadata, getAllStrategyTags, getContractDetails, getDefaultStoreConfig, getFAQs, getFilterMetadata, getInvestmentSteps, getLiveStrategies, getMainnetConfig, getNoRiskTags, getRiskColor, getRiskExplaination, getStrategiesByType, getStrategyTagDesciption, getStrategyTypeFromMetadata, getTrovesEndpoint, getVesuSingletonAddress, highlightTextWithLinks, type i257, isDualTokenStrategy, logger, toAmountsInfo, toBigInt };
|
|
3295
|
+
export { type APYInfo, APYType, AUDIT_URL, AUMTypes, AVNU_EXCHANGE, AVNU_EXCHANGE_FOR_LEGACY_USDC, AVNU_LEGACY_SANITIZER, AVNU_MIDDLEWARE, AVNU_QUOTE_URL, type AccessControlInfo, AccessControlType, type AccountInfo, type AdapterLeafType, type AllAccountsStore, type AmountInfo, type AmountsInfo, type ApproveCallParams, AuditStatus, AutoCompounderSTRK, AvnuAdapter, type AvnuAdapterConfig, type AvnuDepositParams, type AvnuSwapCallParams, type AvnuWithdrawParams, AvnuWrapper, BaseAdapter, type BaseAdapterConfig, BaseStrategy, BoostedxSTRKCarryStrategies, BoostedxSTRKCarryStrategy, type BoostedxSTRKCarryStrategySettings, type CLVaultStrategySettings, CommonAdapter, type CommonAdapterConfig, ContractAddr, DEFAULT_TROVES_STRATEGIES_API, type DecreaseLeverParams, Deployer, type DepositParams, type DualActionAmount, type DualTokenInfo, ERC20, EXTENDED_CONTRACT, EXTENDED_SANITIZER, type EkuboBounds, EkuboCLVault, EkuboCLVaultStrategies, type EkuboPoolKey, EkuboPricer, type EkuboQuote, EkuboQuoter, type EkuboRouteNode, type EkuboSplit, type FAQ, FactoryStrategyType, FatalError, type FilterOption, type FlashloanCallParams, FlowChartColors, type GenerateCallFn, Global, HealthFactorMath, HyperLSTStrategies, type HyperLSTStrategySettings, type IConfig, type ICurator, type IInvestmentFlow, ILending, type ILendingMetadata, type ILendingPosition, type IProtocol, type IStrategyMetadata, type IncreaseLeverParams, Initializable, type InputModeFromAction, InstantWithdrawalVault, LSTAPRService, LSTPriceType, type LSTStats, type LeafAdapterFn, type LeafData, type LendingToken, type LoggerConfig, type LoggerLevel, type ManageCall, MarginType, Midas, MyNumber, type NetAPYDetails, type NetAPYSplit, Network, PRICE_ROUTER, type ParsedStarknetCall, PasswordJsonCryptoUtil, type PositionAPY, type PositionAmount, type PositionInfo, PositionTypeAvnuExtended, Pragma, type PriceInfo, Pricer, PricerBase, PricerFromApi, PricerLST, PricerRedis, Protocols, type RedemptionInfo, type RequiredFields, type RequiredKeys, type RequiredStoreConfig, type RiskFactor, RiskType, type Route, type RouteNode, SIMPLE_SANITIZER, SIMPLE_SANITIZER_V2, SIMPLE_SANITIZER_VESU_V1_DELEGATIONS, SVK_SIMPLE_SANITIZER, type SecurityMetadata, SenseiStrategies, SenseiVault, type SenseiVaultSettings, type SingleActionAmount, type SingleTokenInfo, type SourceCodeInfo, SourceCodeType, StandardMerkleTree, type StandardMerkleTreeData, StarknetCallParser, type StarknetCallParserOptions, Store, type StoreConfig, type StrategyAlert, type StrategyApyHistoryUIConfig, type StrategyCapabilities, type StrategyFilterMetadata, type StrategyInputMode, StrategyLiveStatus, type StrategyMetadata, type StrategyRegistryEntry, type StrategySettings, StrategyTag, StrategyType, type SupportedPosition, SvkTrovesAdapter, type SvkTrovesAdapterConfig, type Swap, type SwapInfo, type SwapPriceInfo, TRANSFER_SANITIZER, TelegramGroupNotif, TelegramNotif, type TokenAmount, type TokenInfo, TokenMarketData, TokenTransferAdapter, type TokenTransferAdapterConfig, UNIVERSAL_ADAPTER_IDS, UNIVERSAL_MANAGE_IDS, UniversalLstMultiplierStrategy, type UniversalManageCall, UniversalStrategies, UniversalStrategy, type UniversalStrategySettings, UnwrapLabsCurator, type UserPositionCard, type UserPositionCardSubValueColor, type UserPositionCardsInput, type UserYoloInfo, VESU_SINGLETON, VESU_V2_MODIFY_POSITION_SANITIZER, type VaultPosition, VaultType, VesuAdapter, type VesuAdapterConfig, type VesuAmount, VesuAmountDenomination, VesuAmountType, type VesuDefiSpringRewardsCallParams, type VesuDepositParams, type VesuModifyDelegationCallParams, VesuModifyPositionAdapter, type VesuModifyPositionAdapterConfig, type VesuModifyPositionCallParams, type VesuModifyPositionDepositParams, type VesuModifyPositionWithdrawParams, VesuMultiplyAdapter, type VesuMultiplyAdapterConfig, type VesuMultiplyCallParams, VesuPoolMetadata, VesuPools, VesuRebalance, type VesuRebalanceSettings, VesuRebalanceStrategies, VesuSupplyOnlyAdapter, type VesuSupplyOnlyAdapterConfig, type VesuWithdrawParams, Web3Number, type WithdrawParams, YoLoVault, type YoloSettings, type YoloSpendingLevel, type YoloVaultSettings, type YoloVaultStatus, YoloVaultStrategies, ZkLend, _riskFactor, assert, buildStrategyRegistry, configureLogger, createBoostedXSTRKCarryStrategy, createEkuboCLStrategy, createHyperLSTStrategy, createSenseiStrategy, createStrategy, createUniversalStrategy, createVesuRebalanceStrategy, createYoloVaultStrategy, detectCapabilities, extensionMap, getAPIUsingHeadlessBrowser, getAllStrategyMetadata, getAllStrategyTags, getContractDetails, getDefaultStoreConfig, getFAQs, getFilterMetadata, getInvestmentSteps, getLiveStrategies, getMainnetConfig, getNoRiskTags, getRiskColor, getRiskExplaination, getStrategiesByType, getStrategyTagDesciption, getStrategyTypeFromMetadata, getTrovesEndpoint, getVesuSingletonAddress, highlightTextWithLinks, type i257, isDualTokenStrategy, logger, toAmountsInfo, toBigInt };
|
package/dist/index.js
CHANGED
|
@@ -130,6 +130,7 @@ __export(index_exports, {
|
|
|
130
130
|
assert: () => assert,
|
|
131
131
|
buildStrategyRegistry: () => buildStrategyRegistry,
|
|
132
132
|
configureLogger: () => configureLogger,
|
|
133
|
+
createBoostedXSTRKCarryStrategy: () => createBoostedXSTRKCarryStrategy,
|
|
133
134
|
createEkuboCLStrategy: () => createEkuboCLStrategy,
|
|
134
135
|
createHyperLSTStrategy: () => createHyperLSTStrategy,
|
|
135
136
|
createSenseiStrategy: () => createSenseiStrategy,
|
|
@@ -39343,6 +39344,7 @@ var HyperLSTStrategies = [
|
|
|
39343
39344
|
|
|
39344
39345
|
// src/strategies/token-boosted-xstrk-carry-strategy.tsx
|
|
39345
39346
|
var import_starknet37 = require("starknet");
|
|
39347
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
39346
39348
|
var BoostedxSTRKCarryStrategy = class _BoostedxSTRKCarryStrategy extends SVKStrategy {
|
|
39347
39349
|
constructor(config, pricer, metadata) {
|
|
39348
39350
|
super(config, pricer, metadata);
|
|
@@ -39981,15 +39983,15 @@ var boostedxSTRKCarrySettings = {
|
|
|
39981
39983
|
leafAdapters: [],
|
|
39982
39984
|
adapters: [],
|
|
39983
39985
|
// Calc using the maxLTV / targetLTV (0.5)
|
|
39984
|
-
targetHealthFactor: 1.
|
|
39986
|
+
targetHealthFactor: 1.36,
|
|
39985
39987
|
// Calc using the maxLTV / maxAcceptableLTV (0.55)
|
|
39986
|
-
minHealthFactor: 1.
|
|
39988
|
+
minHealthFactor: 1.3,
|
|
39987
39989
|
vesuPoolId: VesuPools.Prime,
|
|
39988
39990
|
// New metadata-driven token configuration
|
|
39989
39991
|
depositToken: Global.getDefaultTokens().find((t) => t.symbol === "USDC"),
|
|
39990
39992
|
debtToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
39991
39993
|
lstHyperToken: Global.getDefaultTokens().find((t) => t.symbol === "xSTRK"),
|
|
39992
|
-
maxLTV: 0.
|
|
39994
|
+
maxLTV: 0.68,
|
|
39993
39995
|
targetLTV: 0.5,
|
|
39994
39996
|
// BTC.Fi rewards flag - false for USDC (uses old report flow)
|
|
39995
39997
|
hasBtcFiRewards: false,
|
|
@@ -40020,13 +40022,13 @@ var wbtcBoostedSettings = {
|
|
|
40020
40022
|
),
|
|
40021
40023
|
leafAdapters: [],
|
|
40022
40024
|
adapters: [],
|
|
40023
|
-
targetHealthFactor: 1.
|
|
40024
|
-
minHealthFactor: 1.
|
|
40025
|
+
targetHealthFactor: 1.4,
|
|
40026
|
+
minHealthFactor: 1.35,
|
|
40025
40027
|
vesuPoolId: VesuPools.Prime,
|
|
40026
40028
|
depositToken: Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
40027
40029
|
debtToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
40028
40030
|
lstHyperToken: Global.getDefaultTokens().find((t) => t.symbol === "xSTRK"),
|
|
40029
|
-
maxLTV: 0.
|
|
40031
|
+
maxLTV: 0.7,
|
|
40030
40032
|
targetLTV: 0.5,
|
|
40031
40033
|
hasBtcFiRewards: true,
|
|
40032
40034
|
hyperLstVaultAddress: ContractAddr.from(
|
|
@@ -40037,6 +40039,145 @@ var wbtcBoostedSettings = {
|
|
|
40037
40039
|
),
|
|
40038
40040
|
trovesStrategyId: "hyper_xstrk"
|
|
40039
40041
|
};
|
|
40042
|
+
var boostedCarryRiskFactors = [
|
|
40043
|
+
{
|
|
40044
|
+
type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */,
|
|
40045
|
+
value: 2 /* WELL_AUDITED */,
|
|
40046
|
+
// 20% — core trust assumption; SVK is audited but still multi-contract (vault, manager, adapters).
|
|
40047
|
+
weight: 20,
|
|
40048
|
+
reason: "Built on the Starknet Vault Kit (SVK), with audits under the Sherlock-audited branch."
|
|
40049
|
+
},
|
|
40050
|
+
{
|
|
40051
|
+
type: "Liquidation Risk" /* LIQUIDATION_RISK */,
|
|
40052
|
+
value: 3 /* MODERATE_PROBABILITY */,
|
|
40053
|
+
// 20% — tied with smart contract; uncorrelated collateral/debt is the main principal risk here.
|
|
40054
|
+
weight: 20,
|
|
40055
|
+
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."
|
|
40056
|
+
},
|
|
40057
|
+
{
|
|
40058
|
+
type: "Low Liquidity Risk" /* LOW_LIQUIDITY_RISK */,
|
|
40059
|
+
value: 3 /* MODERATE_CONCERNS */,
|
|
40060
|
+
// 15% — below liquidation but above ops risks; every unwind/withdraw depends on xSTRK→STRK depth.
|
|
40061
|
+
weight: 15,
|
|
40062
|
+
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."
|
|
40063
|
+
},
|
|
40064
|
+
{
|
|
40065
|
+
type: "Technical Risk" /* TECHNICAL_RISK */,
|
|
40066
|
+
value: 3 /* SOME_COMPLEXITY */,
|
|
40067
|
+
// 13% — monitoring/rebalancing stack matters, but usually recoverable without instant loss.
|
|
40068
|
+
weight: 13,
|
|
40069
|
+
reason: "Yield routes across Vesu, Avnu, and Hyper xSTRK with automated monitoring. Technical failures can delay rebalancing."
|
|
40070
|
+
},
|
|
40071
|
+
{
|
|
40072
|
+
type: "Depeg Risk" /* DEPEG_RISK */,
|
|
40073
|
+
value: 3 /* OCCASIONAL_DEPEG */,
|
|
40074
|
+
// 12% — affects yield and swap notionals; USDC/WBTC depeg is rarer than xSTRK/STRK drift.
|
|
40075
|
+
weight: 12,
|
|
40076
|
+
reason: "xSTRK yield depends on its exchange rate vs STRK; USDC and WBTC carry standard stablecoin and BTC market risks."
|
|
40077
|
+
},
|
|
40078
|
+
{
|
|
40079
|
+
type: "Oracle Risk" /* ORACLE_RISK */,
|
|
40080
|
+
value: 2 /* SINGLE_RELIABLE */,
|
|
40081
|
+
// 10% — Vesu HF depends on feeds; Starknet oracles are established but not redundant here.
|
|
40082
|
+
weight: 10,
|
|
40083
|
+
reason: "Vesu collateral and debt valuations rely on Starknet price feeds."
|
|
40084
|
+
},
|
|
40085
|
+
{
|
|
40086
|
+
type: "Counterparty Risk" /* COUNTERPARTY_RISK */,
|
|
40087
|
+
value: 2 /* REPUTABLE_COUNTERPARTY */,
|
|
40088
|
+
// 10% — same tier as oracle; Vesu/Endur/Troves are mature but still protocol counterparty risk.
|
|
40089
|
+
weight: 10,
|
|
40090
|
+
reason: "Exposure to Vesu lending, Endur (xSTRK), and Troves Hyper vault infrastructure."
|
|
40091
|
+
},
|
|
40092
|
+
{
|
|
40093
|
+
type: "Market Risk" /* MARKET_RISK */,
|
|
40094
|
+
value: 3 /* MODERATE_VOLATILITY */,
|
|
40095
|
+
// 5% — largely captured by liquidation + depeg factors; kept small to avoid double-counting vol.
|
|
40096
|
+
weight: 5,
|
|
40097
|
+
reason: "STRK, BTC, and stablecoin volatility can move loan-to-value and swap costs."
|
|
40098
|
+
}
|
|
40099
|
+
];
|
|
40100
|
+
function getBoostedCarryRisk() {
|
|
40101
|
+
const netRisk = boostedCarryRiskFactors.reduce(
|
|
40102
|
+
(acc, curr) => acc + curr.value * curr.weight,
|
|
40103
|
+
0
|
|
40104
|
+
) / boostedCarryRiskFactors.reduce((acc, curr) => acc + curr.weight, 0);
|
|
40105
|
+
return {
|
|
40106
|
+
riskFactor: boostedCarryRiskFactors,
|
|
40107
|
+
netRisk,
|
|
40108
|
+
notARisks: getNoRiskTags(boostedCarryRiskFactors)
|
|
40109
|
+
};
|
|
40110
|
+
}
|
|
40111
|
+
function getBoostedCarryFAQs(depositSymbol, debtSymbol, lstSymbol) {
|
|
40112
|
+
return [
|
|
40113
|
+
{
|
|
40114
|
+
question: `What is ${depositSymbol} Boosted?`,
|
|
40115
|
+
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.`
|
|
40116
|
+
},
|
|
40117
|
+
{
|
|
40118
|
+
question: "How does this strategy generate yield?",
|
|
40119
|
+
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.`
|
|
40120
|
+
},
|
|
40121
|
+
{
|
|
40122
|
+
question: "Which protocols are used?",
|
|
40123
|
+
answer: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { children: [
|
|
40124
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("strong", { children: "Vesu" }),
|
|
40125
|
+
" for collateral and borrowing, ",
|
|
40126
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("strong", { children: "Avnu" }),
|
|
40127
|
+
" ",
|
|
40128
|
+
"for swaps, ",
|
|
40129
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("strong", { children: "Endur" }),
|
|
40130
|
+
" for ",
|
|
40131
|
+
lstSymbol,
|
|
40132
|
+
", and the Troves",
|
|
40133
|
+
" ",
|
|
40134
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("strong", { children: [
|
|
40135
|
+
"Hyper-",
|
|
40136
|
+
lstSymbol
|
|
40137
|
+
] }),
|
|
40138
|
+
" vault for the boosted leg."
|
|
40139
|
+
] })
|
|
40140
|
+
},
|
|
40141
|
+
{
|
|
40142
|
+
question: "Is there liquidation risk?",
|
|
40143
|
+
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.`
|
|
40144
|
+
},
|
|
40145
|
+
{
|
|
40146
|
+
question: "What do I receive when I deposit?",
|
|
40147
|
+
answer: "You receive vault tokens representing your share of the vault. They reflect both principal and accrued yield."
|
|
40148
|
+
},
|
|
40149
|
+
{
|
|
40150
|
+
question: "How long do withdrawals take?",
|
|
40151
|
+
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."
|
|
40152
|
+
},
|
|
40153
|
+
{
|
|
40154
|
+
question: "Is this vault non-custodial?",
|
|
40155
|
+
answer: "Yes. The vault runs on-chain. You hold your vault tokens, and positions are transparent via on-chain contracts."
|
|
40156
|
+
},
|
|
40157
|
+
{
|
|
40158
|
+
question: "Are there any fees?",
|
|
40159
|
+
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, 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."
|
|
40160
|
+
},
|
|
40161
|
+
{
|
|
40162
|
+
question: "Is the vault audited?",
|
|
40163
|
+
answer: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { children: [
|
|
40164
|
+
"Yes. The strategy is built on the audited Starknet Vault Kit. See the security details beside the strategy name and the",
|
|
40165
|
+
" ",
|
|
40166
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
40167
|
+
"a",
|
|
40168
|
+
{
|
|
40169
|
+
href: "https://github.com/trovesfi/starknet_vault_kit/tree/sherlock-audited",
|
|
40170
|
+
target: "_blank",
|
|
40171
|
+
rel: "noopener noreferrer",
|
|
40172
|
+
style: { textDecoration: "underline" },
|
|
40173
|
+
children: "open-source repo"
|
|
40174
|
+
}
|
|
40175
|
+
),
|
|
40176
|
+
"."
|
|
40177
|
+
] })
|
|
40178
|
+
}
|
|
40179
|
+
];
|
|
40180
|
+
}
|
|
40040
40181
|
function getStrategySettings2(settings, meta) {
|
|
40041
40182
|
const depositToken = settings.depositToken;
|
|
40042
40183
|
const debtToken = settings.debtToken;
|
|
@@ -40044,7 +40185,7 @@ function getStrategySettings2(settings, meta) {
|
|
|
40044
40185
|
return {
|
|
40045
40186
|
id: meta.id,
|
|
40046
40187
|
name: meta.name,
|
|
40047
|
-
description: `Deposits ${depositToken.symbol} as collateral on Vesu, borrows ${debtToken.symbol}, swaps to ${lstToken.symbol}, and deposits into Hyper-${lstToken.symbol} for boosted yield
|
|
40188
|
+
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%.`,
|
|
40048
40189
|
address: settings.vaultAddress,
|
|
40049
40190
|
launchBlock: meta.launchBlock,
|
|
40050
40191
|
type: "ERC4626",
|
|
@@ -40054,13 +40195,8 @@ function getStrategySettings2(settings, meta) {
|
|
|
40054
40195
|
},
|
|
40055
40196
|
depositTokens: [depositToken],
|
|
40056
40197
|
additionalInfo: getBoostedxSTRKCarrySettings(settings),
|
|
40057
|
-
|
|
40058
|
-
|
|
40059
|
-
riskFactor: [],
|
|
40060
|
-
netRisk: 0,
|
|
40061
|
-
notARisks: []
|
|
40062
|
-
},
|
|
40063
|
-
protocols: [Protocols.VESU, Protocols.TROVES],
|
|
40198
|
+
risk: getBoostedCarryRisk(),
|
|
40199
|
+
protocols: [Protocols.VESU, Protocols.ENDUR, Protocols.TROVES],
|
|
40064
40200
|
curator: {
|
|
40065
40201
|
name: "Unwrap Labs",
|
|
40066
40202
|
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
@@ -40068,7 +40204,7 @@ function getStrategySettings2(settings, meta) {
|
|
|
40068
40204
|
settings: {
|
|
40069
40205
|
maxTVL: Web3Number.fromWei(0, depositToken.decimals),
|
|
40070
40206
|
isPaused: false,
|
|
40071
|
-
isAudited:
|
|
40207
|
+
isAudited: true,
|
|
40072
40208
|
isInstantWithdrawal: false,
|
|
40073
40209
|
hideHarvestInfo: true,
|
|
40074
40210
|
quoteToken: depositToken,
|
|
@@ -40081,27 +40217,32 @@ function getStrategySettings2(settings, meta) {
|
|
|
40081
40217
|
]
|
|
40082
40218
|
},
|
|
40083
40219
|
contractDetails: getContractDetails(settings),
|
|
40084
|
-
|
|
40085
|
-
|
|
40220
|
+
faqs: getBoostedCarryFAQs(
|
|
40221
|
+
depositToken.symbol,
|
|
40222
|
+
debtToken.symbol,
|
|
40223
|
+
lstToken.symbol
|
|
40224
|
+
),
|
|
40225
|
+
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.",
|
|
40086
40226
|
investmentSteps: [
|
|
40087
40227
|
`Deposit ${depositToken.symbol} into the vault`,
|
|
40088
40228
|
`${depositToken.symbol} is supplied as collateral on Vesu, ${debtToken.symbol} is borrowed`,
|
|
40089
40229
|
`Borrowed ${debtToken.symbol} is swapped to ${lstToken.symbol} via Avnu`,
|
|
40090
40230
|
`${lstToken.symbol} is deposited into the Hyper-${lstToken.symbol} vault for additional yield`,
|
|
40091
|
-
`
|
|
40231
|
+
`Actively monitored and rebalanced to maintain optimal LTV and yield.`
|
|
40092
40232
|
],
|
|
40093
40233
|
// TODO: config later
|
|
40094
40234
|
tags: ["Meta Vaults" /* META_VAULT */],
|
|
40095
40235
|
security: {
|
|
40096
40236
|
auditStatus: "Audited" /* AUDITED */,
|
|
40097
40237
|
sourceCode: {
|
|
40098
|
-
type: "
|
|
40099
|
-
contractLink: "https://github.com/trovesfi/
|
|
40238
|
+
type: "Open Source" /* OPEN_SOURCE */,
|
|
40239
|
+
contractLink: "https://github.com/trovesfi/starknet_vault_kit/tree/sherlock-audited"
|
|
40100
40240
|
},
|
|
40241
|
+
// TODO
|
|
40101
40242
|
accessControl: {
|
|
40102
40243
|
type: "Standard Account" /* STANDARD_ACCOUNT */,
|
|
40103
40244
|
addresses: [ContractAddr.from("0x0")],
|
|
40104
|
-
timeLock: "
|
|
40245
|
+
timeLock: "0 Days"
|
|
40105
40246
|
}
|
|
40106
40247
|
},
|
|
40107
40248
|
redemptionInfo: {
|
|
@@ -40120,8 +40261,8 @@ function getStrategySettings2(settings, meta) {
|
|
|
40120
40261
|
}
|
|
40121
40262
|
]
|
|
40122
40263
|
},
|
|
40123
|
-
usualTimeToEarnings:
|
|
40124
|
-
usualTimeToEarningsDescription:
|
|
40264
|
+
usualTimeToEarnings: "2 weeks",
|
|
40265
|
+
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."
|
|
40125
40266
|
};
|
|
40126
40267
|
}
|
|
40127
40268
|
var BoostedxSTRKCarryStrategies = [
|
|
@@ -40295,6 +40436,7 @@ var FactoryStrategyType = /* @__PURE__ */ ((FactoryStrategyType2) => {
|
|
|
40295
40436
|
FactoryStrategyType2["VESU_REBALANCE"] = "VESU_REBALANCE";
|
|
40296
40437
|
FactoryStrategyType2["SENSEI"] = "SENSEI";
|
|
40297
40438
|
FactoryStrategyType2["YOLO_VAULT"] = "YOLO_VAULT";
|
|
40439
|
+
FactoryStrategyType2["BOOSTEDXSTRKCARRY"] = "BOOSTEDXSTRKCARRY";
|
|
40298
40440
|
return FactoryStrategyType2;
|
|
40299
40441
|
})(FactoryStrategyType || {});
|
|
40300
40442
|
function createUniversalStrategy2(config, pricer, metadata) {
|
|
@@ -40315,6 +40457,9 @@ function createVesuRebalanceStrategy2(config, pricer, metadata) {
|
|
|
40315
40457
|
function createSenseiStrategy(config, pricer, metadata) {
|
|
40316
40458
|
return new SenseiVault(config, pricer, metadata);
|
|
40317
40459
|
}
|
|
40460
|
+
function createBoostedXSTRKCarryStrategy(config, pricer, metadata) {
|
|
40461
|
+
return new BoostedxSTRKCarryStrategy(config, pricer, metadata);
|
|
40462
|
+
}
|
|
40318
40463
|
function getStrategyTypeFromMetadata(metadata) {
|
|
40319
40464
|
const info = metadata.additionalInfo;
|
|
40320
40465
|
if (info && "mainToken" in info && "secondaryToken" in info && "minEpochDurationSeconds" in info && "feeBps" in info) {
|
|
@@ -40323,6 +40468,9 @@ function getStrategyTypeFromMetadata(metadata) {
|
|
|
40323
40468
|
if (info && "borrowable_assets" in info && "underlyingToken" in info) {
|
|
40324
40469
|
return "HYPER_LST" /* HYPER_LST */;
|
|
40325
40470
|
}
|
|
40471
|
+
if (info && "depositToken" in info && "debtToken" in info && "lstToken" in info) {
|
|
40472
|
+
return "BOOSTEDXSTRKCARRY" /* BOOSTEDXSTRKCARRY */;
|
|
40473
|
+
}
|
|
40326
40474
|
if (info && ("newBounds" in info || typeof info.newBounds !== "undefined") && "rebalanceConditions" in info && "quoteAsset" in info) {
|
|
40327
40475
|
return "EKUBO_CL" /* EKUBO_CL */;
|
|
40328
40476
|
}
|
|
@@ -40377,6 +40525,12 @@ function createStrategy(type, config, pricer, metadata) {
|
|
|
40377
40525
|
pricer,
|
|
40378
40526
|
metadata
|
|
40379
40527
|
);
|
|
40528
|
+
case "BOOSTEDXSTRKCARRY" /* BOOSTEDXSTRKCARRY */:
|
|
40529
|
+
return createBoostedXSTRKCarryStrategy(
|
|
40530
|
+
config,
|
|
40531
|
+
pricer,
|
|
40532
|
+
metadata
|
|
40533
|
+
);
|
|
40380
40534
|
default:
|
|
40381
40535
|
throw new Error(`Unknown strategy type: ${type}`);
|
|
40382
40536
|
}
|
|
@@ -41070,6 +41224,7 @@ var deployer_default = Deployer;
|
|
|
41070
41224
|
assert,
|
|
41071
41225
|
buildStrategyRegistry,
|
|
41072
41226
|
configureLogger,
|
|
41227
|
+
createBoostedXSTRKCarryStrategy,
|
|
41073
41228
|
createEkuboCLStrategy,
|
|
41074
41229
|
createHyperLSTStrategy,
|
|
41075
41230
|
createSenseiStrategy,
|