@strkfarm/sdk 1.0.63 → 1.0.64
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 +203 -64
- package/dist/index.browser.mjs +203 -64
- package/dist/index.d.ts +6 -1
- package/dist/index.js +206 -69
- package/dist/index.mjs +206 -69
- package/package.json +1 -1
- package/src/global.ts +19 -1
- package/src/interfaces/common.tsx +1 -0
- package/src/interfaces/risks.ts +175 -0
- package/src/notifs/telegram.ts +3 -3
- package/src/strategies/ekubo-cl-vault.tsx +201 -71
package/dist/index.mjs
CHANGED
|
@@ -213,7 +213,7 @@ var defaultTokens = [{
|
|
|
213
213
|
name: "WBTC",
|
|
214
214
|
symbol: "WBTC",
|
|
215
215
|
logo: "https://assets.troves.fi/integrations/tokens/wbtc.svg",
|
|
216
|
-
address: ContractAddr.from("
|
|
216
|
+
address: ContractAddr.from("0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac"),
|
|
217
217
|
decimals: 8,
|
|
218
218
|
coingeckId: void 0,
|
|
219
219
|
displayDecimals: 6,
|
|
@@ -229,6 +229,26 @@ var defaultTokens = [{
|
|
|
229
229
|
displayDecimals: 6,
|
|
230
230
|
priceCheckAmount: 1e-4
|
|
231
231
|
// 112000 * 0.0001 = $11.2
|
|
232
|
+
}, {
|
|
233
|
+
name: "solvBTC",
|
|
234
|
+
symbol: "solvBTC",
|
|
235
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/solvbtc.svg",
|
|
236
|
+
address: ContractAddr.from("0x0593e034dda23eea82d2ba9a30960ed42cf4a01502cc2351dc9b9881f9931a68"),
|
|
237
|
+
decimals: 18,
|
|
238
|
+
coingeckId: void 0,
|
|
239
|
+
displayDecimals: 6,
|
|
240
|
+
priceCheckAmount: 1e-4
|
|
241
|
+
// 112000 * 0.0001 = $11.2
|
|
242
|
+
}, {
|
|
243
|
+
name: "LBTC",
|
|
244
|
+
symbol: "LBTC",
|
|
245
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/lbtc.svg",
|
|
246
|
+
address: ContractAddr.from("0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4"),
|
|
247
|
+
decimals: 8,
|
|
248
|
+
coingeckId: void 0,
|
|
249
|
+
displayDecimals: 6,
|
|
250
|
+
priceCheckAmount: 1e-4
|
|
251
|
+
// 112000 * 0.0001 = $11.2
|
|
232
252
|
}];
|
|
233
253
|
var tokens = defaultTokens;
|
|
234
254
|
var _Global = class _Global {
|
|
@@ -16260,14 +16280,31 @@ var _protocol2 = {
|
|
|
16260
16280
|
name: "Ekubo",
|
|
16261
16281
|
logo: "https://app.ekubo.org/favicon.ico"
|
|
16262
16282
|
};
|
|
16263
|
-
var
|
|
16264
|
-
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value:
|
|
16265
|
-
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value:
|
|
16266
|
-
{ type: "Market Risk" /* MARKET_RISK */, value:
|
|
16283
|
+
var _corelatedPoolRiskFactors = [
|
|
16284
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 34, reason: "Audited smart contracts" },
|
|
16285
|
+
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 1 /* HIGHLY_CORRELATED */, weight: 33, reason: "Low risk due to co-related assets" },
|
|
16286
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 1 /* VERY_LOW_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
16287
|
+
];
|
|
16288
|
+
var mediumVolatilityPoolRiskFactors = [
|
|
16289
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 34, reason: "Audited smart contracts" },
|
|
16290
|
+
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 3 /* NON_CORRELATED */, weight: 33, reason: "Low risk due to co-related assets" },
|
|
16291
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 3 /* MODERATE_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
16267
16292
|
];
|
|
16268
|
-
var
|
|
16269
|
-
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value:
|
|
16293
|
+
var highVolatilityPoolRiskFactors = [
|
|
16294
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 34, reason: "Audited smart contracts" },
|
|
16295
|
+
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 3 /* NON_CORRELATED */, weight: 33, reason: "Low risk due to co-related assets" },
|
|
16296
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 4 /* HIGH_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
16270
16297
|
];
|
|
16298
|
+
var mediumRisk = {
|
|
16299
|
+
riskFactor: mediumVolatilityPoolRiskFactors,
|
|
16300
|
+
netRisk: mediumVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / mediumVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16301
|
+
notARisks: getNoRiskTags(mediumVolatilityPoolRiskFactors)
|
|
16302
|
+
};
|
|
16303
|
+
var highRisk = {
|
|
16304
|
+
riskFactor: highVolatilityPoolRiskFactors,
|
|
16305
|
+
netRisk: highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16306
|
+
notARisks: getNoRiskTags(highVolatilityPoolRiskFactors)
|
|
16307
|
+
};
|
|
16271
16308
|
var AUDIT_URL2 = "https://assets.troves.fi/strkfarm/audit_report_vesu_and_ekubo_strats.pdf";
|
|
16272
16309
|
var faqs2 = [
|
|
16273
16310
|
{
|
|
@@ -16282,6 +16319,10 @@ var faqs2 = [
|
|
|
16282
16319
|
question: "What happens during withdrawal?",
|
|
16283
16320
|
answer: "During withdrawal, you may receive either or both tokens depending on market conditions and prevailing prices."
|
|
16284
16321
|
},
|
|
16322
|
+
{
|
|
16323
|
+
question: "Are there any deposit/withdrawal fees?",
|
|
16324
|
+
answer: "No, there are no deposit/withdrawal fees. However, there is a performance fee varying between 10-20% of the fees and rewards generated. The exact fee is determined by the strategy and the APY shown is net of this fee."
|
|
16325
|
+
},
|
|
16285
16326
|
{
|
|
16286
16327
|
question: "Is the strategy audited?",
|
|
16287
16328
|
answer: /* @__PURE__ */ jsxs2("div", { children: [
|
|
@@ -16316,9 +16357,9 @@ var xSTRKSTRK = {
|
|
|
16316
16357
|
auditUrl: AUDIT_URL2,
|
|
16317
16358
|
maxTVL: Web3Number.fromWei("0", 18),
|
|
16318
16359
|
risk: {
|
|
16319
|
-
riskFactor:
|
|
16320
|
-
netRisk:
|
|
16321
|
-
notARisks: getNoRiskTags(
|
|
16360
|
+
riskFactor: _corelatedPoolRiskFactors,
|
|
16361
|
+
netRisk: _corelatedPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _corelatedPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16362
|
+
notARisks: getNoRiskTags(_corelatedPoolRiskFactors)
|
|
16322
16363
|
},
|
|
16323
16364
|
apyMethodology: "APY based on 7-day historical performance, including fees and rewards.",
|
|
16324
16365
|
additionalInfo: {
|
|
@@ -16334,7 +16375,8 @@ var xSTRKSTRK = {
|
|
|
16334
16375
|
customShouldRebalance: async (currentPrice) => true,
|
|
16335
16376
|
minWaitHours: 24,
|
|
16336
16377
|
direction: "uponly"
|
|
16337
|
-
}
|
|
16378
|
+
},
|
|
16379
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "STRK")
|
|
16338
16380
|
},
|
|
16339
16381
|
faqs: [
|
|
16340
16382
|
...faqs2,
|
|
@@ -16351,68 +16393,165 @@ var xSTRKSTRK = {
|
|
|
16351
16393
|
contractDetails: [],
|
|
16352
16394
|
investmentSteps: []
|
|
16353
16395
|
};
|
|
16354
|
-
var
|
|
16355
|
-
xSTRKSTRK,
|
|
16396
|
+
var ETHUSDCRe7Strategy = {
|
|
16397
|
+
...xSTRKSTRK,
|
|
16398
|
+
name: "Ekubo ETH/USDC",
|
|
16399
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16400
|
+
address: ContractAddr.from(
|
|
16401
|
+
"0x160d8fa4569ef6a12e6bf47cb943d7b5ebba8a41a69a14c1d943050ba5ff947"
|
|
16402
|
+
),
|
|
16403
|
+
launchBlock: 1501761,
|
|
16404
|
+
// must be same order as poolKey token0 and token1
|
|
16405
|
+
depositTokens: [
|
|
16406
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH"),
|
|
16407
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16408
|
+
],
|
|
16409
|
+
additionalInfo: {
|
|
16410
|
+
newBounds: "Managed by Re7",
|
|
16411
|
+
truePrice: 1,
|
|
16412
|
+
feeBps: 1e3,
|
|
16413
|
+
rebalanceConditions: {
|
|
16414
|
+
customShouldRebalance: async (currentPrice) => currentPrice > 0.99 && currentPrice < 1.01,
|
|
16415
|
+
minWaitHours: 6,
|
|
16416
|
+
direction: "any"
|
|
16417
|
+
},
|
|
16418
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16419
|
+
},
|
|
16420
|
+
faqs: [
|
|
16421
|
+
...faqs2,
|
|
16422
|
+
{
|
|
16423
|
+
question: "Who is the curator of this strategy?",
|
|
16424
|
+
answer: /* @__PURE__ */ jsxs2("div", { children: [
|
|
16425
|
+
"Re7 Labs is the curator of this strategy. Re7 Labs is a well-known Web3 asset management firm. This strategy is completely managed by them, including ownership of the vault. Troves is developer of the smart contracts and maintains infrastructure to help users access these strategies. You can find more information about them on their website ",
|
|
16426
|
+
/* @__PURE__ */ jsx3("a", { href: "https://www.re7labs.xyz", style: { textDecoration: "underline", marginLeft: "2px" }, target: "_blank", children: "here" }),
|
|
16427
|
+
"."
|
|
16428
|
+
] })
|
|
16429
|
+
}
|
|
16430
|
+
],
|
|
16431
|
+
risk: highRisk,
|
|
16432
|
+
points: [],
|
|
16433
|
+
curator: { name: "Re7 Labs", logo: "https://www.re7labs.xyz/favicon.ico" }
|
|
16434
|
+
};
|
|
16435
|
+
var RE7Strategies = [
|
|
16436
|
+
ETHUSDCRe7Strategy,
|
|
16356
16437
|
{
|
|
16357
|
-
...
|
|
16438
|
+
...ETHUSDCRe7Strategy,
|
|
16358
16439
|
name: "Ekubo USDC/USDT",
|
|
16359
16440
|
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16360
16441
|
address: ContractAddr.from(
|
|
16361
|
-
"
|
|
16442
|
+
"0x3a4f8debaf12af97bb911099bc011d63d6c208d4c5ba8e15d7f437785b0aaa2"
|
|
16362
16443
|
),
|
|
16363
|
-
launchBlock:
|
|
16444
|
+
launchBlock: 1501761,
|
|
16364
16445
|
// must be same order as poolKey token0 and token1
|
|
16365
16446
|
depositTokens: [
|
|
16366
16447
|
Global.getDefaultTokens().find((t) => t.symbol === "USDC"),
|
|
16367
16448
|
Global.getDefaultTokens().find((t) => t.symbol === "USDT")
|
|
16368
16449
|
],
|
|
16369
|
-
|
|
16370
|
-
newBounds: {
|
|
16371
|
-
lower: -1,
|
|
16372
|
-
upper: 1
|
|
16373
|
-
},
|
|
16374
|
-
truePrice: 1,
|
|
16375
|
-
feeBps: 1e3,
|
|
16376
|
-
rebalanceConditions: {
|
|
16377
|
-
customShouldRebalance: async (currentPrice) => currentPrice > 0.99 && currentPrice < 1.01,
|
|
16378
|
-
minWaitHours: 6,
|
|
16379
|
-
direction: "any"
|
|
16380
|
-
}
|
|
16381
|
-
}
|
|
16450
|
+
risk: xSTRKSTRK.risk
|
|
16382
16451
|
},
|
|
16383
16452
|
{
|
|
16384
|
-
...
|
|
16453
|
+
...ETHUSDCRe7Strategy,
|
|
16385
16454
|
name: "Ekubo STRK/USDC",
|
|
16386
16455
|
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16387
16456
|
address: ContractAddr.from(
|
|
16388
|
-
"
|
|
16457
|
+
"0x351b36d0d9d8b40010658825adeeddb1397436cd41acd0ff6c6e23aaa8b5b30"
|
|
16389
16458
|
),
|
|
16390
|
-
launchBlock:
|
|
16459
|
+
launchBlock: 1501762,
|
|
16391
16460
|
// must be same order as poolKey token0 and token1
|
|
16392
16461
|
depositTokens: [
|
|
16393
16462
|
Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
16394
16463
|
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16395
16464
|
],
|
|
16396
|
-
|
|
16397
|
-
|
|
16398
|
-
|
|
16399
|
-
|
|
16400
|
-
|
|
16401
|
-
|
|
16402
|
-
|
|
16403
|
-
|
|
16404
|
-
|
|
16405
|
-
|
|
16465
|
+
risk: highRisk
|
|
16466
|
+
},
|
|
16467
|
+
{
|
|
16468
|
+
...ETHUSDCRe7Strategy,
|
|
16469
|
+
name: "Ekubo STRK/ETH",
|
|
16470
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16471
|
+
address: ContractAddr.from(
|
|
16472
|
+
"0x4ce3024b0ee879009112d7b0e073f8a87153dd35b029347d4247ffe48d28f51"
|
|
16473
|
+
),
|
|
16474
|
+
launchBlock: 1501763,
|
|
16475
|
+
// must be same order as poolKey token0 and token1
|
|
16476
|
+
depositTokens: [
|
|
16477
|
+
Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
16478
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH")
|
|
16479
|
+
],
|
|
16480
|
+
risk: highRisk
|
|
16481
|
+
},
|
|
16482
|
+
{
|
|
16483
|
+
...ETHUSDCRe7Strategy,
|
|
16484
|
+
name: "Ekubo WBTC/USDC",
|
|
16485
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16486
|
+
address: ContractAddr.from(
|
|
16487
|
+
"0x2bcaef2eb7706875a5fdc6853dd961a0590f850bc3a031c59887189b5e84ba1"
|
|
16488
|
+
),
|
|
16489
|
+
launchBlock: 1501764,
|
|
16490
|
+
// must be same order as poolKey token0 and token1
|
|
16491
|
+
depositTokens: [
|
|
16492
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
16493
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16494
|
+
],
|
|
16495
|
+
risk: mediumRisk
|
|
16496
|
+
},
|
|
16497
|
+
{
|
|
16498
|
+
...ETHUSDCRe7Strategy,
|
|
16499
|
+
name: "Ekubo tBTC/USDC",
|
|
16500
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16501
|
+
address: ContractAddr.from(
|
|
16502
|
+
"0x4aad891a2d4432fba06b6558631bb13f6bbd7f6f33ab8c3111e344889ea4456"
|
|
16503
|
+
),
|
|
16504
|
+
launchBlock: 1501764,
|
|
16505
|
+
// must be same order as poolKey token0 and token1
|
|
16506
|
+
depositTokens: [
|
|
16507
|
+
Global.getDefaultTokens().find((t) => t.symbol === "tBTC"),
|
|
16508
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16509
|
+
],
|
|
16510
|
+
risk: mediumRisk
|
|
16511
|
+
},
|
|
16512
|
+
{
|
|
16513
|
+
...ETHUSDCRe7Strategy,
|
|
16514
|
+
name: "Ekubo WBTC/ETH",
|
|
16515
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16516
|
+
address: ContractAddr.from(
|
|
16517
|
+
"0x1c9232b8186d9317652f05055615f18a120c2ad9e5ee96c39e031c257fb945b"
|
|
16518
|
+
),
|
|
16519
|
+
launchBlock: 1501765,
|
|
16520
|
+
// must be same order as poolKey token0 and token1
|
|
16521
|
+
depositTokens: [
|
|
16522
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
16523
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH")
|
|
16524
|
+
],
|
|
16525
|
+
risk: mediumRisk
|
|
16526
|
+
},
|
|
16527
|
+
{
|
|
16528
|
+
...ETHUSDCRe7Strategy,
|
|
16529
|
+
name: "Ekubo WBTC/STRK",
|
|
16530
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16531
|
+
address: ContractAddr.from(
|
|
16532
|
+
"0x1248e385c23a929a015ec298a26560fa7745bbd6e41a886550e337b02714b1b"
|
|
16533
|
+
),
|
|
16534
|
+
launchBlock: 1501766,
|
|
16535
|
+
// must be same order as poolKey token0 and token1
|
|
16536
|
+
depositTokens: [
|
|
16537
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
16538
|
+
Global.getDefaultTokens().find((t) => t.symbol === "STRK")
|
|
16539
|
+
],
|
|
16540
|
+
risk: highRisk
|
|
16406
16541
|
}
|
|
16407
16542
|
];
|
|
16543
|
+
var EkuboCLVaultStrategies = [
|
|
16544
|
+
xSTRKSTRK,
|
|
16545
|
+
...RE7Strategies
|
|
16546
|
+
];
|
|
16408
16547
|
EkuboCLVaultStrategies.forEach((s) => {
|
|
16409
16548
|
s.contractDetails = [
|
|
16410
16549
|
{
|
|
16411
16550
|
address: s.address,
|
|
16412
16551
|
name: "Vault",
|
|
16413
16552
|
sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/tree/main/src/strategies/cl_vault"
|
|
16414
|
-
}
|
|
16415
|
-
...COMMON_CONTRACTS
|
|
16553
|
+
}
|
|
16554
|
+
// ...COMMON_CONTRACTS
|
|
16416
16555
|
];
|
|
16417
16556
|
s.docs = "https://docs.troves.fi/p/ekubo-cl-vaults";
|
|
16418
16557
|
s.description = /* @__PURE__ */ jsxs2("div", { children: [
|
|
@@ -18383,7 +18522,7 @@ var endurProtocol = {
|
|
|
18383
18522
|
name: "Endur",
|
|
18384
18523
|
logo: "https://app.endur.fi/logo.png"
|
|
18385
18524
|
};
|
|
18386
|
-
var
|
|
18525
|
+
var _riskFactor2 = [
|
|
18387
18526
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by CSC" },
|
|
18388
18527
|
{ type: "Depeg Risk" /* DEPEG_RISK */, value: 0.25, weight: 25, reason: "Depending on prevailing market conditions and trading activity, xSTRK may lose its peg to the underlying asset." },
|
|
18389
18528
|
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 0.1, weight: 10, reason: "Liquidation risk is low due to the nature of the Re7 Pool on Vesu" },
|
|
@@ -18458,9 +18597,9 @@ var SenseiStrategies = [
|
|
|
18458
18597
|
protocols: [endurProtocol, vesuProtocol],
|
|
18459
18598
|
maxTVL: new Web3Number("1500000", 18),
|
|
18460
18599
|
risk: {
|
|
18461
|
-
riskFactor:
|
|
18462
|
-
netRisk:
|
|
18463
|
-
notARisks: getNoRiskTags(
|
|
18600
|
+
riskFactor: _riskFactor2,
|
|
18601
|
+
netRisk: _riskFactor2.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor2.reduce((acc, curr) => acc + curr.weight, 0),
|
|
18602
|
+
notARisks: getNoRiskTags(_riskFactor2)
|
|
18464
18603
|
},
|
|
18465
18604
|
additionalInfo: {
|
|
18466
18605
|
mainToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
@@ -24074,7 +24213,7 @@ function getLooperSettings(token1Symbol, token2Symbol, vaultSettings, pool1, poo
|
|
|
24074
24213
|
vaultSettings.leafAdapters.push(commonAdapter.getAvnuAdapter(STRKToken.address, USDCToken.address, "avnu_swap_rewards" /* AVNU_SWAP_REWARDS */).bind(commonAdapter));
|
|
24075
24214
|
return vaultSettings;
|
|
24076
24215
|
}
|
|
24077
|
-
var
|
|
24216
|
+
var _riskFactor3 = [
|
|
24078
24217
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by Zellic" },
|
|
24079
24218
|
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1.5, weight: 50, reason: "Liquidation risk is mitigated by stable price feed on Starknet" },
|
|
24080
24219
|
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1, weight: 50, reason: "Technical failures like risk monitoring failures" }
|
|
@@ -24278,9 +24417,9 @@ var UniversalStrategies = [
|
|
|
24278
24417
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "USDC")],
|
|
24279
24418
|
additionalInfo: getLooperSettings("USDC", "ETH", usdcVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24280
24419
|
risk: {
|
|
24281
|
-
riskFactor:
|
|
24282
|
-
netRisk:
|
|
24283
|
-
notARisks: getNoRiskTags(
|
|
24420
|
+
riskFactor: _riskFactor3,
|
|
24421
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24422
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24284
24423
|
},
|
|
24285
24424
|
protocols: [Protocols.VESU],
|
|
24286
24425
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
@@ -24297,9 +24436,9 @@ var UniversalStrategies = [
|
|
|
24297
24436
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "WBTC")],
|
|
24298
24437
|
additionalInfo: getLooperSettings("WBTC", "ETH", wbtcVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24299
24438
|
risk: {
|
|
24300
|
-
riskFactor:
|
|
24301
|
-
netRisk:
|
|
24302
|
-
notARisks: getNoRiskTags(
|
|
24439
|
+
riskFactor: _riskFactor3,
|
|
24440
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24441
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24303
24442
|
},
|
|
24304
24443
|
protocols: [Protocols.VESU],
|
|
24305
24444
|
maxTVL: Web3Number.fromWei(0, 8),
|
|
@@ -24316,9 +24455,9 @@ var UniversalStrategies = [
|
|
|
24316
24455
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "ETH")],
|
|
24317
24456
|
additionalInfo: getLooperSettings("ETH", "WBTC", ethVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24318
24457
|
risk: {
|
|
24319
|
-
riskFactor:
|
|
24320
|
-
netRisk:
|
|
24321
|
-
notARisks: getNoRiskTags(
|
|
24458
|
+
riskFactor: _riskFactor3,
|
|
24459
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24460
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24322
24461
|
},
|
|
24323
24462
|
protocols: [Protocols.VESU],
|
|
24324
24463
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
@@ -24335,9 +24474,9 @@ var UniversalStrategies = [
|
|
|
24335
24474
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "STRK")],
|
|
24336
24475
|
additionalInfo: getLooperSettings("STRK", "ETH", strkVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24337
24476
|
risk: {
|
|
24338
|
-
riskFactor:
|
|
24339
|
-
netRisk:
|
|
24340
|
-
notARisks: getNoRiskTags(
|
|
24477
|
+
riskFactor: _riskFactor3,
|
|
24478
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24479
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24341
24480
|
},
|
|
24342
24481
|
protocols: [Protocols.VESU],
|
|
24343
24482
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
@@ -24354,9 +24493,9 @@ var UniversalStrategies = [
|
|
|
24354
24493
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "USDT")],
|
|
24355
24494
|
additionalInfo: getLooperSettings("USDT", "ETH", usdtVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24356
24495
|
risk: {
|
|
24357
|
-
riskFactor:
|
|
24358
|
-
netRisk:
|
|
24359
|
-
notARisks: getNoRiskTags(
|
|
24496
|
+
riskFactor: _riskFactor3,
|
|
24497
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24498
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24360
24499
|
},
|
|
24361
24500
|
protocols: [Protocols.VESU],
|
|
24362
24501
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
@@ -24372,11 +24511,9 @@ var TelegramNotif = class {
|
|
|
24372
24511
|
constructor(token, shouldPoll) {
|
|
24373
24512
|
this.subscribers = [
|
|
24374
24513
|
// '6820228303',
|
|
24375
|
-
|
|
24376
|
-
|
|
24377
|
-
//
|
|
24378
|
-
"1388729514",
|
|
24379
|
-
// hwashere
|
|
24514
|
+
// '1505578076',
|
|
24515
|
+
// '1356705582', // langs
|
|
24516
|
+
// '1388729514', // hwashere
|
|
24380
24517
|
"985902592"
|
|
24381
24518
|
];
|
|
24382
24519
|
this.bot = new TelegramBot(token, { polling: shouldPoll });
|
package/package.json
CHANGED
package/src/global.ts
CHANGED
|
@@ -58,7 +58,7 @@ const defaultTokens: TokenInfo[] = [{
|
|
|
58
58
|
name: 'WBTC',
|
|
59
59
|
symbol: 'WBTC',
|
|
60
60
|
logo: 'https://assets.troves.fi/integrations/tokens/wbtc.svg',
|
|
61
|
-
address: ContractAddr.from('
|
|
61
|
+
address: ContractAddr.from('0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac'),
|
|
62
62
|
decimals: 8,
|
|
63
63
|
coingeckId: undefined,
|
|
64
64
|
displayDecimals: 6,
|
|
@@ -72,6 +72,24 @@ const defaultTokens: TokenInfo[] = [{
|
|
|
72
72
|
coingeckId: undefined,
|
|
73
73
|
displayDecimals: 6,
|
|
74
74
|
priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
|
|
75
|
+
}, {
|
|
76
|
+
name: 'solvBTC',
|
|
77
|
+
symbol: 'solvBTC',
|
|
78
|
+
logo: 'https://assets.strkfarm.com/integrations/tokens/solvbtc.svg',
|
|
79
|
+
address: ContractAddr.from('0x0593e034dda23eea82d2ba9a30960ed42cf4a01502cc2351dc9b9881f9931a68'),
|
|
80
|
+
decimals: 18,
|
|
81
|
+
coingeckId: undefined,
|
|
82
|
+
displayDecimals: 6,
|
|
83
|
+
priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
|
|
84
|
+
}, {
|
|
85
|
+
name: 'LBTC',
|
|
86
|
+
symbol: 'LBTC',
|
|
87
|
+
logo: 'https://assets.strkfarm.com/integrations/tokens/lbtc.svg',
|
|
88
|
+
address: ContractAddr.from('0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4'),
|
|
89
|
+
decimals: 8,
|
|
90
|
+
coingeckId: undefined,
|
|
91
|
+
displayDecimals: 6,
|
|
92
|
+
priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
|
|
75
93
|
}]
|
|
76
94
|
const tokens: TokenInfo[] = defaultTokens;
|
|
77
95
|
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { RiskType } from "./common";
|
|
2
|
+
|
|
3
|
+
export enum MarketRiskLevel {
|
|
4
|
+
NO_RISK = 0,
|
|
5
|
+
VERY_LOW_VOLATILITY = 1,
|
|
6
|
+
LOW_VOLATILITY = 2,
|
|
7
|
+
MODERATE_VOLATILITY = 3,
|
|
8
|
+
HIGH_VOLATILITY = 4,
|
|
9
|
+
VERY_HIGH_VOLATILITY = 5
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export enum ImpermanentLossLevel {
|
|
13
|
+
NO_RISK = 0,
|
|
14
|
+
HIGHLY_CORRELATED = 1, // e.g. xSTRK/STRK
|
|
15
|
+
CORRELATED = 2, // e.g. BTC/SOL
|
|
16
|
+
NON_CORRELATED = 3, // e.g. STRK/USDC
|
|
17
|
+
LEVERAGED_CORRELATED = 4, // Added leverage on correlated pairs
|
|
18
|
+
LEVERAGED_NON_CORRELATED = 5 // Added leverage on non-correlated pairs
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export enum LiquidationRiskLevel {
|
|
22
|
+
NO_RISK = 0,
|
|
23
|
+
VERY_LOW_PROBABILITY = 1,
|
|
24
|
+
LOW_PROBABILITY = 2,
|
|
25
|
+
MODERATE_PROBABILITY = 3,
|
|
26
|
+
HIGH_PROBABILITY = 4,
|
|
27
|
+
CRITICAL_PROBABILITY = 5
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export enum LowLiquidityRiskLevel {
|
|
31
|
+
HIGH_LIQUIDITY = 0,
|
|
32
|
+
GOOD_LIQUIDITY = 1,
|
|
33
|
+
ADEQUATE_LIQUIDITY = 2,
|
|
34
|
+
MODERATE_CONCERNS = 3,
|
|
35
|
+
LOW_LIQUIDITY = 4,
|
|
36
|
+
SEVERE_CONSTRAINTS = 5
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export enum SmartContractRiskLevel {
|
|
40
|
+
NO_RISK = 0,
|
|
41
|
+
BATTLE_TESTED = 1, // Well-audited, battle-tested contracts
|
|
42
|
+
WELL_AUDITED = 2, // Audited contracts with good track record
|
|
43
|
+
RECENTLY_AUDITED = 3, // Recently audited or some complexity
|
|
44
|
+
UNAUDITED = 4, // Unaudited or complex logic
|
|
45
|
+
EXPERIMENTAL = 5 // Experimental or known vulnerabilities
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export enum OracleRiskLevel {
|
|
49
|
+
NO_DEPENDENCY = 0,
|
|
50
|
+
MULTIPLE_RELIABLE = 1, // Multiple reliable oracles (Chainlink, etc.)
|
|
51
|
+
SINGLE_RELIABLE = 2, // Single reliable oracle
|
|
52
|
+
LESS_ESTABLISHED = 3, // Less established oracle
|
|
53
|
+
UNPROVEN = 4, // Custom or unproven oracle
|
|
54
|
+
UNRELIABLE = 5 // No oracle or highly unreliable
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export enum TechnicalRiskLevel {
|
|
58
|
+
NO_RISK = 0,
|
|
59
|
+
STABLE_INFRASTRUCTURE = 1, // Stable, well-tested infrastructure
|
|
60
|
+
ESTABLISHED_PROTOCOLS = 2, // Established protocols
|
|
61
|
+
SOME_COMPLEXITY = 3, // Some technical complexity
|
|
62
|
+
NEW_IMPLEMENTATION = 4, // New or complex technical implementation
|
|
63
|
+
EXPERIMENTAL_TECHNOLOGY = 5 // Experimental or untested technology
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export enum CounterpartyRiskLevel {
|
|
67
|
+
NO_RISK = 0,
|
|
68
|
+
FULLY_DECENTRALIZED = 1, // Decentralized, no counterparty
|
|
69
|
+
REPUTABLE_COUNTERPARTY = 2, // Established, reputable counterparty
|
|
70
|
+
SOME_EXPOSURE = 3, // Some counterparty exposure
|
|
71
|
+
SIGNIFICANT_RISK = 4, // Significant counterparty risk
|
|
72
|
+
BAD_DEBT_ISSUES = 5 // Bad debt or known issues
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export enum DepegRiskLevel {
|
|
76
|
+
NO_RISK = 0,
|
|
77
|
+
HIGHLY_STABLE = 1, // Highly stable assets (e.g., major stablecoins)
|
|
78
|
+
GENERALLY_STABLE = 2, // Generally stable with minor fluctuations
|
|
79
|
+
OCCASIONAL_DEPEG = 3, // Occasional depeg events
|
|
80
|
+
FREQUENT_DEPEG = 4, // Frequent or significant depeg risk
|
|
81
|
+
HIGH_DEPEG_PROBABILITY = 5 // High probability of severe depeg (e.g., USDC depeg scenarios)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Helper type to map risk types to their corresponding level enums
|
|
85
|
+
export type RiskLevelMap = {
|
|
86
|
+
[RiskType.MARKET_RISK]: MarketRiskLevel;
|
|
87
|
+
[RiskType.IMPERMANENT_LOSS]: ImpermanentLossLevel;
|
|
88
|
+
[RiskType.LIQUIDATION_RISK]: LiquidationRiskLevel;
|
|
89
|
+
[RiskType.LOW_LIQUIDITY_RISK]: LowLiquidityRiskLevel;
|
|
90
|
+
[RiskType.SMART_CONTRACT_RISK]: SmartContractRiskLevel;
|
|
91
|
+
[RiskType.ORACLE_RISK]: OracleRiskLevel;
|
|
92
|
+
[RiskType.TECHNICAL_RISK]: TechnicalRiskLevel;
|
|
93
|
+
[RiskType.COUNTERPARTY_RISK]: CounterpartyRiskLevel;
|
|
94
|
+
[RiskType.DEPEG_RISK]: DepegRiskLevel;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// Utility function to get risk level description
|
|
98
|
+
export function getRiskLevelDescription(riskType: RiskType, level: number): string {
|
|
99
|
+
const descriptions: Record<RiskType, Record<number, string>> = {
|
|
100
|
+
[RiskType.MARKET_RISK]: {
|
|
101
|
+
0: "No market risk",
|
|
102
|
+
1: "Very low market volatility",
|
|
103
|
+
2: "Low market volatility",
|
|
104
|
+
3: "Moderate market volatility",
|
|
105
|
+
4: "High market volatility",
|
|
106
|
+
5: "Very high market volatility"
|
|
107
|
+
},
|
|
108
|
+
[RiskType.IMPERMANENT_LOSS]: {
|
|
109
|
+
0: "No impermanent loss risk",
|
|
110
|
+
1: "Highly correlated pairs (minimal IL)",
|
|
111
|
+
2: "Correlated pairs (low IL)",
|
|
112
|
+
3: "Non-correlated pairs (moderate IL)",
|
|
113
|
+
4: "Leveraged correlated pairs",
|
|
114
|
+
5: "Leveraged non-correlated pairs"
|
|
115
|
+
},
|
|
116
|
+
[RiskType.LIQUIDATION_RISK]: {
|
|
117
|
+
0: "No liquidation risk",
|
|
118
|
+
1: "Very low liquidation probability",
|
|
119
|
+
2: "Low liquidation probability",
|
|
120
|
+
3: "Moderate liquidation risk",
|
|
121
|
+
4: "High liquidation risk",
|
|
122
|
+
5: "Critical liquidation risk"
|
|
123
|
+
},
|
|
124
|
+
[RiskType.LOW_LIQUIDITY_RISK]: {
|
|
125
|
+
0: "High liquidity",
|
|
126
|
+
1: "Good liquidity",
|
|
127
|
+
2: "Adequate liquidity",
|
|
128
|
+
3: "Moderate liquidity concerns",
|
|
129
|
+
4: "Low liquidity",
|
|
130
|
+
5: "Severe liquidity constraints"
|
|
131
|
+
},
|
|
132
|
+
[RiskType.SMART_CONTRACT_RISK]: {
|
|
133
|
+
0: "No smart contract risk",
|
|
134
|
+
1: "Battle-tested contracts",
|
|
135
|
+
2: "Well-audited contracts",
|
|
136
|
+
3: "Recently audited contracts",
|
|
137
|
+
4: "Unaudited contracts",
|
|
138
|
+
5: "Experimental or vulnerable contracts"
|
|
139
|
+
},
|
|
140
|
+
[RiskType.ORACLE_RISK]: {
|
|
141
|
+
0: "No oracle dependency",
|
|
142
|
+
1: "Multiple reliable oracles",
|
|
143
|
+
2: "Single reliable oracle",
|
|
144
|
+
3: "Less established oracle",
|
|
145
|
+
4: "Unproven oracle",
|
|
146
|
+
5: "Unreliable or no oracle"
|
|
147
|
+
},
|
|
148
|
+
[RiskType.TECHNICAL_RISK]: {
|
|
149
|
+
0: "No technical risk",
|
|
150
|
+
1: "Stable infrastructure",
|
|
151
|
+
2: "Established protocols",
|
|
152
|
+
3: "Some complexity",
|
|
153
|
+
4: "New implementation",
|
|
154
|
+
5: "Experimental technology"
|
|
155
|
+
},
|
|
156
|
+
[RiskType.COUNTERPARTY_RISK]: {
|
|
157
|
+
0: "No counterparty risk",
|
|
158
|
+
1: "Fully decentralized",
|
|
159
|
+
2: "Reputable counterparty",
|
|
160
|
+
3: "Some counterparty exposure",
|
|
161
|
+
4: "Significant counterparty risk",
|
|
162
|
+
5: "Bad debt or known issues"
|
|
163
|
+
},
|
|
164
|
+
[RiskType.DEPEG_RISK]: {
|
|
165
|
+
0: "No depeg risk",
|
|
166
|
+
1: "Highly stable asset",
|
|
167
|
+
2: "Generally stable",
|
|
168
|
+
3: "Occasional depeg events",
|
|
169
|
+
4: "Frequent depeg risk",
|
|
170
|
+
5: "High depeg probability"
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
return descriptions[riskType][level] || "Unknown risk level";
|
|
175
|
+
}
|
package/src/notifs/telegram.ts
CHANGED
|
@@ -4,9 +4,9 @@ import { logger } from "@/utils/logger";
|
|
|
4
4
|
export class TelegramNotif {
|
|
5
5
|
private subscribers: string[] = [
|
|
6
6
|
// '6820228303',
|
|
7
|
-
'1505578076',
|
|
8
|
-
'1356705582', // langs
|
|
9
|
-
'1388729514', // hwashere
|
|
7
|
+
// '1505578076',
|
|
8
|
+
// '1356705582', // langs
|
|
9
|
+
// '1388729514', // hwashere
|
|
10
10
|
'985902592'
|
|
11
11
|
];
|
|
12
12
|
readonly bot: TelegramBot;
|