@strkfarm/sdk 2.0.0-staging.34 → 2.0.0-staging.36
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 +122 -48
- package/dist/index.browser.mjs +122 -48
- package/dist/index.d.ts +8 -5
- package/dist/index.js +123 -48
- package/dist/index.mjs +122 -48
- package/package.json +1 -1
- package/src/interfaces/common.tsx +11 -1
- package/src/strategies/ekubo-cl-vault.tsx +2 -4
- package/src/strategies/sensei.ts +2 -5
- package/src/strategies/universal-lst-muliplier-strategy.tsx +2 -4
- package/src/strategies/universal-strategy.tsx +2 -5
- package/src/strategies/vesu-rebalance.tsx +2 -4
- package/src/strategies/yoloVault.ts +114 -25
|
@@ -28707,6 +28707,7 @@ ${r2}}` : "}", l2;
|
|
|
28707
28707
|
UniversalLstMultiplierStrategy: () => UniversalLstMultiplierStrategy,
|
|
28708
28708
|
UniversalStrategies: () => UniversalStrategies,
|
|
28709
28709
|
UniversalStrategy: () => UniversalStrategy,
|
|
28710
|
+
UnwrapLabsCurator: () => UnwrapLabsCurator,
|
|
28710
28711
|
VESU_SINGLETON: () => VESU_SINGLETON,
|
|
28711
28712
|
VESU_V2_MODIFY_POSITION_SANITIZER: () => VESU_V2_MODIFY_POSITION_SANITIZER,
|
|
28712
28713
|
VaultType: () => VaultType,
|
|
@@ -90517,6 +90518,10 @@ spurious results.`);
|
|
|
90517
90518
|
ENDUR: EndurProtocol,
|
|
90518
90519
|
EXTENDED: ExtendedProtocol
|
|
90519
90520
|
};
|
|
90521
|
+
var UnwrapLabsCurator = {
|
|
90522
|
+
name: "Unwrap Labs",
|
|
90523
|
+
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
90524
|
+
};
|
|
90520
90525
|
|
|
90521
90526
|
// src/interfaces/initializable.ts
|
|
90522
90527
|
var Initializable = class {
|
|
@@ -98496,10 +98501,7 @@ spurious results.`);
|
|
|
98496
98501
|
],
|
|
98497
98502
|
protocols: [_protocol],
|
|
98498
98503
|
auditUrl: AUDIT_URL,
|
|
98499
|
-
curator:
|
|
98500
|
-
name: "Unwrap Labs",
|
|
98501
|
-
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
98502
|
-
},
|
|
98504
|
+
curator: UnwrapLabsCurator,
|
|
98503
98505
|
settings: createVesuRebalanceSettings(tokenSymbol),
|
|
98504
98506
|
risk: getVesuRebalanceRisk(),
|
|
98505
98507
|
additionalInfo: {
|
|
@@ -105211,10 +105213,7 @@ spurious results.`);
|
|
|
105211
105213
|
],
|
|
105212
105214
|
protocols: [_protocol2],
|
|
105213
105215
|
auditUrl: AUDIT_URL2,
|
|
105214
|
-
curator:
|
|
105215
|
-
name: "Unwrap Labs",
|
|
105216
|
-
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
105217
|
-
},
|
|
105216
|
+
curator: UnwrapLabsCurator,
|
|
105218
105217
|
risk: {
|
|
105219
105218
|
riskFactor: _lstPoolRiskFactors,
|
|
105220
105219
|
netRisk: _lstPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _lstPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
@@ -115744,10 +115743,7 @@ spurious results.`);
|
|
|
115744
115743
|
),
|
|
115745
115744
|
launchBlock: 1053811,
|
|
115746
115745
|
type: "Other",
|
|
115747
|
-
curator:
|
|
115748
|
-
name: "Unwrap Labs",
|
|
115749
|
-
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
115750
|
-
},
|
|
115746
|
+
curator: UnwrapLabsCurator,
|
|
115751
115747
|
vaultType: {
|
|
115752
115748
|
type: "Looping" /* LOOPING */,
|
|
115753
115749
|
description: "Creates leveraged looping position on xSTRK by borrowing STRK to increase yield"
|
|
@@ -116639,6 +116635,7 @@ spurious results.`);
|
|
|
116639
116635
|
];
|
|
116640
116636
|
|
|
116641
116637
|
// src/strategies/yoloVault.ts
|
|
116638
|
+
var import_react = __toESM(require_react());
|
|
116642
116639
|
var YoLoVault = class extends BaseStrategy {
|
|
116643
116640
|
constructor(config3, pricer, metadata) {
|
|
116644
116641
|
super(config3, {
|
|
@@ -116748,6 +116745,32 @@ spurious results.`);
|
|
|
116748
116745
|
};
|
|
116749
116746
|
}
|
|
116750
116747
|
}
|
|
116748
|
+
async getVaultPositions() {
|
|
116749
|
+
const vaultStatus = await this.getVaultStatus();
|
|
116750
|
+
const {
|
|
116751
|
+
remaining_base: remainingBase,
|
|
116752
|
+
total_second_tokens: totalSecondTokens
|
|
116753
|
+
} = vaultStatus;
|
|
116754
|
+
const primaryTokenAmount = Web3Number.fromWei(remainingBase.toString(), this.primaryToken.decimals);
|
|
116755
|
+
const secondaryTokenAmount = Web3Number.fromWei(totalSecondTokens.toString(), this.secondaryToken.decimals);
|
|
116756
|
+
const [primaryTokenPrice, secondaryTokenPrice] = await Promise.all([
|
|
116757
|
+
this.pricer.getPrice(this.primaryToken.symbol),
|
|
116758
|
+
this.pricer.getPrice(this.secondaryToken.symbol)
|
|
116759
|
+
]);
|
|
116760
|
+
const primaryTokenUsd = primaryTokenAmount.multipliedBy(primaryTokenPrice.price);
|
|
116761
|
+
const secondaryTokenUsd = secondaryTokenAmount.multipliedBy(secondaryTokenPrice.price);
|
|
116762
|
+
return [{
|
|
116763
|
+
amount: primaryTokenAmount,
|
|
116764
|
+
usdValue: primaryTokenUsd.toNumber(),
|
|
116765
|
+
token: this.primaryToken,
|
|
116766
|
+
remarks: "Remaining deposit tokens in the Vault"
|
|
116767
|
+
}, {
|
|
116768
|
+
amount: secondaryTokenAmount,
|
|
116769
|
+
usdValue: secondaryTokenUsd.toNumber(),
|
|
116770
|
+
token: this.secondaryToken,
|
|
116771
|
+
remarks: "Total swapped tokens in the Vault"
|
|
116772
|
+
}];
|
|
116773
|
+
}
|
|
116751
116774
|
async getTVL() {
|
|
116752
116775
|
try {
|
|
116753
116776
|
const [vaultStatus, primaryTokenPrice, secondaryTokenPrice] = await Promise.all([
|
|
@@ -116912,35 +116935,90 @@ spurious results.`);
|
|
|
116912
116935
|
}
|
|
116913
116936
|
return `< ${formatPriceLabel(level.maxPrice)} ${secondaryTokenSymbol}`;
|
|
116914
116937
|
};
|
|
116915
|
-
var
|
|
116916
|
-
|
|
116917
|
-
|
|
116918
|
-
|
|
116919
|
-
|
|
116920
|
-
|
|
116921
|
-
|
|
116922
|
-
|
|
116938
|
+
var getSpendingLevelRows = (levels, secondaryTokenSymbol) => {
|
|
116939
|
+
const positiveSpends = levels.map((l) => l.spendPercent).filter((v) => v > 0);
|
|
116940
|
+
const minSpendPercent = positiveSpends.length > 0 ? Math.min(...positiveSpends) : 1;
|
|
116941
|
+
return levels.map((level) => {
|
|
116942
|
+
const multiplier = level.spendPercent > 0 ? level.spendPercent / minSpendPercent : 0;
|
|
116943
|
+
return {
|
|
116944
|
+
range: getLevelRangeLabel(level, secondaryTokenSymbol),
|
|
116945
|
+
multiplier: `${multiplier.toFixed(2)}x`
|
|
116946
|
+
};
|
|
116947
|
+
});
|
|
116923
116948
|
};
|
|
116924
116949
|
var getYoloVaultCopy = (input) => {
|
|
116925
116950
|
const main = input.mainToken.symbol;
|
|
116926
116951
|
const secondary = input.secondaryToken.symbol;
|
|
116927
|
-
const
|
|
116928
|
-
|
|
116929
|
-
|
|
116930
|
-
|
|
116931
|
-
Start Date: ${input.startDate}
|
|
116932
|
-
Expiry Date: ${input.expiryDate}
|
|
116933
|
-
Execution Window: ${input.totalEpochs} epochs, minimum ${formatDurationSeconds(input.minEpochDurationSeconds)} per epoch
|
|
116934
|
-
TVA Edge vs DCA: deploys more aggressively into dips and stays measured when prices are high.
|
|
116935
|
-
Spend Levels: ${getSpendingLevelSummary(input.spendingLevels, secondary)}
|
|
116936
|
-
|
|
116937
|
-
Learn the core value averaging concept.`;
|
|
116938
|
-
const description = highlightTextWithLinks(descriptionText, [
|
|
116952
|
+
const spendingRows = getSpendingLevelRows(input.spendingLevels, secondary);
|
|
116953
|
+
const description = (0, import_react.createElement)(
|
|
116954
|
+
"div",
|
|
116939
116955
|
{
|
|
116940
|
-
|
|
116941
|
-
|
|
116942
|
-
|
|
116943
|
-
|
|
116956
|
+
style: {
|
|
116957
|
+
display: "flex",
|
|
116958
|
+
flexDirection: "column",
|
|
116959
|
+
gap: "12px"
|
|
116960
|
+
}
|
|
116961
|
+
},
|
|
116962
|
+
(0, import_react.createElement)(
|
|
116963
|
+
"p",
|
|
116964
|
+
null,
|
|
116965
|
+
`Troves Value Averaging (TVA) vault for ${main} -> ${secondary} accumulation.`
|
|
116966
|
+
),
|
|
116967
|
+
(0, import_react.createElement)(
|
|
116968
|
+
"p",
|
|
116969
|
+
null,
|
|
116970
|
+
`We're all bullish on ${secondary}. Price only dips to hit new ATHs in the next cycle. This vault helps you prep - degen style. After all, YOLO.`
|
|
116971
|
+
),
|
|
116972
|
+
(0, import_react.createElement)("p", null, (0, import_react.createElement)("strong", null, "Start Date: "), input.startDate),
|
|
116973
|
+
(0, import_react.createElement)("p", null, (0, import_react.createElement)("strong", null, "Expiry Date: "), input.expiryDate),
|
|
116974
|
+
(0, import_react.createElement)(
|
|
116975
|
+
"p",
|
|
116976
|
+
null,
|
|
116977
|
+
(0, import_react.createElement)("strong", null, "Execution Window: "),
|
|
116978
|
+
`${input.totalEpochs} epochs, minimum ${formatDurationSeconds(input.minEpochDurationSeconds)} per epoch`
|
|
116979
|
+
),
|
|
116980
|
+
(0, import_react.createElement)(
|
|
116981
|
+
"p",
|
|
116982
|
+
null,
|
|
116983
|
+
(0, import_react.createElement)("strong", null, "TVA Edge vs DCA: "),
|
|
116984
|
+
"deploys more aggressively into dips and stays measured when prices are high."
|
|
116985
|
+
),
|
|
116986
|
+
(0, import_react.createElement)("div", null, (0, import_react.createElement)("strong", null, "Spend Levels: ")),
|
|
116987
|
+
(0, import_react.createElement)(
|
|
116988
|
+
"div",
|
|
116989
|
+
{
|
|
116990
|
+
style: {
|
|
116991
|
+
display: "grid",
|
|
116992
|
+
gridTemplateColumns: "2fr 1fr",
|
|
116993
|
+
gap: "4px 12px",
|
|
116994
|
+
fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
|
|
116995
|
+
fontSize: "12px",
|
|
116996
|
+
lineHeight: "18px",
|
|
116997
|
+
padding: "8px 10px",
|
|
116998
|
+
borderRadius: "8px",
|
|
116999
|
+
background: "rgba(255,255,255,0.04)"
|
|
117000
|
+
}
|
|
117001
|
+
},
|
|
117002
|
+
(0, import_react.createElement)("strong", { key: "h-range" }, "Range"),
|
|
117003
|
+
(0, import_react.createElement)("strong", { key: "h-mult" }, "Multiplier"),
|
|
117004
|
+
...spendingRows.flatMap((row, idx) => [
|
|
117005
|
+
(0, import_react.createElement)("span", { key: `r-${idx}` }, row.range),
|
|
117006
|
+
(0, import_react.createElement)("span", { key: `m-${idx}` }, row.multiplier)
|
|
117007
|
+
])
|
|
117008
|
+
),
|
|
117009
|
+
(0, import_react.createElement)(
|
|
117010
|
+
"p",
|
|
117011
|
+
null,
|
|
117012
|
+
"Learn the core ",
|
|
117013
|
+
highlightTextWithLinks("value averaging", [
|
|
117014
|
+
{
|
|
117015
|
+
highlight: "value averaging",
|
|
117016
|
+
link: "https://www.investopedia.com/terms/v/value_averaging.asp"
|
|
117017
|
+
}
|
|
117018
|
+
]),
|
|
117019
|
+
" concept."
|
|
117020
|
+
)
|
|
117021
|
+
);
|
|
116944
117022
|
const vaultTypeDescription2 = `Troves Value Averaging (TVA) vault to accumulate ${secondary} from ${main} using level-based buying until ${input.expiryDate}.`;
|
|
116945
117023
|
const faqs3 = [
|
|
116946
117024
|
{
|
|
@@ -116969,7 +117047,7 @@ Learn the core value averaging concept.`;
|
|
|
116969
117047
|
},
|
|
116970
117048
|
{
|
|
116971
117049
|
question: "What are the fees in this vault?",
|
|
116972
|
-
answer: "This Vault has two fees: Swap fee (similar to management fee) and Performance fee. Swap fee covers execution and routing costs each epoch. Performance fee applies only when exits are in profit. If TVL scales, fee reduction or removal is on the table."
|
|
117050
|
+
answer: "This Vault has two fees: Swap fee (0.5%) (similar to management fee) and Performance fee (10%). Swap fee covers execution and routing costs each epoch. Performance fee applies only when exits are in profit. If TVL scales, fee reduction or removal is on the table."
|
|
116973
117051
|
}
|
|
116974
117052
|
];
|
|
116975
117053
|
const investmentSteps2 = [
|
|
@@ -117019,6 +117097,7 @@ Learn the core value averaging concept.`;
|
|
|
117019
117097
|
type: "Troves Value Averaging" /* TVA */,
|
|
117020
117098
|
description: yoloCopy.vaultTypeDescription
|
|
117021
117099
|
},
|
|
117100
|
+
curator: UnwrapLabsCurator,
|
|
117022
117101
|
security: {
|
|
117023
117102
|
auditStatus: "Not Audited" /* NOT_AUDITED */,
|
|
117024
117103
|
sourceCode: {
|
|
@@ -117066,13 +117145,14 @@ Learn the core value averaging concept.`;
|
|
|
117066
117145
|
settings: {
|
|
117067
117146
|
liveStatus: "Hot & New \u{1F525}" /* HOT */,
|
|
117068
117147
|
isAudited: false,
|
|
117069
|
-
quoteToken: btcYoloConfig.mainToken
|
|
117148
|
+
quoteToken: btcYoloConfig.mainToken,
|
|
117149
|
+
isTransactionHistDisabled: true,
|
|
117150
|
+
maxTVL: new Web3Number("200000", 6)
|
|
117070
117151
|
},
|
|
117071
117152
|
apyHistoryUIConfig: {
|
|
117072
117153
|
showApyHistory: false,
|
|
117073
117154
|
noApyHistoryMessage: "APY history is hidden because this is a TVA accumulation vault, not a yield-bearing APY strategy."
|
|
117074
|
-
}
|
|
117075
|
-
isPreview: true
|
|
117155
|
+
}
|
|
117076
117156
|
}
|
|
117077
117157
|
];
|
|
117078
117158
|
|
|
@@ -120506,10 +120586,7 @@ Learn the core value averaging concept.`;
|
|
|
120506
120586
|
auditUrl: AUDIT_URL3,
|
|
120507
120587
|
protocols: [Protocols.VESU],
|
|
120508
120588
|
realizedApyMethodology: "The realizedAPY is based on past 14 days performance by the vault",
|
|
120509
|
-
curator:
|
|
120510
|
-
name: "Unwrap Labs",
|
|
120511
|
-
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
120512
|
-
},
|
|
120589
|
+
curator: UnwrapLabsCurator,
|
|
120513
120590
|
settings: createUniversalSettings(params.tokenSymbol, params.maxTVLDecimals),
|
|
120514
120591
|
contractDetails: getContractDetails(params.vaultSettings),
|
|
120515
120592
|
faqs: getFAQs(),
|
|
@@ -122175,10 +122252,7 @@ Learn the core value averaging concept.`;
|
|
|
122175
122252
|
},
|
|
122176
122253
|
auditUrl: AUDIT_URL4,
|
|
122177
122254
|
protocols: [Protocols.ENDUR, Protocols.VESU],
|
|
122178
|
-
curator:
|
|
122179
|
-
name: "Unwrap Labs",
|
|
122180
|
-
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
122181
|
-
},
|
|
122255
|
+
curator: UnwrapLabsCurator,
|
|
122182
122256
|
settings: createHyperLSTSettings(lstSymbol, underlyingSymbol),
|
|
122183
122257
|
contractDetails: getContractDetails(settings2),
|
|
122184
122258
|
faqs: getFAQs2(lstSymbol, underlyingSymbol),
|
package/dist/index.browser.mjs
CHANGED
|
@@ -3282,6 +3282,10 @@ var Protocols = {
|
|
|
3282
3282
|
ENDUR: EndurProtocol,
|
|
3283
3283
|
EXTENDED: ExtendedProtocol
|
|
3284
3284
|
};
|
|
3285
|
+
var UnwrapLabsCurator = {
|
|
3286
|
+
name: "Unwrap Labs",
|
|
3287
|
+
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
3288
|
+
};
|
|
3285
3289
|
|
|
3286
3290
|
// src/interfaces/initializable.ts
|
|
3287
3291
|
var Initializable = class {
|
|
@@ -11267,10 +11271,7 @@ var createVesuRebalanceStrategy = (idSymbol, name, tokenSymbol, address) => ({
|
|
|
11267
11271
|
],
|
|
11268
11272
|
protocols: [_protocol],
|
|
11269
11273
|
auditUrl: AUDIT_URL,
|
|
11270
|
-
curator:
|
|
11271
|
-
name: "Unwrap Labs",
|
|
11272
|
-
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
11273
|
-
},
|
|
11274
|
+
curator: UnwrapLabsCurator,
|
|
11274
11275
|
settings: createVesuRebalanceSettings(tokenSymbol),
|
|
11275
11276
|
risk: getVesuRebalanceRisk(),
|
|
11276
11277
|
additionalInfo: {
|
|
@@ -17993,10 +17994,7 @@ var xSTRKSTRK = {
|
|
|
17993
17994
|
],
|
|
17994
17995
|
protocols: [_protocol2],
|
|
17995
17996
|
auditUrl: AUDIT_URL2,
|
|
17996
|
-
curator:
|
|
17997
|
-
name: "Unwrap Labs",
|
|
17998
|
-
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
17999
|
-
},
|
|
17997
|
+
curator: UnwrapLabsCurator,
|
|
18000
17998
|
risk: {
|
|
18001
17999
|
riskFactor: _lstPoolRiskFactors,
|
|
18002
18000
|
netRisk: _lstPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _lstPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
@@ -28533,10 +28531,7 @@ var SenseiStrategies = [
|
|
|
28533
28531
|
),
|
|
28534
28532
|
launchBlock: 1053811,
|
|
28535
28533
|
type: "Other",
|
|
28536
|
-
curator:
|
|
28537
|
-
name: "Unwrap Labs",
|
|
28538
|
-
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
28539
|
-
},
|
|
28534
|
+
curator: UnwrapLabsCurator,
|
|
28540
28535
|
vaultType: {
|
|
28541
28536
|
type: "Looping" /* LOOPING */,
|
|
28542
28537
|
description: "Creates leveraged looping position on xSTRK by borrowing STRK to increase yield"
|
|
@@ -29432,6 +29427,7 @@ var yoloVault_abi_default = [
|
|
|
29432
29427
|
];
|
|
29433
29428
|
|
|
29434
29429
|
// src/strategies/yoloVault.ts
|
|
29430
|
+
import { createElement } from "react";
|
|
29435
29431
|
var YoLoVault = class extends BaseStrategy {
|
|
29436
29432
|
constructor(config, pricer, metadata) {
|
|
29437
29433
|
super(config, {
|
|
@@ -29541,6 +29537,32 @@ var YoLoVault = class extends BaseStrategy {
|
|
|
29541
29537
|
};
|
|
29542
29538
|
}
|
|
29543
29539
|
}
|
|
29540
|
+
async getVaultPositions() {
|
|
29541
|
+
const vaultStatus = await this.getVaultStatus();
|
|
29542
|
+
const {
|
|
29543
|
+
remaining_base: remainingBase,
|
|
29544
|
+
total_second_tokens: totalSecondTokens
|
|
29545
|
+
} = vaultStatus;
|
|
29546
|
+
const primaryTokenAmount = Web3Number.fromWei(remainingBase.toString(), this.primaryToken.decimals);
|
|
29547
|
+
const secondaryTokenAmount = Web3Number.fromWei(totalSecondTokens.toString(), this.secondaryToken.decimals);
|
|
29548
|
+
const [primaryTokenPrice, secondaryTokenPrice] = await Promise.all([
|
|
29549
|
+
this.pricer.getPrice(this.primaryToken.symbol),
|
|
29550
|
+
this.pricer.getPrice(this.secondaryToken.symbol)
|
|
29551
|
+
]);
|
|
29552
|
+
const primaryTokenUsd = primaryTokenAmount.multipliedBy(primaryTokenPrice.price);
|
|
29553
|
+
const secondaryTokenUsd = secondaryTokenAmount.multipliedBy(secondaryTokenPrice.price);
|
|
29554
|
+
return [{
|
|
29555
|
+
amount: primaryTokenAmount,
|
|
29556
|
+
usdValue: primaryTokenUsd.toNumber(),
|
|
29557
|
+
token: this.primaryToken,
|
|
29558
|
+
remarks: "Remaining deposit tokens in the Vault"
|
|
29559
|
+
}, {
|
|
29560
|
+
amount: secondaryTokenAmount,
|
|
29561
|
+
usdValue: secondaryTokenUsd.toNumber(),
|
|
29562
|
+
token: this.secondaryToken,
|
|
29563
|
+
remarks: "Total swapped tokens in the Vault"
|
|
29564
|
+
}];
|
|
29565
|
+
}
|
|
29544
29566
|
async getTVL() {
|
|
29545
29567
|
try {
|
|
29546
29568
|
const [vaultStatus, primaryTokenPrice, secondaryTokenPrice] = await Promise.all([
|
|
@@ -29705,35 +29727,90 @@ var getLevelRangeLabel = (level, secondaryTokenSymbol) => {
|
|
|
29705
29727
|
}
|
|
29706
29728
|
return `< ${formatPriceLabel(level.maxPrice)} ${secondaryTokenSymbol}`;
|
|
29707
29729
|
};
|
|
29708
|
-
var
|
|
29709
|
-
|
|
29710
|
-
|
|
29711
|
-
|
|
29712
|
-
|
|
29713
|
-
|
|
29714
|
-
|
|
29715
|
-
|
|
29730
|
+
var getSpendingLevelRows = (levels, secondaryTokenSymbol) => {
|
|
29731
|
+
const positiveSpends = levels.map((l) => l.spendPercent).filter((v) => v > 0);
|
|
29732
|
+
const minSpendPercent = positiveSpends.length > 0 ? Math.min(...positiveSpends) : 1;
|
|
29733
|
+
return levels.map((level) => {
|
|
29734
|
+
const multiplier = level.spendPercent > 0 ? level.spendPercent / minSpendPercent : 0;
|
|
29735
|
+
return {
|
|
29736
|
+
range: getLevelRangeLabel(level, secondaryTokenSymbol),
|
|
29737
|
+
multiplier: `${multiplier.toFixed(2)}x`
|
|
29738
|
+
};
|
|
29739
|
+
});
|
|
29716
29740
|
};
|
|
29717
29741
|
var getYoloVaultCopy = (input) => {
|
|
29718
29742
|
const main = input.mainToken.symbol;
|
|
29719
29743
|
const secondary = input.secondaryToken.symbol;
|
|
29720
|
-
const
|
|
29721
|
-
|
|
29722
|
-
|
|
29723
|
-
|
|
29724
|
-
Start Date: ${input.startDate}
|
|
29725
|
-
Expiry Date: ${input.expiryDate}
|
|
29726
|
-
Execution Window: ${input.totalEpochs} epochs, minimum ${formatDurationSeconds(input.minEpochDurationSeconds)} per epoch
|
|
29727
|
-
TVA Edge vs DCA: deploys more aggressively into dips and stays measured when prices are high.
|
|
29728
|
-
Spend Levels: ${getSpendingLevelSummary(input.spendingLevels, secondary)}
|
|
29729
|
-
|
|
29730
|
-
Learn the core value averaging concept.`;
|
|
29731
|
-
const description = highlightTextWithLinks(descriptionText, [
|
|
29744
|
+
const spendingRows = getSpendingLevelRows(input.spendingLevels, secondary);
|
|
29745
|
+
const description = createElement(
|
|
29746
|
+
"div",
|
|
29732
29747
|
{
|
|
29733
|
-
|
|
29734
|
-
|
|
29735
|
-
|
|
29736
|
-
|
|
29748
|
+
style: {
|
|
29749
|
+
display: "flex",
|
|
29750
|
+
flexDirection: "column",
|
|
29751
|
+
gap: "12px"
|
|
29752
|
+
}
|
|
29753
|
+
},
|
|
29754
|
+
createElement(
|
|
29755
|
+
"p",
|
|
29756
|
+
null,
|
|
29757
|
+
`Troves Value Averaging (TVA) vault for ${main} -> ${secondary} accumulation.`
|
|
29758
|
+
),
|
|
29759
|
+
createElement(
|
|
29760
|
+
"p",
|
|
29761
|
+
null,
|
|
29762
|
+
`We're all bullish on ${secondary}. Price only dips to hit new ATHs in the next cycle. This vault helps you prep - degen style. After all, YOLO.`
|
|
29763
|
+
),
|
|
29764
|
+
createElement("p", null, createElement("strong", null, "Start Date: "), input.startDate),
|
|
29765
|
+
createElement("p", null, createElement("strong", null, "Expiry Date: "), input.expiryDate),
|
|
29766
|
+
createElement(
|
|
29767
|
+
"p",
|
|
29768
|
+
null,
|
|
29769
|
+
createElement("strong", null, "Execution Window: "),
|
|
29770
|
+
`${input.totalEpochs} epochs, minimum ${formatDurationSeconds(input.minEpochDurationSeconds)} per epoch`
|
|
29771
|
+
),
|
|
29772
|
+
createElement(
|
|
29773
|
+
"p",
|
|
29774
|
+
null,
|
|
29775
|
+
createElement("strong", null, "TVA Edge vs DCA: "),
|
|
29776
|
+
"deploys more aggressively into dips and stays measured when prices are high."
|
|
29777
|
+
),
|
|
29778
|
+
createElement("div", null, createElement("strong", null, "Spend Levels: ")),
|
|
29779
|
+
createElement(
|
|
29780
|
+
"div",
|
|
29781
|
+
{
|
|
29782
|
+
style: {
|
|
29783
|
+
display: "grid",
|
|
29784
|
+
gridTemplateColumns: "2fr 1fr",
|
|
29785
|
+
gap: "4px 12px",
|
|
29786
|
+
fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
|
|
29787
|
+
fontSize: "12px",
|
|
29788
|
+
lineHeight: "18px",
|
|
29789
|
+
padding: "8px 10px",
|
|
29790
|
+
borderRadius: "8px",
|
|
29791
|
+
background: "rgba(255,255,255,0.04)"
|
|
29792
|
+
}
|
|
29793
|
+
},
|
|
29794
|
+
createElement("strong", { key: "h-range" }, "Range"),
|
|
29795
|
+
createElement("strong", { key: "h-mult" }, "Multiplier"),
|
|
29796
|
+
...spendingRows.flatMap((row, idx) => [
|
|
29797
|
+
createElement("span", { key: `r-${idx}` }, row.range),
|
|
29798
|
+
createElement("span", { key: `m-${idx}` }, row.multiplier)
|
|
29799
|
+
])
|
|
29800
|
+
),
|
|
29801
|
+
createElement(
|
|
29802
|
+
"p",
|
|
29803
|
+
null,
|
|
29804
|
+
"Learn the core ",
|
|
29805
|
+
highlightTextWithLinks("value averaging", [
|
|
29806
|
+
{
|
|
29807
|
+
highlight: "value averaging",
|
|
29808
|
+
link: "https://www.investopedia.com/terms/v/value_averaging.asp"
|
|
29809
|
+
}
|
|
29810
|
+
]),
|
|
29811
|
+
" concept."
|
|
29812
|
+
)
|
|
29813
|
+
);
|
|
29737
29814
|
const vaultTypeDescription2 = `Troves Value Averaging (TVA) vault to accumulate ${secondary} from ${main} using level-based buying until ${input.expiryDate}.`;
|
|
29738
29815
|
const faqs3 = [
|
|
29739
29816
|
{
|
|
@@ -29762,7 +29839,7 @@ Learn the core value averaging concept.`;
|
|
|
29762
29839
|
},
|
|
29763
29840
|
{
|
|
29764
29841
|
question: "What are the fees in this vault?",
|
|
29765
|
-
answer: "This Vault has two fees: Swap fee (similar to management fee) and Performance fee. Swap fee covers execution and routing costs each epoch. Performance fee applies only when exits are in profit. If TVL scales, fee reduction or removal is on the table."
|
|
29842
|
+
answer: "This Vault has two fees: Swap fee (0.5%) (similar to management fee) and Performance fee (10%). Swap fee covers execution and routing costs each epoch. Performance fee applies only when exits are in profit. If TVL scales, fee reduction or removal is on the table."
|
|
29766
29843
|
}
|
|
29767
29844
|
];
|
|
29768
29845
|
const investmentSteps2 = [
|
|
@@ -29812,6 +29889,7 @@ var YoloVaultStrategies = [
|
|
|
29812
29889
|
type: "Troves Value Averaging" /* TVA */,
|
|
29813
29890
|
description: yoloCopy.vaultTypeDescription
|
|
29814
29891
|
},
|
|
29892
|
+
curator: UnwrapLabsCurator,
|
|
29815
29893
|
security: {
|
|
29816
29894
|
auditStatus: "Not Audited" /* NOT_AUDITED */,
|
|
29817
29895
|
sourceCode: {
|
|
@@ -29859,13 +29937,14 @@ var YoloVaultStrategies = [
|
|
|
29859
29937
|
settings: {
|
|
29860
29938
|
liveStatus: "Hot & New \u{1F525}" /* HOT */,
|
|
29861
29939
|
isAudited: false,
|
|
29862
|
-
quoteToken: btcYoloConfig.mainToken
|
|
29940
|
+
quoteToken: btcYoloConfig.mainToken,
|
|
29941
|
+
isTransactionHistDisabled: true,
|
|
29942
|
+
maxTVL: new Web3Number("200000", 6)
|
|
29863
29943
|
},
|
|
29864
29944
|
apyHistoryUIConfig: {
|
|
29865
29945
|
showApyHistory: false,
|
|
29866
29946
|
noApyHistoryMessage: "APY history is hidden because this is a TVA accumulation vault, not a yield-bearing APY strategy."
|
|
29867
|
-
}
|
|
29868
|
-
isPreview: true
|
|
29947
|
+
}
|
|
29869
29948
|
}
|
|
29870
29949
|
];
|
|
29871
29950
|
|
|
@@ -33303,10 +33382,7 @@ var createUniversalStrategy = (params) => {
|
|
|
33303
33382
|
auditUrl: AUDIT_URL3,
|
|
33304
33383
|
protocols: [Protocols.VESU],
|
|
33305
33384
|
realizedApyMethodology: "The realizedAPY is based on past 14 days performance by the vault",
|
|
33306
|
-
curator:
|
|
33307
|
-
name: "Unwrap Labs",
|
|
33308
|
-
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
33309
|
-
},
|
|
33385
|
+
curator: UnwrapLabsCurator,
|
|
33310
33386
|
settings: createUniversalSettings(params.tokenSymbol, params.maxTVLDecimals),
|
|
33311
33387
|
contractDetails: getContractDetails(params.vaultSettings),
|
|
33312
33388
|
faqs: getFAQs(),
|
|
@@ -34975,10 +35051,7 @@ function getStrategySettings(lstSymbol, underlyingSymbol, settings, isPreview =
|
|
|
34975
35051
|
},
|
|
34976
35052
|
auditUrl: AUDIT_URL4,
|
|
34977
35053
|
protocols: [Protocols.ENDUR, Protocols.VESU],
|
|
34978
|
-
curator:
|
|
34979
|
-
name: "Unwrap Labs",
|
|
34980
|
-
logo: "https://assets.troves.fi/integrations/unwraplabs/white.png"
|
|
34981
|
-
},
|
|
35054
|
+
curator: UnwrapLabsCurator,
|
|
34982
35055
|
settings: createHyperLSTSettings(lstSymbol, underlyingSymbol),
|
|
34983
35056
|
contractDetails: getContractDetails(settings),
|
|
34984
35057
|
faqs: getFAQs2(lstSymbol, underlyingSymbol),
|
|
@@ -35295,6 +35368,7 @@ export {
|
|
|
35295
35368
|
UniversalLstMultiplierStrategy,
|
|
35296
35369
|
UniversalStrategies,
|
|
35297
35370
|
UniversalStrategy,
|
|
35371
|
+
UnwrapLabsCurator,
|
|
35298
35372
|
VESU_SINGLETON,
|
|
35299
35373
|
VESU_V2_MODIFY_POSITION_SANITIZER,
|
|
35300
35374
|
VaultType,
|
package/dist/index.d.ts
CHANGED
|
@@ -125,6 +125,10 @@ interface IProtocol {
|
|
|
125
125
|
name: string;
|
|
126
126
|
logo: string;
|
|
127
127
|
}
|
|
128
|
+
interface ICurator {
|
|
129
|
+
name: string;
|
|
130
|
+
logo: string;
|
|
131
|
+
}
|
|
128
132
|
declare enum StrategyTag {
|
|
129
133
|
META_VAULT = "Meta Vaults",
|
|
130
134
|
LEVERED = "Maxx",
|
|
@@ -260,10 +264,7 @@ interface IStrategyMetadata<T> {
|
|
|
260
264
|
}[];
|
|
261
265
|
docs?: string;
|
|
262
266
|
investmentSteps: string[];
|
|
263
|
-
curator?:
|
|
264
|
-
name: string;
|
|
265
|
-
logo: string;
|
|
266
|
-
};
|
|
267
|
+
curator?: ICurator;
|
|
267
268
|
isPreview?: boolean;
|
|
268
269
|
tags?: StrategyTag[];
|
|
269
270
|
security: SecurityMetadata;
|
|
@@ -350,6 +351,7 @@ declare const Protocols: {
|
|
|
350
351
|
ENDUR: IProtocol;
|
|
351
352
|
EXTENDED: IProtocol;
|
|
352
353
|
};
|
|
354
|
+
declare const UnwrapLabsCurator: ICurator;
|
|
353
355
|
|
|
354
356
|
interface ILendingMetadata {
|
|
355
357
|
name: string;
|
|
@@ -1241,6 +1243,7 @@ declare class YoLoVault extends BaseStrategy<DualTokenInfo, SingleActionAmount,
|
|
|
1241
1243
|
private getNormalizedUserInfo;
|
|
1242
1244
|
private resolveWithdrawRequest;
|
|
1243
1245
|
getUserTVL(user: ContractAddr): Promise<DualTokenInfo>;
|
|
1246
|
+
getVaultPositions(): Promise<VaultPosition[]>;
|
|
1244
1247
|
getTVL(): Promise<DualTokenInfo>;
|
|
1245
1248
|
depositCall(amountInfo: SingleActionAmount, receiver: ContractAddr): Promise<Call[]>;
|
|
1246
1249
|
getVaultStatus(): Promise<YoloVaultStatus>;
|
|
@@ -2303,4 +2306,4 @@ declare class PasswordJsonCryptoUtil {
|
|
|
2303
2306
|
decrypt(encryptedData: string, password: string): any;
|
|
2304
2307
|
}
|
|
2305
2308
|
|
|
2306
|
-
export { APYType, AUMTypes, AVNU_EXCHANGE, AVNU_MIDDLEWARE, type AccessControlInfo, AccessControlType, type AccountInfo, type AdapterLeafType, type AllAccountsStore, type AmountInfo, type AmountsInfo, type ApproveCallParams, AuditStatus, AutoCompounderSTRK, type AvnuSwapCallParams, AvnuWrapper, BaseAdapter, type BaseAdapterConfig, BaseStrategy, type CLVaultStrategySettings, CommonAdapter, type CommonAdapterConfig, ContractAddr, type DecreaseLeverParams, Deployer, type DualActionAmount, type DualTokenInfo, ERC20, type EkuboBounds, EkuboCLVault, EkuboCLVaultStrategies, type EkuboPoolKey, type EkuboQuote, EkuboQuoter, type EkuboRouteNode, type EkuboSplit, type FAQ, FactoryStrategyType, FatalError, type FilterOption, type FlashloanCallParams, FlowChartColors, type GenerateCallFn, Global, HyperLSTStrategies, type HyperLSTStrategySettings, type IConfig, 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 ManageCall, MarginType, MyNumber, type NetAPYDetails, type NetAPYSplit, Network, PRICE_ROUTER, PasswordJsonCryptoUtil, type PositionAPY, type PositionInfo, Pragma, type PriceInfo, Pricer, 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, type SecurityMetadata, SenseiStrategies, SenseiVault, type SenseiVaultSettings, type SingleActionAmount, type SingleTokenInfo, type SourceCodeInfo, SourceCodeType, StandardMerkleTree, type StandardMerkleTreeData, Store, type StoreConfig, type StrategyAlert, type StrategyApyHistoryUIConfig, type StrategyCapabilities, type StrategyFilterMetadata, type StrategyInputMode, StrategyLiveStatus, type StrategyMetadata, type StrategyRegistryEntry, type StrategySettings, StrategyTag, StrategyType, type SupportedPosition, type Swap, type SwapInfo, TelegramGroupNotif, TelegramNotif, type TokenAmount, type TokenInfo, UNIVERSAL_ADAPTERS, UNIVERSAL_MANAGE_IDS, UniversalLstMultiplierStrategy, type UniversalManageCall, UniversalStrategies, UniversalStrategy, type UniversalStrategySettings, type UserYoloInfo, VESU_SINGLETON, VESU_V2_MODIFY_POSITION_SANITIZER, type VaultPosition, VaultType, VesuAdapter, type VesuAdapterConfig, type VesuAmount, VesuAmountDenomination, VesuAmountType, type VesuDefiSpringRewardsCallParams, type VesuModifyDelegationCallParams, type VesuModifyPositionCallParams, type VesuMultiplyCallParams, VesuPoolMetadata, VesuPools, VesuRebalance, type VesuRebalanceSettings, VesuRebalanceStrategies, Web3Number, YoLoVault, type YoloSettings, type YoloSpendingLevel, type YoloVaultSettings, type YoloVaultStatus, YoloVaultStrategies, ZkLend, assert, buildStrategyRegistry, createEkuboCLStrategy, createHyperLSTStrategy, createSenseiStrategy, createStrategy, createUniversalStrategy, createVesuRebalanceStrategy, createYoloVaultStrategy, detectCapabilities, extensionMap, getAPIUsingHeadlessBrowser, getAllStrategyMetadata, getAllStrategyTags, getContractDetails, getDefaultStoreConfig, getFilterMetadata, getLiveStrategies, getMainnetConfig, getNoRiskTags, getRiskColor, getRiskExplaination, getStrategiesByType, getStrategyTagDesciption, getStrategyTypeFromMetadata, getTrovesEndpoint, getVesuSingletonAddress, highlightTextWithLinks, type i257, isDualTokenStrategy, logger, toAmountsInfo, toBigInt };
|
|
2309
|
+
export { APYType, AUMTypes, AVNU_EXCHANGE, AVNU_MIDDLEWARE, type AccessControlInfo, AccessControlType, type AccountInfo, type AdapterLeafType, type AllAccountsStore, type AmountInfo, type AmountsInfo, type ApproveCallParams, AuditStatus, AutoCompounderSTRK, type AvnuSwapCallParams, AvnuWrapper, BaseAdapter, type BaseAdapterConfig, BaseStrategy, type CLVaultStrategySettings, CommonAdapter, type CommonAdapterConfig, ContractAddr, type DecreaseLeverParams, Deployer, type DualActionAmount, type DualTokenInfo, ERC20, type EkuboBounds, EkuboCLVault, EkuboCLVaultStrategies, type EkuboPoolKey, type EkuboQuote, EkuboQuoter, type EkuboRouteNode, type EkuboSplit, type FAQ, FactoryStrategyType, FatalError, type FilterOption, type FlashloanCallParams, FlowChartColors, type GenerateCallFn, Global, 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 ManageCall, MarginType, MyNumber, type NetAPYDetails, type NetAPYSplit, Network, PRICE_ROUTER, PasswordJsonCryptoUtil, type PositionAPY, type PositionInfo, Pragma, type PriceInfo, Pricer, 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, type SecurityMetadata, SenseiStrategies, SenseiVault, type SenseiVaultSettings, type SingleActionAmount, type SingleTokenInfo, type SourceCodeInfo, SourceCodeType, StandardMerkleTree, type StandardMerkleTreeData, Store, type StoreConfig, type StrategyAlert, type StrategyApyHistoryUIConfig, type StrategyCapabilities, type StrategyFilterMetadata, type StrategyInputMode, StrategyLiveStatus, type StrategyMetadata, type StrategyRegistryEntry, type StrategySettings, StrategyTag, StrategyType, type SupportedPosition, type Swap, type SwapInfo, TelegramGroupNotif, TelegramNotif, type TokenAmount, type TokenInfo, UNIVERSAL_ADAPTERS, UNIVERSAL_MANAGE_IDS, UniversalLstMultiplierStrategy, type UniversalManageCall, UniversalStrategies, UniversalStrategy, type UniversalStrategySettings, UnwrapLabsCurator, type UserYoloInfo, VESU_SINGLETON, VESU_V2_MODIFY_POSITION_SANITIZER, type VaultPosition, VaultType, VesuAdapter, type VesuAdapterConfig, type VesuAmount, VesuAmountDenomination, VesuAmountType, type VesuDefiSpringRewardsCallParams, type VesuModifyDelegationCallParams, type VesuModifyPositionCallParams, type VesuMultiplyCallParams, VesuPoolMetadata, VesuPools, VesuRebalance, type VesuRebalanceSettings, VesuRebalanceStrategies, Web3Number, YoLoVault, type YoloSettings, type YoloSpendingLevel, type YoloVaultSettings, type YoloVaultStatus, YoloVaultStrategies, ZkLend, assert, buildStrategyRegistry, createEkuboCLStrategy, createHyperLSTStrategy, createSenseiStrategy, createStrategy, createUniversalStrategy, createVesuRebalanceStrategy, createYoloVaultStrategy, detectCapabilities, extensionMap, getAPIUsingHeadlessBrowser, getAllStrategyMetadata, getAllStrategyTags, getContractDetails, getDefaultStoreConfig, getFilterMetadata, getLiveStrategies, getMainnetConfig, getNoRiskTags, getRiskColor, getRiskExplaination, getStrategiesByType, getStrategyTagDesciption, getStrategyTypeFromMetadata, getTrovesEndpoint, getVesuSingletonAddress, highlightTextWithLinks, type i257, isDualTokenStrategy, logger, toAmountsInfo, toBigInt };
|