@strkfarm/sdk 1.1.4 → 1.1.6
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 +541 -253
- package/dist/index.browser.mjs +364 -90
- package/dist/index.d.ts +10 -2
- package/dist/index.js +367 -95
- package/dist/index.mjs +367 -95
- package/package.json +2 -1
- package/src/global.ts +51 -1
- package/src/interfaces/common.tsx +2 -0
- package/src/interfaces/risks.ts +175 -0
- package/src/modules/harvests.ts +2 -1
- package/src/modules/pricer.ts +25 -8
- package/src/notifs/telegram.ts +3 -3
- package/src/strategies/constants.ts +5 -1
- package/src/strategies/ekubo-cl-vault.tsx +288 -81
- package/src/strategies/universal-adapters/vesu-adapter.ts +2 -1
- package/src/strategies/vesu-rebalance.tsx +3 -3
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,61 @@ 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
|
+
priceProxySymbol: "WBTC",
|
|
245
|
+
displayDecimals: 6,
|
|
246
|
+
priceCheckAmount: 1e-4
|
|
247
|
+
// 112000 * 0.0001 = $11.2
|
|
248
|
+
}, {
|
|
249
|
+
name: "LBTC",
|
|
250
|
+
symbol: "LBTC",
|
|
251
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/lbtc.svg",
|
|
252
|
+
address: ContractAddr.from("0x036834a40984312f7f7de8d31e3f6305b325389eaeea5b1c0664b2fb936461a4"),
|
|
253
|
+
decimals: 8,
|
|
254
|
+
coingeckId: void 0,
|
|
255
|
+
displayDecimals: 6,
|
|
256
|
+
priceProxySymbol: "WBTC",
|
|
257
|
+
priceCheckAmount: 1e-4
|
|
258
|
+
// 112000 * 0.0001 = $11.2
|
|
259
|
+
}, {
|
|
260
|
+
name: "xWBTC",
|
|
261
|
+
symbol: "xWBTC",
|
|
262
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/xwbtc.svg",
|
|
263
|
+
address: ContractAddr.from("0x6a567e68c805323525fe1649adb80b03cddf92c23d2629a6779f54192dffc13"),
|
|
264
|
+
decimals: 8,
|
|
265
|
+
coingeckId: void 0,
|
|
266
|
+
displayDecimals: 6,
|
|
267
|
+
priceProxySymbol: "WBTC",
|
|
268
|
+
priceCheckAmount: 1e-4
|
|
269
|
+
// 112000 * 0.0001 = $11.2
|
|
270
|
+
}, {
|
|
271
|
+
name: "xsBTC",
|
|
272
|
+
symbol: "xsBTC",
|
|
273
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/xsbtc_solv.svg",
|
|
274
|
+
address: ContractAddr.from("0x580f3dc564a7b82f21d40d404b3842d490ae7205e6ac07b1b7af2b4a5183dc9"),
|
|
275
|
+
decimals: 18,
|
|
276
|
+
coingeckId: void 0,
|
|
277
|
+
displayDecimals: 6,
|
|
278
|
+
priceProxySymbol: "WBTC",
|
|
279
|
+
priceCheckAmount: 1e-4
|
|
280
|
+
// 112000 * 0.0001 = $11.2
|
|
281
|
+
}, {
|
|
282
|
+
name: "xtBTC",
|
|
283
|
+
symbol: "xtBTC",
|
|
284
|
+
logo: "https://assets.strkfarm.com/integrations/tokens/xtbtc.svg",
|
|
285
|
+
address: ContractAddr.from("0x43a35c1425a0125ef8c171f1a75c6f31ef8648edcc8324b55ce1917db3f9b91"),
|
|
286
|
+
decimals: 8,
|
|
287
|
+
coingeckId: void 0,
|
|
288
|
+
displayDecimals: 6,
|
|
289
|
+
priceProxySymbol: "WBTC",
|
|
290
|
+
priceCheckAmount: 1e-4
|
|
291
|
+
// 112000 * 0.0001 = $11.2
|
|
237
292
|
}];
|
|
238
293
|
var tokens = defaultTokens;
|
|
239
294
|
var _Global = class _Global {
|
|
@@ -321,9 +376,11 @@ var PricerBase = class {
|
|
|
321
376
|
// src/modules/pricer.ts
|
|
322
377
|
var Pricer = class extends PricerBase {
|
|
323
378
|
// e.g. ETH/USDC
|
|
324
|
-
constructor(config, tokens2) {
|
|
379
|
+
constructor(config, tokens2, refreshInterval = 3e4, staleTime = 6e4) {
|
|
325
380
|
super(config, tokens2);
|
|
326
381
|
this.prices = {};
|
|
382
|
+
this.refreshInterval = 3e4;
|
|
383
|
+
this.staleTime = 6e4;
|
|
327
384
|
// code populates this map during runtime to determine which method to use for a given token
|
|
328
385
|
// The method set will be the first one to try after first attempt
|
|
329
386
|
this.methodToUse = {};
|
|
@@ -332,6 +389,8 @@ var Pricer = class extends PricerBase {
|
|
|
332
389
|
*/
|
|
333
390
|
this.PRICE_API = `https://api.coinbase.com/v2/prices/{{PRICER_KEY}}/buy`;
|
|
334
391
|
this.EKUBO_API = "https://quoter-mainnet-api.ekubo.org/{{AMOUNT}}/{{TOKEN_ADDRESS}}/0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8";
|
|
392
|
+
this.refreshInterval = refreshInterval;
|
|
393
|
+
this.staleTime = staleTime;
|
|
335
394
|
}
|
|
336
395
|
isReady() {
|
|
337
396
|
const allPricesExist = Object.keys(this.prices).length === this.tokens.length;
|
|
@@ -364,10 +423,10 @@ var Pricer = class extends PricerBase {
|
|
|
364
423
|
this._loadPrices();
|
|
365
424
|
setInterval(() => {
|
|
366
425
|
this._loadPrices();
|
|
367
|
-
},
|
|
426
|
+
}, this.refreshInterval);
|
|
368
427
|
}
|
|
369
428
|
isStale(timestamp, tokenName) {
|
|
370
|
-
const STALE_TIME =
|
|
429
|
+
const STALE_TIME = this.staleTime;
|
|
371
430
|
return (/* @__PURE__ */ new Date()).getTime() - timestamp.getTime() > STALE_TIME;
|
|
372
431
|
}
|
|
373
432
|
assertNotStale(timestamp, tokenName) {
|
|
@@ -393,13 +452,25 @@ var Pricer = class extends PricerBase {
|
|
|
393
452
|
onUpdate(token.symbol);
|
|
394
453
|
return;
|
|
395
454
|
}
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
455
|
+
if (token.priceProxySymbol) {
|
|
456
|
+
const proxyToken = this.tokens.find((t) => t.symbol === token.priceProxySymbol);
|
|
457
|
+
if (!proxyToken) {
|
|
458
|
+
throw new FatalError(`Price proxy token ${token.priceProxySymbol} not found`);
|
|
459
|
+
}
|
|
460
|
+
const price = await this._getPrice(proxyToken);
|
|
461
|
+
this.prices[token.symbol] = {
|
|
462
|
+
price,
|
|
463
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
464
|
+
};
|
|
465
|
+
} else {
|
|
466
|
+
const price = await this._getPrice(token);
|
|
467
|
+
this.prices[token.symbol] = {
|
|
468
|
+
price,
|
|
469
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
470
|
+
};
|
|
471
|
+
}
|
|
401
472
|
onUpdate(token.symbol);
|
|
402
|
-
logger.verbose(`Fetched price of ${token.name} as ${price}`);
|
|
473
|
+
logger.verbose(`Fetched price of ${token.name} as ${this.prices[token.symbol].price}`);
|
|
403
474
|
break;
|
|
404
475
|
} catch (error) {
|
|
405
476
|
if (retry < MAX_RETRIES) {
|
|
@@ -3839,6 +3910,18 @@ async function getAPIUsingHeadlessBrowser(url) {
|
|
|
3839
3910
|
|
|
3840
3911
|
// src/modules/harvests.ts
|
|
3841
3912
|
import { Contract as Contract4, num as num3 } from "starknet";
|
|
3913
|
+
|
|
3914
|
+
// src/strategies/constants.ts
|
|
3915
|
+
var COMMON_CONTRACTS = [{
|
|
3916
|
+
address: ContractAddr.from("0x0636a3f51cc37f5729e4da4b1de6a8549a28f3c0d5bf3b17f150971e451ff9c2"),
|
|
3917
|
+
name: "Access Controller",
|
|
3918
|
+
sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/blob/main/src/components/accessControl.cairo"
|
|
3919
|
+
}];
|
|
3920
|
+
var ENDPOINTS = {
|
|
3921
|
+
VESU_BASE: "https://cache-server-t2me.onrender.com/vesu"
|
|
3922
|
+
};
|
|
3923
|
+
|
|
3924
|
+
// src/modules/harvests.ts
|
|
3842
3925
|
var Harvests = class _Harvests {
|
|
3843
3926
|
constructor(config) {
|
|
3844
3927
|
this.config = config;
|
|
@@ -3898,7 +3981,7 @@ var EkuboHarvests = class extends Harvests {
|
|
|
3898
3981
|
var VESU_REWARDS_CONTRACT = ContractAddr.from("0x0387f3eb1d98632fbe3440a9f1385Aec9d87b6172491d3Dd81f1c35A7c61048F");
|
|
3899
3982
|
var VesuHarvests = class _VesuHarvests extends Harvests {
|
|
3900
3983
|
async getHarvests(addr) {
|
|
3901
|
-
const result = await fetch(
|
|
3984
|
+
const result = await fetch(`${ENDPOINTS.VESU_BASE}/users/${addr.address}/strk-rewards/calldata`);
|
|
3902
3985
|
const data = await result.json();
|
|
3903
3986
|
const rewardsContract = VESU_REWARDS_CONTRACT;
|
|
3904
3987
|
const cls = await this.config.provider.getClassAt(rewardsContract.address);
|
|
@@ -9376,13 +9459,6 @@ var vesu_pools_default = {
|
|
|
9376
9459
|
]
|
|
9377
9460
|
};
|
|
9378
9461
|
|
|
9379
|
-
// src/strategies/constants.ts
|
|
9380
|
-
var COMMON_CONTRACTS = [{
|
|
9381
|
-
address: ContractAddr.from("0x0636a3f51cc37f5729e4da4b1de6a8549a28f3c0d5bf3b17f150971e451ff9c2"),
|
|
9382
|
-
name: "Access Controller",
|
|
9383
|
-
sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/blob/main/src/components/accessControl.cairo"
|
|
9384
|
-
}];
|
|
9385
|
-
|
|
9386
9462
|
// src/strategies/vesu-rebalance.tsx
|
|
9387
9463
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
9388
9464
|
var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
@@ -9511,7 +9587,7 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
|
9511
9587
|
};
|
|
9512
9588
|
}
|
|
9513
9589
|
static async getAllPossibleVerifiedPools(asset) {
|
|
9514
|
-
const data = await getAPIUsingHeadlessBrowser(
|
|
9590
|
+
const data = await getAPIUsingHeadlessBrowser(`${ENDPOINTS.VESU_BASE}/pools`);
|
|
9515
9591
|
const verifiedPools = data.data.filter((d) => d.isVerified);
|
|
9516
9592
|
const pools = verifiedPools.map((p) => {
|
|
9517
9593
|
const hasMyAsset = p.assets.find((a) => asset.eqString(a.address));
|
|
@@ -9688,7 +9764,7 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
|
9688
9764
|
let pools = [];
|
|
9689
9765
|
try {
|
|
9690
9766
|
const data = await getAPIUsingHeadlessBrowser(
|
|
9691
|
-
|
|
9767
|
+
`${ENDPOINTS.VESU_BASE}/pools`
|
|
9692
9768
|
);
|
|
9693
9769
|
pools = data.data;
|
|
9694
9770
|
for (const pool of vesu_pools_default.data) {
|
|
@@ -16265,14 +16341,31 @@ var _protocol2 = {
|
|
|
16265
16341
|
name: "Ekubo",
|
|
16266
16342
|
logo: "https://app.ekubo.org/favicon.ico"
|
|
16267
16343
|
};
|
|
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:
|
|
16344
|
+
var _corelatedPoolRiskFactors = [
|
|
16345
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 34, reason: "Audited smart contracts" },
|
|
16346
|
+
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 1 /* HIGHLY_CORRELATED */, weight: 33, reason: "Low risk due to co-related assets" },
|
|
16347
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 1 /* VERY_LOW_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
16348
|
+
];
|
|
16349
|
+
var mediumVolatilityPoolRiskFactors = [
|
|
16350
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 34, reason: "Audited smart contracts" },
|
|
16351
|
+
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 3 /* NON_CORRELATED */, weight: 33, reason: "Low risk due to co-related assets" },
|
|
16352
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 3 /* MODERATE_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
16272
16353
|
];
|
|
16273
|
-
var
|
|
16274
|
-
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value:
|
|
16354
|
+
var highVolatilityPoolRiskFactors = [
|
|
16355
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 2 /* WELL_AUDITED */, weight: 34, reason: "Audited smart contracts" },
|
|
16356
|
+
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 3 /* NON_CORRELATED */, weight: 33, reason: "Low risk due to co-related assets" },
|
|
16357
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 4 /* HIGH_VOLATILITY */, weight: 33, reason: "Low risk due to co-related assets" }
|
|
16275
16358
|
];
|
|
16359
|
+
var mediumRisk = {
|
|
16360
|
+
riskFactor: mediumVolatilityPoolRiskFactors,
|
|
16361
|
+
netRisk: mediumVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / mediumVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16362
|
+
notARisks: getNoRiskTags(mediumVolatilityPoolRiskFactors)
|
|
16363
|
+
};
|
|
16364
|
+
var highRisk = {
|
|
16365
|
+
riskFactor: highVolatilityPoolRiskFactors,
|
|
16366
|
+
netRisk: highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / highVolatilityPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16367
|
+
notARisks: getNoRiskTags(highVolatilityPoolRiskFactors)
|
|
16368
|
+
};
|
|
16276
16369
|
var AUDIT_URL2 = "https://assets.troves.fi/strkfarm/audit_report_vesu_and_ekubo_strats.pdf";
|
|
16277
16370
|
var faqs2 = [
|
|
16278
16371
|
{
|
|
@@ -16287,6 +16380,10 @@ var faqs2 = [
|
|
|
16287
16380
|
question: "What happens during withdrawal?",
|
|
16288
16381
|
answer: "During withdrawal, you may receive either or both tokens depending on market conditions and prevailing prices."
|
|
16289
16382
|
},
|
|
16383
|
+
{
|
|
16384
|
+
question: "Are there any deposit/withdrawal fees?",
|
|
16385
|
+
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."
|
|
16386
|
+
},
|
|
16290
16387
|
{
|
|
16291
16388
|
question: "Is the strategy audited?",
|
|
16292
16389
|
answer: /* @__PURE__ */ jsxs2("div", { children: [
|
|
@@ -16304,6 +16401,15 @@ var faqs2 = [
|
|
|
16304
16401
|
] })
|
|
16305
16402
|
}
|
|
16306
16403
|
];
|
|
16404
|
+
function getLSTFAQs(lstSymbol) {
|
|
16405
|
+
return [
|
|
16406
|
+
...faqs2,
|
|
16407
|
+
{
|
|
16408
|
+
question: "Why might I see a negative APY?",
|
|
16409
|
+
answer: `A negative APY can occur when ${lstSymbol}'s price drops on DEXes. This is usually temporary and tends to recover within a few days or a week.`
|
|
16410
|
+
}
|
|
16411
|
+
];
|
|
16412
|
+
}
|
|
16307
16413
|
var xSTRKSTRK = {
|
|
16308
16414
|
name: "Ekubo xSTRK/STRK",
|
|
16309
16415
|
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
@@ -16321,9 +16427,9 @@ var xSTRKSTRK = {
|
|
|
16321
16427
|
auditUrl: AUDIT_URL2,
|
|
16322
16428
|
maxTVL: Web3Number.fromWei("0", 18),
|
|
16323
16429
|
risk: {
|
|
16324
|
-
riskFactor:
|
|
16325
|
-
netRisk:
|
|
16326
|
-
notARisks: getNoRiskTags(
|
|
16430
|
+
riskFactor: _corelatedPoolRiskFactors,
|
|
16431
|
+
netRisk: _corelatedPoolRiskFactors.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _corelatedPoolRiskFactors.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16432
|
+
notARisks: getNoRiskTags(_corelatedPoolRiskFactors)
|
|
16327
16433
|
},
|
|
16328
16434
|
apyMethodology: "APY based on 7-day historical performance, including fees and rewards.",
|
|
16329
16435
|
additionalInfo: {
|
|
@@ -16339,15 +16445,10 @@ var xSTRKSTRK = {
|
|
|
16339
16445
|
customShouldRebalance: async (currentPrice) => true,
|
|
16340
16446
|
minWaitHours: 24,
|
|
16341
16447
|
direction: "uponly"
|
|
16342
|
-
}
|
|
16448
|
+
},
|
|
16449
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "STRK")
|
|
16343
16450
|
},
|
|
16344
|
-
faqs:
|
|
16345
|
-
...faqs2,
|
|
16346
|
-
{
|
|
16347
|
-
question: "Why might I see a negative APY?",
|
|
16348
|
-
answer: "A negative APY can occur when xSTRK's price drops on DEXes. This is usually temporary and tends to recover within a few days or a week."
|
|
16349
|
-
}
|
|
16350
|
-
],
|
|
16451
|
+
faqs: getLSTFAQs("xSTRK"),
|
|
16351
16452
|
points: [{
|
|
16352
16453
|
multiplier: 1,
|
|
16353
16454
|
logo: "https://endur.fi/favicon.ico",
|
|
@@ -16356,68 +16457,237 @@ var xSTRKSTRK = {
|
|
|
16356
16457
|
contractDetails: [],
|
|
16357
16458
|
investmentSteps: []
|
|
16358
16459
|
};
|
|
16359
|
-
var
|
|
16460
|
+
var lstStrategies = [
|
|
16360
16461
|
xSTRKSTRK,
|
|
16361
16462
|
{
|
|
16362
16463
|
...xSTRKSTRK,
|
|
16464
|
+
name: "Ekubo xWBTC/WBTC",
|
|
16465
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16466
|
+
address: ContractAddr.from(
|
|
16467
|
+
"0x2ea99b4971d3c277fa4a9b4beb7d4d7d169e683393a29eef263d5d57b4380a"
|
|
16468
|
+
),
|
|
16469
|
+
launchBlock: 2338309,
|
|
16470
|
+
// must be same order as poolKey token0 and token1
|
|
16471
|
+
depositTokens: [
|
|
16472
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
16473
|
+
Global.getDefaultTokens().find((t) => t.symbol === "xWBTC")
|
|
16474
|
+
],
|
|
16475
|
+
additionalInfo: {
|
|
16476
|
+
...xSTRKSTRK.additionalInfo,
|
|
16477
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
16478
|
+
lstContract: Global.getDefaultTokens().find((t) => t.symbol === "xWBTC").address
|
|
16479
|
+
},
|
|
16480
|
+
faqs: getLSTFAQs("xWBTC"),
|
|
16481
|
+
points: [],
|
|
16482
|
+
contractDetails: [],
|
|
16483
|
+
investmentSteps: []
|
|
16484
|
+
},
|
|
16485
|
+
{
|
|
16486
|
+
...xSTRKSTRK,
|
|
16487
|
+
name: "Ekubo xtBTC/tBTC",
|
|
16488
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16489
|
+
address: ContractAddr.from(
|
|
16490
|
+
"0x785dc3dfc4e80ef2690a99512481e3ed3a5266180adda5a47e856245d68a4af"
|
|
16491
|
+
),
|
|
16492
|
+
launchBlock: 2344809,
|
|
16493
|
+
// must be same order as poolKey token0 and token1
|
|
16494
|
+
depositTokens: [
|
|
16495
|
+
Global.getDefaultTokens().find((t) => t.symbol === "xtBTC"),
|
|
16496
|
+
Global.getDefaultTokens().find((t) => t.symbol === "tBTC")
|
|
16497
|
+
],
|
|
16498
|
+
additionalInfo: {
|
|
16499
|
+
...xSTRKSTRK.additionalInfo,
|
|
16500
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "tBTC"),
|
|
16501
|
+
lstContract: Global.getDefaultTokens().find((t) => t.symbol === "xtBTC").address
|
|
16502
|
+
},
|
|
16503
|
+
faqs: getLSTFAQs("xtBTC"),
|
|
16504
|
+
points: [],
|
|
16505
|
+
contractDetails: [],
|
|
16506
|
+
investmentSteps: []
|
|
16507
|
+
},
|
|
16508
|
+
{
|
|
16509
|
+
...xSTRKSTRK,
|
|
16510
|
+
name: "Ekubo xsBTC/solvBTC",
|
|
16511
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16512
|
+
address: ContractAddr.from(
|
|
16513
|
+
"0x3af1c7faa7c464cf2c494e988972ad1939f1103dbfb6e47e9bf0c47e49b14ef"
|
|
16514
|
+
),
|
|
16515
|
+
launchBlock: 2344809,
|
|
16516
|
+
// must be same order as poolKey token0 and token1
|
|
16517
|
+
depositTokens: [
|
|
16518
|
+
Global.getDefaultTokens().find((t) => t.symbol === "xsBTC"),
|
|
16519
|
+
Global.getDefaultTokens().find((t) => t.symbol === "solvBTC")
|
|
16520
|
+
],
|
|
16521
|
+
additionalInfo: {
|
|
16522
|
+
...xSTRKSTRK.additionalInfo,
|
|
16523
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "solvBTC"),
|
|
16524
|
+
lstContract: Global.getDefaultTokens().find((t) => t.symbol === "xsBTC").address
|
|
16525
|
+
},
|
|
16526
|
+
faqs: getLSTFAQs("xsBTC"),
|
|
16527
|
+
points: [],
|
|
16528
|
+
contractDetails: [],
|
|
16529
|
+
investmentSteps: []
|
|
16530
|
+
}
|
|
16531
|
+
];
|
|
16532
|
+
var ETHUSDCRe7Strategy = {
|
|
16533
|
+
...xSTRKSTRK,
|
|
16534
|
+
name: "Ekubo ETH/USDC",
|
|
16535
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16536
|
+
address: ContractAddr.from(
|
|
16537
|
+
"0x160d8fa4569ef6a12e6bf47cb943d7b5ebba8a41a69a14c1d943050ba5ff947"
|
|
16538
|
+
),
|
|
16539
|
+
launchBlock: 1504232,
|
|
16540
|
+
// must be same order as poolKey token0 and token1
|
|
16541
|
+
depositTokens: [
|
|
16542
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH"),
|
|
16543
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16544
|
+
],
|
|
16545
|
+
additionalInfo: {
|
|
16546
|
+
newBounds: "Managed by Re7",
|
|
16547
|
+
truePrice: 1,
|
|
16548
|
+
feeBps: 1e3,
|
|
16549
|
+
rebalanceConditions: {
|
|
16550
|
+
customShouldRebalance: async (currentPrice) => currentPrice > 0.99 && currentPrice < 1.01,
|
|
16551
|
+
minWaitHours: 6,
|
|
16552
|
+
direction: "any"
|
|
16553
|
+
},
|
|
16554
|
+
quoteAsset: Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16555
|
+
},
|
|
16556
|
+
faqs: [
|
|
16557
|
+
...faqs2,
|
|
16558
|
+
{
|
|
16559
|
+
question: "Who is the curator of this strategy?",
|
|
16560
|
+
answer: /* @__PURE__ */ jsxs2("div", { children: [
|
|
16561
|
+
"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 ",
|
|
16562
|
+
/* @__PURE__ */ jsx3("a", { href: "https://www.re7labs.xyz", style: { textDecoration: "underline", marginLeft: "2px" }, target: "_blank", children: "here" }),
|
|
16563
|
+
"."
|
|
16564
|
+
] })
|
|
16565
|
+
}
|
|
16566
|
+
],
|
|
16567
|
+
risk: highRisk,
|
|
16568
|
+
points: [],
|
|
16569
|
+
curator: { name: "Re7 Labs", logo: "https://www.re7labs.xyz/favicon.ico" }
|
|
16570
|
+
};
|
|
16571
|
+
var RE7Strategies = [
|
|
16572
|
+
ETHUSDCRe7Strategy,
|
|
16573
|
+
{
|
|
16574
|
+
...ETHUSDCRe7Strategy,
|
|
16363
16575
|
name: "Ekubo USDC/USDT",
|
|
16364
16576
|
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16365
16577
|
address: ContractAddr.from(
|
|
16366
|
-
"
|
|
16578
|
+
"0x3a4f8debaf12af97bb911099bc011d63d6c208d4c5ba8e15d7f437785b0aaa2"
|
|
16367
16579
|
),
|
|
16368
|
-
launchBlock:
|
|
16580
|
+
launchBlock: 1506139,
|
|
16369
16581
|
// must be same order as poolKey token0 and token1
|
|
16370
16582
|
depositTokens: [
|
|
16371
16583
|
Global.getDefaultTokens().find((t) => t.symbol === "USDC"),
|
|
16372
16584
|
Global.getDefaultTokens().find((t) => t.symbol === "USDT")
|
|
16373
16585
|
],
|
|
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
|
-
}
|
|
16586
|
+
risk: xSTRKSTRK.risk
|
|
16387
16587
|
},
|
|
16388
16588
|
{
|
|
16389
|
-
...
|
|
16589
|
+
...ETHUSDCRe7Strategy,
|
|
16390
16590
|
name: "Ekubo STRK/USDC",
|
|
16391
16591
|
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16392
16592
|
address: ContractAddr.from(
|
|
16393
|
-
"
|
|
16593
|
+
"0x351b36d0d9d8b40010658825adeeddb1397436cd41acd0ff6c6e23aaa8b5b30"
|
|
16394
16594
|
),
|
|
16395
|
-
launchBlock:
|
|
16595
|
+
launchBlock: 1504079,
|
|
16396
16596
|
// must be same order as poolKey token0 and token1
|
|
16397
16597
|
depositTokens: [
|
|
16398
16598
|
Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
16399
16599
|
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16400
16600
|
],
|
|
16401
|
-
|
|
16402
|
-
|
|
16403
|
-
|
|
16404
|
-
|
|
16405
|
-
|
|
16406
|
-
|
|
16407
|
-
|
|
16408
|
-
|
|
16409
|
-
|
|
16410
|
-
|
|
16601
|
+
risk: highRisk
|
|
16602
|
+
},
|
|
16603
|
+
{
|
|
16604
|
+
...ETHUSDCRe7Strategy,
|
|
16605
|
+
name: "Ekubo STRK/ETH",
|
|
16606
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16607
|
+
address: ContractAddr.from(
|
|
16608
|
+
"0x4ce3024b0ee879009112d7b0e073f8a87153dd35b029347d4247ffe48d28f51"
|
|
16609
|
+
),
|
|
16610
|
+
launchBlock: 1504149,
|
|
16611
|
+
// must be same order as poolKey token0 and token1
|
|
16612
|
+
depositTokens: [
|
|
16613
|
+
Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
16614
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH")
|
|
16615
|
+
],
|
|
16616
|
+
risk: highRisk
|
|
16617
|
+
},
|
|
16618
|
+
{
|
|
16619
|
+
...ETHUSDCRe7Strategy,
|
|
16620
|
+
name: "Ekubo WBTC/USDC",
|
|
16621
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16622
|
+
address: ContractAddr.from(
|
|
16623
|
+
"0x2bcaef2eb7706875a5fdc6853dd961a0590f850bc3a031c59887189b5e84ba1"
|
|
16624
|
+
),
|
|
16625
|
+
launchBlock: 1506144,
|
|
16626
|
+
// must be same order as poolKey token0 and token1
|
|
16627
|
+
depositTokens: [
|
|
16628
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
16629
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16630
|
+
],
|
|
16631
|
+
risk: mediumRisk
|
|
16632
|
+
},
|
|
16633
|
+
{
|
|
16634
|
+
...ETHUSDCRe7Strategy,
|
|
16635
|
+
name: "Ekubo tBTC/USDC",
|
|
16636
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16637
|
+
address: ContractAddr.from(
|
|
16638
|
+
"0x4aad891a2d4432fba06b6558631bb13f6bbd7f6f33ab8c3111e344889ea4456"
|
|
16639
|
+
),
|
|
16640
|
+
launchBlock: 1501764,
|
|
16641
|
+
// must be same order as poolKey token0 and token1
|
|
16642
|
+
depositTokens: [
|
|
16643
|
+
Global.getDefaultTokens().find((t) => t.symbol === "tBTC"),
|
|
16644
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16645
|
+
],
|
|
16646
|
+
risk: mediumRisk
|
|
16647
|
+
},
|
|
16648
|
+
{
|
|
16649
|
+
...ETHUSDCRe7Strategy,
|
|
16650
|
+
name: "Ekubo WBTC/ETH",
|
|
16651
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16652
|
+
address: ContractAddr.from(
|
|
16653
|
+
"0x1c9232b8186d9317652f05055615f18a120c2ad9e5ee96c39e031c257fb945b"
|
|
16654
|
+
),
|
|
16655
|
+
launchBlock: 1506145,
|
|
16656
|
+
// must be same order as poolKey token0 and token1
|
|
16657
|
+
depositTokens: [
|
|
16658
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
16659
|
+
Global.getDefaultTokens().find((t) => t.symbol === "ETH")
|
|
16660
|
+
],
|
|
16661
|
+
risk: mediumRisk
|
|
16662
|
+
},
|
|
16663
|
+
{
|
|
16664
|
+
...ETHUSDCRe7Strategy,
|
|
16665
|
+
name: "Ekubo WBTC/STRK",
|
|
16666
|
+
description: /* @__PURE__ */ jsx3(Fragment2, {}),
|
|
16667
|
+
address: ContractAddr.from(
|
|
16668
|
+
"0x1248e385c23a929a015ec298a26560fa7745bbd6e41a886550e337b02714b1b"
|
|
16669
|
+
),
|
|
16670
|
+
launchBlock: 1506147,
|
|
16671
|
+
// must be same order as poolKey token0 and token1
|
|
16672
|
+
depositTokens: [
|
|
16673
|
+
Global.getDefaultTokens().find((t) => t.symbol === "WBTC"),
|
|
16674
|
+
Global.getDefaultTokens().find((t) => t.symbol === "STRK")
|
|
16675
|
+
],
|
|
16676
|
+
risk: highRisk
|
|
16411
16677
|
}
|
|
16412
16678
|
];
|
|
16679
|
+
var EkuboCLVaultStrategies = [
|
|
16680
|
+
...[lstStrategies[0]],
|
|
16681
|
+
...RE7Strategies
|
|
16682
|
+
];
|
|
16413
16683
|
EkuboCLVaultStrategies.forEach((s) => {
|
|
16414
16684
|
s.contractDetails = [
|
|
16415
16685
|
{
|
|
16416
16686
|
address: s.address,
|
|
16417
16687
|
name: "Vault",
|
|
16418
16688
|
sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/tree/main/src/strategies/cl_vault"
|
|
16419
|
-
}
|
|
16420
|
-
...COMMON_CONTRACTS
|
|
16689
|
+
}
|
|
16690
|
+
// ...COMMON_CONTRACTS
|
|
16421
16691
|
];
|
|
16422
16692
|
s.docs = "https://docs.troves.fi/p/ekubo-cl-vaults";
|
|
16423
16693
|
s.description = /* @__PURE__ */ jsxs2("div", { children: [
|
|
@@ -16438,7 +16708,11 @@ EkuboCLVaultStrategies.forEach((s) => {
|
|
|
16438
16708
|
/* @__PURE__ */ jsx3("h4", { style: { fontWeight: "bold" }, children: "Key points to note:" }),
|
|
16439
16709
|
/* @__PURE__ */ jsxs2("div", { style: { display: "flex", flexDirection: "column", gap: "10px", color: "var(--chakra-colors-text_secondary)" }, children: [
|
|
16440
16710
|
/* @__PURE__ */ jsx3("p", { style: {}, children: "1. During withdrawal, you may receive either or both tokens depending on market conditions and prevailing prices." }),
|
|
16441
|
-
s.
|
|
16711
|
+
s.additionalInfo.lstContract && /* @__PURE__ */ jsxs2("p", { style: {}, children: [
|
|
16712
|
+
"2. Sometimes you might see a negative APY \u2014 this is usually not a big deal. It happens when ",
|
|
16713
|
+
s.name.split(" ")[1].split("/")[0],
|
|
16714
|
+
"'s price drops on DEXes, but things typically bounce back within a few days or a week."
|
|
16715
|
+
] })
|
|
16442
16716
|
] })
|
|
16443
16717
|
] })
|
|
16444
16718
|
] });
|
|
@@ -18388,7 +18662,7 @@ var endurProtocol = {
|
|
|
18388
18662
|
name: "Endur",
|
|
18389
18663
|
logo: "https://app.endur.fi/logo.png"
|
|
18390
18664
|
};
|
|
18391
|
-
var
|
|
18665
|
+
var _riskFactor2 = [
|
|
18392
18666
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by CSC" },
|
|
18393
18667
|
{ 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
18668
|
{ 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 +18737,9 @@ var SenseiStrategies = [
|
|
|
18463
18737
|
protocols: [endurProtocol, vesuProtocol],
|
|
18464
18738
|
maxTVL: new Web3Number("1500000", 18),
|
|
18465
18739
|
risk: {
|
|
18466
|
-
riskFactor:
|
|
18467
|
-
netRisk:
|
|
18468
|
-
notARisks: getNoRiskTags(
|
|
18740
|
+
riskFactor: _riskFactor2,
|
|
18741
|
+
netRisk: _riskFactor2.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor2.reduce((acc, curr) => acc + curr.weight, 0),
|
|
18742
|
+
notARisks: getNoRiskTags(_riskFactor2)
|
|
18469
18743
|
},
|
|
18470
18744
|
additionalInfo: {
|
|
18471
18745
|
mainToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
@@ -21220,7 +21494,7 @@ var VesuAdapter = class _VesuAdapter extends BaseAdapter {
|
|
|
21220
21494
|
let pools = [];
|
|
21221
21495
|
try {
|
|
21222
21496
|
const data = await getAPIUsingHeadlessBrowser(
|
|
21223
|
-
|
|
21497
|
+
`${ENDPOINTS.VESU_BASE}/pools`
|
|
21224
21498
|
);
|
|
21225
21499
|
pools = data.data;
|
|
21226
21500
|
for (const pool of vesu_pools_default.data) {
|
|
@@ -24079,7 +24353,7 @@ function getLooperSettings(token1Symbol, token2Symbol, vaultSettings, pool1, poo
|
|
|
24079
24353
|
vaultSettings.leafAdapters.push(commonAdapter.getAvnuAdapter(STRKToken.address, USDCToken.address, "avnu_swap_rewards" /* AVNU_SWAP_REWARDS */).bind(commonAdapter));
|
|
24080
24354
|
return vaultSettings;
|
|
24081
24355
|
}
|
|
24082
|
-
var
|
|
24356
|
+
var _riskFactor3 = [
|
|
24083
24357
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by Zellic" },
|
|
24084
24358
|
{ type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1.5, weight: 50, reason: "Liquidation risk is mitigated by stable price feed on Starknet" },
|
|
24085
24359
|
{ type: "Technical Risk" /* TECHNICAL_RISK */, value: 1, weight: 50, reason: "Technical failures like risk monitoring failures" }
|
|
@@ -24283,9 +24557,9 @@ var UniversalStrategies = [
|
|
|
24283
24557
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "USDC")],
|
|
24284
24558
|
additionalInfo: getLooperSettings("USDC", "ETH", usdcVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24285
24559
|
risk: {
|
|
24286
|
-
riskFactor:
|
|
24287
|
-
netRisk:
|
|
24288
|
-
notARisks: getNoRiskTags(
|
|
24560
|
+
riskFactor: _riskFactor3,
|
|
24561
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24562
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24289
24563
|
},
|
|
24290
24564
|
protocols: [Protocols.VESU],
|
|
24291
24565
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
@@ -24302,9 +24576,9 @@ var UniversalStrategies = [
|
|
|
24302
24576
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "WBTC")],
|
|
24303
24577
|
additionalInfo: getLooperSettings("WBTC", "ETH", wbtcVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24304
24578
|
risk: {
|
|
24305
|
-
riskFactor:
|
|
24306
|
-
netRisk:
|
|
24307
|
-
notARisks: getNoRiskTags(
|
|
24579
|
+
riskFactor: _riskFactor3,
|
|
24580
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24581
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24308
24582
|
},
|
|
24309
24583
|
protocols: [Protocols.VESU],
|
|
24310
24584
|
maxTVL: Web3Number.fromWei(0, 8),
|
|
@@ -24321,9 +24595,9 @@ var UniversalStrategies = [
|
|
|
24321
24595
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "ETH")],
|
|
24322
24596
|
additionalInfo: getLooperSettings("ETH", "WBTC", ethVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24323
24597
|
risk: {
|
|
24324
|
-
riskFactor:
|
|
24325
|
-
netRisk:
|
|
24326
|
-
notARisks: getNoRiskTags(
|
|
24598
|
+
riskFactor: _riskFactor3,
|
|
24599
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24600
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24327
24601
|
},
|
|
24328
24602
|
protocols: [Protocols.VESU],
|
|
24329
24603
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
@@ -24340,9 +24614,9 @@ var UniversalStrategies = [
|
|
|
24340
24614
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "STRK")],
|
|
24341
24615
|
additionalInfo: getLooperSettings("STRK", "ETH", strkVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24342
24616
|
risk: {
|
|
24343
|
-
riskFactor:
|
|
24344
|
-
netRisk:
|
|
24345
|
-
notARisks: getNoRiskTags(
|
|
24617
|
+
riskFactor: _riskFactor3,
|
|
24618
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24619
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24346
24620
|
},
|
|
24347
24621
|
protocols: [Protocols.VESU],
|
|
24348
24622
|
maxTVL: Web3Number.fromWei(0, 18),
|
|
@@ -24359,9 +24633,9 @@ var UniversalStrategies = [
|
|
|
24359
24633
|
depositTokens: [Global.getDefaultTokens().find((token) => token.symbol === "USDT")],
|
|
24360
24634
|
additionalInfo: getLooperSettings("USDT", "ETH", usdtVaultSettings, VesuPools.Genesis, VesuPools.Genesis),
|
|
24361
24635
|
risk: {
|
|
24362
|
-
riskFactor:
|
|
24363
|
-
netRisk:
|
|
24364
|
-
notARisks: getNoRiskTags(
|
|
24636
|
+
riskFactor: _riskFactor3,
|
|
24637
|
+
netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
|
|
24638
|
+
notARisks: getNoRiskTags(_riskFactor3)
|
|
24365
24639
|
},
|
|
24366
24640
|
protocols: [Protocols.VESU],
|
|
24367
24641
|
maxTVL: Web3Number.fromWei(0, 6),
|
|
@@ -24377,11 +24651,9 @@ var TelegramNotif = class {
|
|
|
24377
24651
|
constructor(token, shouldPoll) {
|
|
24378
24652
|
this.subscribers = [
|
|
24379
24653
|
// '6820228303',
|
|
24380
|
-
|
|
24381
|
-
|
|
24382
|
-
//
|
|
24383
|
-
"1388729514",
|
|
24384
|
-
// hwashere
|
|
24654
|
+
// '1505578076',
|
|
24655
|
+
// '1356705582', // langs
|
|
24656
|
+
// '1388729514', // hwashere
|
|
24385
24657
|
"985902592"
|
|
24386
24658
|
];
|
|
24387
24659
|
this.bot = new TelegramBot(token, { polling: shouldPoll });
|