@strkfarm/sdk 1.1.4 → 1.1.5
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 +256 -115
- 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
|
@@ -218,7 +218,7 @@ var defaultTokens = [{
|
|
|
218
218
|
name: "WBTC",
|
|
219
219
|
symbol: "WBTC",
|
|
220
220
|
logo: "https://assets.troves.fi/integrations/tokens/wbtc.svg",
|
|
221
|
-
address: ContractAddr.from("
|
|
221
|
+
address: ContractAddr.from("0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac"),
|
|
222
222
|
decimals: 8,
|
|
223
223
|
coingeckId: void 0,
|
|
224
224
|
displayDecimals: 6,
|
|
@@ -234,6 +234,26 @@ var defaultTokens = [{
|
|
|
234
234
|
displayDecimals: 6,
|
|
235
235
|
priceCheckAmount: 1e-4
|
|
236
236
|
// 112000 * 0.0001 = $11.2
|
|
237
|
+
}, {
|
|
238
|
+
name: "solvBTC",
|
|
239
|
+
symbol: "solvBTC",
|
|
240
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/solvbtc.svg",
|
|
241
|
+
address: ContractAddr.from("0x0593e034dda23eea82d2ba9a30960ed42cf4a01502cc2351dc9b9881f9931a68"),
|
|
242
|
+
decimals: 18,
|
|
243
|
+
coingeckId: void 0,
|
|
244
|
+
displayDecimals: 6,
|
|
245
|
+
priceCheckAmount: 1e-4
|
|
246
|
+
// 112000 * 0.0001 = $11.2
|
|
247
|
+
}, {
|
|
248
|
+
name: "LBTC",
|
|
249
|
+
symbol: "LBTC",
|
|
250
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/lbtc.svg",
|
|
251
|
+
address: ContractAddr.from("0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4"),
|
|
252
|
+
decimals: 8,
|
|
253
|
+
coingeckId: void 0,
|
|
254
|
+
displayDecimals: 6,
|
|
255
|
+
priceCheckAmount: 1e-4
|
|
256
|
+
// 112000 * 0.0001 = $11.2
|
|
237
257
|
}];
|
|
238
258
|
var tokens = defaultTokens;
|
|
239
259
|
var _Global = class _Global {
|
|
@@ -16265,14 +16285,31 @@ var _protocol2 = {
|
|
|
16265
16285
|
name: "Ekubo",
|
|
16266
16286
|
logo: "https://app.ekubo.org/favicon.ico"
|
|
16267
16287
|
};
|
|
16268
|
-
var
|
|
16269
|
-
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value:
|
|
16270
|
-
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value:
|
|
16271
|
-
{ type: "Market Risk" /* MARKET_RISK */, value:
|
|
16288
|
+
var _corelatedPoolRiskFactors = [
|
|
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: 1 /* HIGHLY_CORRELATED */, weight: 33, reason: "Low risk due to co-related assets" },
|
|
16291
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 1 /* VERY_LOW_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
16292
|
+
];
|
|
16293
|
+
var mediumVolatilityPoolRiskFactors = [
|
|
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: 3 /* MODERATE_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
16272
16297
|
];
|
|
16273
|
-
var
|
|
16274
|
-
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value:
|
|
16298
|
+
var highVolatilityPoolRiskFactors = [
|
|
16299
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 34, reason: "Audited smart contracts" },
|
|
16300
|
+
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 3 /* NON_CORRELATED */, weight: 33, reason: "Low risk due to co-related assets" },
|
|
16301
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 4 /* HIGH_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
16275
16302
|
];
|
|
16303
|
+
var mediumRisk = {
|
|
16304
|
+
riskFactor: mediumVolatilityPoolRiskFactors,
|
|
16305
|
+
netRisk: mediumVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / mediumVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16306
|
+
notARisks: getNoRiskTags(mediumVolatilityPoolRiskFactors)
|
|
16307
|
+
};
|
|
16308
|
+
var highRisk = {
|
|
16309
|
+
riskFactor: highVolatilityPoolRiskFactors,
|
|
16310
|
+
netRisk: highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16311
|
+
notARisks: getNoRiskTags(highVolatilityPoolRiskFactors)
|
|
16312
|
+
};
|
|
16276
16313
|
var AUDIT_URL2 = "https://assets.troves.fi/strkfarm/audit_report_vesu_and_ekubo_strats.pdf";
|
|
16277
16314
|
var faqs2 = [
|
|
16278
16315
|
{
|
|
@@ -16287,6 +16324,10 @@ var faqs2 = [
|
|
|
16287
16324
|
question: "What happens during withdrawal?",
|
|
16288
16325
|
answer: "During withdrawal, you may receive either or both tokens depending on market conditions and prevailing prices."
|
|
16289
16326
|
},
|
|
16327
|
+
{
|
|
16328
|
+
question: "Are there any deposit/withdrawal fees?",
|
|
16329
|
+
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."
|
|
16330
|
+
},
|
|
16290
16331
|
{
|
|
16291
16332
|
question: "Is the strategy audited?",
|
|
16292
16333
|
answer: /* @__PURE__ */ jsxs2("div", { children: [
|
|
@@ -16321,9 +16362,9 @@ var xSTRKSTRK = {
|
|
|
16321
16362
|
auditUrl: AUDIT_URL2,
|
|
16322
16363
|
maxTVL: Web3Number.fromWei("0", 18),
|
|
16323
16364
|
risk: {
|
|
16324
|
-
riskFactor:
|
|
16325
|
-
netRisk:
|
|
16326
|
-
notARisks: getNoRiskTags(
|
|
16365
|
+
riskFactor: _corelatedPoolRiskFactors,
|
|
16366
|
+
netRisk: _corelatedPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _corelatedPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16367
|
+
notARisks: getNoRiskTags(_corelatedPoolRiskFactors)
|
|
16327
16368
|
},
|
|
16328
16369
|
apyMethodology: "APY based on 7-day historical performance, including fees and rewards.",
|
|
16329
16370
|
additionalInfo: {
|
|
@@ -16339,7 +16380,8 @@ var xSTRKSTRK = {
|
|
|
16339
16380
|
customShouldRebalance: async (currentPrice) => true,
|
|
16340
16381
|
minWaitHours: 24,
|
|
16341
16382
|
direction: "uponly"
|
|
16342
|
-
}
|
|
16383
|
+
},
|
|
16384
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "STRK")
|
|
16343
16385
|
},
|
|
16344
16386
|
faqs: [
|
|
16345
16387
|
...faqs2,
|
|
@@ -16356,68 +16398,165 @@ var xSTRKSTRK = {
|
|
|
16356
16398
|
contractDetails: [],
|
|
16357
16399
|
investmentSteps: []
|
|
16358
16400
|
};
|
|
16359
|
-
var
|
|
16360
|
-
xSTRKSTRK,
|
|
16401
|
+
var ETHUSDCRe7Strategy = {
|
|
16402
|
+
...xSTRKSTRK,
|
|
16403
|
+
name: "Ekubo ETH/USDC",
|
|
16404
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16405
|
+
address: ContractAddr.from(
|
|
16406
|
+
"0x160d8fa4569ef6a12e6bf47cb943d7b5ebba8a41a69a14c1d943050ba5ff947"
|
|
16407
|
+
),
|
|
16408
|
+
launchBlock: 1501761,
|
|
16409
|
+
// must be same order as poolKey token0 and token1
|
|
16410
|
+
depositTokens: [
|
|
16411
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH"),
|
|
16412
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16413
|
+
],
|
|
16414
|
+
additionalInfo: {
|
|
16415
|
+
newBounds: "Managed by Re7",
|
|
16416
|
+
truePrice: 1,
|
|
16417
|
+
feeBps: 1e3,
|
|
16418
|
+
rebalanceConditions: {
|
|
16419
|
+
customShouldRebalance: async (currentPrice) => currentPrice > 0.99 && currentPrice < 1.01,
|
|
16420
|
+
minWaitHours: 6,
|
|
16421
|
+
direction: "any"
|
|
16422
|
+
},
|
|
16423
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16424
|
+
},
|
|
16425
|
+
faqs: [
|
|
16426
|
+
...faqs2,
|
|
16427
|
+
{
|
|
16428
|
+
question: "Who is the curator of this strategy?",
|
|
16429
|
+
answer: /* @__PURE__ */ jsxs2("div", { children: [
|
|
16430
|
+
"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 ",
|
|
16431
|
+
/* @__PURE__ */ jsx3("a", { href: "https://www.re7labs.xyz", style: { textDecoration: "underline", marginLeft: "2px" }, target: "_blank", children: "here" }),
|
|
16432
|
+
"."
|
|
16433
|
+
] })
|
|
16434
|
+
}
|
|
16435
|
+
],
|
|
16436
|
+
risk: highRisk,
|
|
16437
|
+
points: [],
|
|
16438
|
+
curator: { name: "Re7 Labs", logo: "https://www.re7labs.xyz/favicon.ico" }
|
|
16439
|
+
};
|
|
16440
|
+
var RE7Strategies = [
|
|
16441
|
+
ETHUSDCRe7Strategy,
|
|
16361
16442
|
{
|
|
16362
|
-
...
|
|
16443
|
+
...ETHUSDCRe7Strategy,
|
|
16363
16444
|
name: "Ekubo USDC/USDT",
|
|
16364
16445
|
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16365
16446
|
address: ContractAddr.from(
|
|
16366
|
-
"
|
|
16447
|
+
"0x3a4f8debaf12af97bb911099bc011d63d6c208d4c5ba8e15d7f437785b0aaa2"
|
|
16367
16448
|
),
|
|
16368
|
-
launchBlock:
|
|
16449
|
+
launchBlock: 1501761,
|
|
16369
16450
|
// must be same order as poolKey token0 and token1
|
|
16370
16451
|
depositTokens: [
|
|
16371
16452
|
Global.getDefaultTokens().find((t) => t.symbol === "USDC"),
|
|
16372
16453
|
Global.getDefaultTokens().find((t) => t.symbol === "USDT")
|
|
16373
16454
|
],
|
|
16374
|
-
|
|
16375
|
-
newBounds: {
|
|
16376
|
-
lower: -1,
|
|
16377
|
-
upper: 1
|
|
16378
|
-
},
|
|
16379
|
-
truePrice: 1,
|
|
16380
|
-
feeBps: 1e3,
|
|
16381
|
-
rebalanceConditions: {
|
|
16382
|
-
customShouldRebalance: async (currentPrice) => currentPrice > 0.99 && currentPrice < 1.01,
|
|
16383
|
-
minWaitHours: 6,
|
|
16384
|
-
direction: "any"
|
|
16385
|
-
}
|
|
16386
|
-
}
|
|
16455
|
+
risk: xSTRKSTRK.risk
|
|
16387
16456
|
},
|
|
16388
16457
|
{
|
|
16389
|
-
...
|
|
16458
|
+
...ETHUSDCRe7Strategy,
|
|
16390
16459
|
name: "Ekubo STRK/USDC",
|
|
16391
16460
|
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16392
16461
|
address: ContractAddr.from(
|
|
16393
|
-
"
|
|
16462
|
+
"0x351b36d0d9d8b40010658825adeeddb1397436cd41acd0ff6c6e23aaa8b5b30"
|
|
16394
16463
|
),
|
|
16395
|
-
launchBlock:
|
|
16464
|
+
launchBlock: 1501762,
|
|
16396
16465
|
// must be same order as poolKey token0 and token1
|
|
16397
16466
|
depositTokens: [
|
|
16398
16467
|
Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
16399
16468
|
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16400
16469
|
],
|
|
16401
|
-
|
|
16402
|
-
|
|
16403
|
-
|
|
16404
|
-
|
|
16405
|
-
|
|
16406
|
-
|
|
16407
|
-
|
|
16408
|
-
|
|
16409
|
-
|
|
16410
|
-
|
|
16470
|
+
risk: highRisk
|
|
16471
|
+
},
|
|
16472
|
+
{
|
|
16473
|
+
...ETHUSDCRe7Strategy,
|
|
16474
|
+
name: "Ekubo STRK/ETH",
|
|
16475
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16476
|
+
address: ContractAddr.from(
|
|
16477
|
+
"0x4ce3024b0ee879009112d7b0e073f8a87153dd35b029347d4247ffe48d28f51"
|
|
16478
|
+
),
|
|
16479
|
+
launchBlock: 1501763,
|
|
16480
|
+
// must be same order as poolKey token0 and token1
|
|
16481
|
+
depositTokens: [
|
|
16482
|
+
Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
16483
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH")
|
|
16484
|
+
],
|
|
16485
|
+
risk: highRisk
|
|
16486
|
+
},
|
|
16487
|
+
{
|
|
16488
|
+
...ETHUSDCRe7Strategy,
|
|
16489
|
+
name: "Ekubo WBTC/USDC",
|
|
16490
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16491
|
+
address: ContractAddr.from(
|
|
16492
|
+
"0x2bcaef2eb7706875a5fdc6853dd961a0590f850bc3a031c59887189b5e84ba1"
|
|
16493
|
+
),
|
|
16494
|
+
launchBlock: 1501764,
|
|
16495
|
+
// must be same order as poolKey token0 and token1
|
|
16496
|
+
depositTokens: [
|
|
16497
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
16498
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16499
|
+
],
|
|
16500
|
+
risk: mediumRisk
|
|
16501
|
+
},
|
|
16502
|
+
{
|
|
16503
|
+
...ETHUSDCRe7Strategy,
|
|
16504
|
+
name: "Ekubo tBTC/USDC",
|
|
16505
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16506
|
+
address: ContractAddr.from(
|
|
16507
|
+
"0x4aad891a2d4432fba06b6558631bb13f6bbd7f6f33ab8c3111e344889ea4456"
|
|
16508
|
+
),
|
|
16509
|
+
launchBlock: 1501764,
|
|
16510
|
+
// must be same order as poolKey token0 and token1
|
|
16511
|
+
depositTokens: [
|
|
16512
|
+
Global.getDefaultTokens().find((t) => t.symbol === "tBTC"),
|
|
16513
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16514
|
+
],
|
|
16515
|
+
risk: mediumRisk
|
|
16516
|
+
},
|
|
16517
|
+
{
|
|
16518
|
+
...ETHUSDCRe7Strategy,
|
|
16519
|
+
name: "Ekubo WBTC/ETH",
|
|
16520
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16521
|
+
address: ContractAddr.from(
|
|
16522
|
+
"0x1c9232b8186d9317652f05055615f18a120c2ad9e5ee96c39e031c257fb945b"
|
|
16523
|
+
),
|
|
16524
|
+
launchBlock: 1501765,
|
|
16525
|
+
// must be same order as poolKey token0 and token1
|
|
16526
|
+
depositTokens: [
|
|
16527
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
16528
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH")
|
|
16529
|
+
],
|
|
16530
|
+
risk: mediumRisk
|
|
16531
|
+
},
|
|
16532
|
+
{
|
|
16533
|
+
...ETHUSDCRe7Strategy,
|
|
16534
|
+
name: "Ekubo WBTC/STRK",
|
|
16535
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16536
|
+
address: ContractAddr.from(
|
|
16537
|
+
"0x1248e385c23a929a015ec298a26560fa7745bbd6e41a886550e337b02714b1b"
|
|
16538
|
+
),
|
|
16539
|
+
launchBlock: 1501766,
|
|
16540
|
+
// must be same order as poolKey token0 and token1
|
|
16541
|
+
depositTokens: [
|
|
16542
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
16543
|
+
Global.getDefaultTokens().find((t) => t.symbol === "STRK")
|
|
16544
|
+
],
|
|
16545
|
+
risk: highRisk
|
|
16411
16546
|
}
|
|
16412
16547
|
];
|
|
16548
|
+
var EkuboCLVaultStrategies = [
|
|
16549
|
+
xSTRKSTRK,
|
|
16550
|
+
...RE7Strategies
|
|
16551
|
+
];
|
|
16413
16552
|
EkuboCLVaultStrategies.forEach((s) => {
|
|
16414
16553
|
s.contractDetails = [
|
|
16415
16554
|
{
|
|
16416
16555
|
address: s.address,
|
|
16417
16556
|
name: "Vault",
|
|
16418
16557
|
sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/tree/main/src/strategies/cl_vault"
|
|
16419
|
-
}
|
|
16420
|
-
...COMMON_CONTRACTS
|
|
16558
|
+
}
|
|
16559
|
+
// ...COMMON_CONTRACTS
|
|
16421
16560
|
];
|
|
16422
16561
|
s.docs = "https://docs.troves.fi/p/ekubo-cl-vaults";
|
|
16423
16562
|
s.description = /* @__PURE__ */ jsxs2("div", { children: [
|
|
@@ -18388,7 +18527,7 @@ var endurProtocol = {
|
|
|
18388
18527
|
name: "Endur",
|
|
18389
18528
|
logo: "https://app.endur.fi/logo.png"
|
|
18390
18529
|
};
|
|
18391
|
-
var
|
|
18530
|
+
var _riskFactor2 = [
|
|
18392
18531
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by CSC" },
|
|
18393
18532
|
{ 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." },
|
|
18394
18533
|
{ 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" },
|
|
@@ -18463,9 +18602,9 @@ var SenseiStrategies = [
|
|
|
18463
18602
|
protocols: [endurProtocol, vesuProtocol],
|
|
18464
18603
|
maxTVL: new Web3Number("1500000", 18),
|
|
18465
18604
|
risk: {
|
|
18466
|
-
riskFactor:
|
|
18467
|
-
netRisk:
|
|
18468
|
-
notARisks: getNoRiskTags(
|
|
18605
|
+
riskFactor: _riskFactor2,
|
|
18606
|
+
netRisk: _riskFactor2.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor2.reduce((acc, curr) => acc + curr.weight, 0),
|
|
18607
|
+
notARisks: getNoRiskTags(_riskFactor2)
|
|
18469
18608
|
},
|
|
18470
18609
|
additionalInfo: {
|
|
18471
18610
|
mainToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
@@ -24079,7 +24218,7 @@ function getLooperSettings(token1Symbol, token2Symbol, vaultSettings, pool1, poo
|
|
|
24079
24218
|
vaultSettings.leafAdapters.push(commonAdapter.getAvnuAdapter(STRKToken.address, USDCToken.address, "avnu_swap_rewards" /* AVNU_SWAP_REWARDS */).bind(commonAdapter));
|
|
24080
24219
|
return vaultSettings;
|
|
24081
24220
|
}
|
|
24082
|
-
var
|
|
24221
|
+
var _riskFactor3 = [
|
|
24083
24222
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by Zellic" },
|
|
24084
24223
|
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1.5, weight: 50, reason: "Liquidation risk is mitigated by stable price feed on Starknet" },
|
|
24085
24224
|
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1, weight: 50, reason: "Technical failures like risk monitoring failures" }
|
|
@@ -24283,9 +24422,9 @@ var UniversalStrategies = [
|
|
|
24283
24422
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "USDC")],
|
|
24284
24423
|
additionalInfo: getLooperSettings("USDC", "ETH", usdcVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24285
24424
|
risk: {
|
|
24286
|
-
riskFactor:
|
|
24287
|
-
netRisk:
|
|
24288
|
-
notARisks: getNoRiskTags(
|
|
24425
|
+
riskFactor: _riskFactor3,
|
|
24426
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24427
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24289
24428
|
},
|
|
24290
24429
|
protocols: [Protocols.VESU],
|
|
24291
24430
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
@@ -24302,9 +24441,9 @@ var UniversalStrategies = [
|
|
|
24302
24441
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "WBTC")],
|
|
24303
24442
|
additionalInfo: getLooperSettings("WBTC", "ETH", wbtcVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24304
24443
|
risk: {
|
|
24305
|
-
riskFactor:
|
|
24306
|
-
netRisk:
|
|
24307
|
-
notARisks: getNoRiskTags(
|
|
24444
|
+
riskFactor: _riskFactor3,
|
|
24445
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24446
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24308
24447
|
},
|
|
24309
24448
|
protocols: [Protocols.VESU],
|
|
24310
24449
|
maxTVL: Web3Number.fromWei(0, 8),
|
|
@@ -24321,9 +24460,9 @@ var UniversalStrategies = [
|
|
|
24321
24460
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "ETH")],
|
|
24322
24461
|
additionalInfo: getLooperSettings("ETH", "WBTC", ethVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24323
24462
|
risk: {
|
|
24324
|
-
riskFactor:
|
|
24325
|
-
netRisk:
|
|
24326
|
-
notARisks: getNoRiskTags(
|
|
24463
|
+
riskFactor: _riskFactor3,
|
|
24464
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24465
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24327
24466
|
},
|
|
24328
24467
|
protocols: [Protocols.VESU],
|
|
24329
24468
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
@@ -24340,9 +24479,9 @@ var UniversalStrategies = [
|
|
|
24340
24479
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "STRK")],
|
|
24341
24480
|
additionalInfo: getLooperSettings("STRK", "ETH", strkVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24342
24481
|
risk: {
|
|
24343
|
-
riskFactor:
|
|
24344
|
-
netRisk:
|
|
24345
|
-
notARisks: getNoRiskTags(
|
|
24482
|
+
riskFactor: _riskFactor3,
|
|
24483
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24484
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24346
24485
|
},
|
|
24347
24486
|
protocols: [Protocols.VESU],
|
|
24348
24487
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
@@ -24359,9 +24498,9 @@ var UniversalStrategies = [
|
|
|
24359
24498
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "USDT")],
|
|
24360
24499
|
additionalInfo: getLooperSettings("USDT", "ETH", usdtVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24361
24500
|
risk: {
|
|
24362
|
-
riskFactor:
|
|
24363
|
-
netRisk:
|
|
24364
|
-
notARisks: getNoRiskTags(
|
|
24501
|
+
riskFactor: _riskFactor3,
|
|
24502
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24503
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24365
24504
|
},
|
|
24366
24505
|
protocols: [Protocols.VESU],
|
|
24367
24506
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
@@ -24377,11 +24516,9 @@ var TelegramNotif = class {
|
|
|
24377
24516
|
constructor(token, shouldPoll) {
|
|
24378
24517
|
this.subscribers = [
|
|
24379
24518
|
// '6820228303',
|
|
24380
|
-
|
|
24381
|
-
|
|
24382
|
-
//
|
|
24383
|
-
"1388729514",
|
|
24384
|
-
// hwashere
|
|
24519
|
+
// '1505578076',
|
|
24520
|
+
// '1356705582', // langs
|
|
24521
|
+
// '1388729514', // hwashere
|
|
24385
24522
|
"985902592"
|
|
24386
24523
|
];
|
|
24387
24524
|
this.bot = new TelegramBot(token, { polling: shouldPoll });
|
package/package.json
CHANGED
package/src/global.ts
CHANGED
|
@@ -63,7 +63,7 @@ const defaultTokens: TokenInfo[] = [{
|
|
|
63
63
|
name: 'WBTC',
|
|
64
64
|
symbol: 'WBTC',
|
|
65
65
|
logo: 'https://assets.troves.fi/integrations/tokens/wbtc.svg',
|
|
66
|
-
address: ContractAddr.from('
|
|
66
|
+
address: ContractAddr.from('0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac'),
|
|
67
67
|
decimals: 8,
|
|
68
68
|
coingeckId: undefined,
|
|
69
69
|
displayDecimals: 6,
|
|
@@ -77,6 +77,24 @@ const defaultTokens: TokenInfo[] = [{
|
|
|
77
77
|
coingeckId: undefined,
|
|
78
78
|
displayDecimals: 6,
|
|
79
79
|
priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
|
|
80
|
+
}, {
|
|
81
|
+
name: 'solvBTC',
|
|
82
|
+
symbol: 'solvBTC',
|
|
83
|
+
logo: 'https://assets.strkfarm.com/integrations/tokens/solvbtc.svg',
|
|
84
|
+
address: ContractAddr.from('0x0593e034dda23eea82d2ba9a30960ed42cf4a01502cc2351dc9b9881f9931a68'),
|
|
85
|
+
decimals: 18,
|
|
86
|
+
coingeckId: undefined,
|
|
87
|
+
displayDecimals: 6,
|
|
88
|
+
priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
|
|
89
|
+
}, {
|
|
90
|
+
name: 'LBTC',
|
|
91
|
+
symbol: 'LBTC',
|
|
92
|
+
logo: 'https://assets.strkfarm.com/integrations/tokens/lbtc.svg',
|
|
93
|
+
address: ContractAddr.from('0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4'),
|
|
94
|
+
decimals: 8,
|
|
95
|
+
coingeckId: undefined,
|
|
96
|
+
displayDecimals: 6,
|
|
97
|
+
priceCheckAmount: 0.0001, // 112000 * 0.0001 = $11.2
|
|
80
98
|
}]
|
|
81
99
|
const tokens: TokenInfo[] = defaultTokens;
|
|
82
100
|
|
|
@@ -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;
|