@strkfarm/sdk 1.0.47 → 1.0.51

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.
@@ -17293,7 +17293,8 @@ var strkfarm_risk_engine = (() => {
17293
17293
  getMainnetConfig: () => getMainnetConfig,
17294
17294
  getNoRiskTags: () => getNoRiskTags,
17295
17295
  getRiskColor: () => getRiskColor,
17296
- getRiskExplaination: () => getRiskExplaination
17296
+ getRiskExplaination: () => getRiskExplaination,
17297
+ highlightTextWithLinks: () => highlightTextWithLinks
17297
17298
  });
17298
17299
 
17299
17300
  // node_modules/.pnpm/axios@1.7.2/node_modules/axios/lib/helpers/bind.js
@@ -36031,7 +36032,7 @@ var strkfarm_risk_engine = (() => {
36031
36032
  var defaultTokens = [{
36032
36033
  name: "Starknet",
36033
36034
  symbol: "STRK",
36034
- logo: "https://assets.strkfarm.com/integrations/tokens/strk.svg",
36035
+ logo: "https://assets.troves.fi/integrations/tokens/strk.svg",
36035
36036
  address: ContractAddr.from("0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d"),
36036
36037
  decimals: 18,
36037
36038
  coingeckId: "starknet",
@@ -36039,7 +36040,7 @@ var strkfarm_risk_engine = (() => {
36039
36040
  }, {
36040
36041
  name: "xSTRK",
36041
36042
  symbol: "xSTRK",
36042
- logo: "https://assets.strkfarm.com/integrations/tokens/xstrk.svg",
36043
+ logo: "https://assets.troves.fi/integrations/tokens/xstrk.svg",
36043
36044
  address: ContractAddr.from("0x028d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a"),
36044
36045
  decimals: 18,
36045
36046
  coingeckId: void 0,
@@ -36047,7 +36048,7 @@ var strkfarm_risk_engine = (() => {
36047
36048
  }, {
36048
36049
  name: "ETH",
36049
36050
  symbol: "ETH",
36050
- logo: "https://assets.strkfarm.com/integrations/tokens/eth.svg",
36051
+ logo: "https://assets.troves.fi/integrations/tokens/eth.svg",
36051
36052
  address: ContractAddr.from("0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7"),
36052
36053
  decimals: 18,
36053
36054
  coingeckId: void 0,
@@ -36055,7 +36056,7 @@ var strkfarm_risk_engine = (() => {
36055
36056
  }, {
36056
36057
  name: "USDC",
36057
36058
  symbol: "USDC",
36058
- logo: "https://assets.strkfarm.com/integrations/tokens/usdc.svg",
36059
+ logo: "https://assets.troves.fi/integrations/tokens/usdc.svg",
36059
36060
  address: ContractAddr.from("0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8"),
36060
36061
  decimals: 6,
36061
36062
  coingeckId: void 0,
@@ -36063,7 +36064,7 @@ var strkfarm_risk_engine = (() => {
36063
36064
  }, {
36064
36065
  name: "USDT",
36065
36066
  symbol: "USDT",
36066
- logo: "https://assets.strkfarm.com/integrations/tokens/usdt.svg",
36067
+ logo: "https://assets.troves.fi/integrations/tokens/usdt.svg",
36067
36068
  address: ContractAddr.from("0x68f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8"),
36068
36069
  decimals: 6,
36069
36070
  coingeckId: void 0,
@@ -36071,7 +36072,7 @@ var strkfarm_risk_engine = (() => {
36071
36072
  }, {
36072
36073
  name: "WBTC",
36073
36074
  symbol: "WBTC",
36074
- logo: "https://assets.strkfarm.com/integrations/tokens/wbtc.svg",
36075
+ logo: "https://assets.troves.fi/integrations/tokens/wbtc.svg",
36075
36076
  address: ContractAddr.from("0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac"),
36076
36077
  decimals: 8,
36077
36078
  coingeckId: void 0,
@@ -36095,7 +36096,7 @@ var strkfarm_risk_engine = (() => {
36095
36096
  }
36096
36097
  static async getTokens() {
36097
36098
  if (tokens.length) return tokens;
36098
- const data = await axios_default.get("https://assets.strkfarm.com/integrations/tokens.json");
36099
+ const data = await axios_default.get("https://assets.troves.fi/integrations/tokens.json");
36099
36100
  const tokensData = data.data.content;
36100
36101
  tokensData.forEach((token) => {
36101
36102
  if (!token.tags.includes("AVNU") || !token.tags.includes("Verified")) {
@@ -36623,7 +36624,7 @@ var strkfarm_risk_engine = (() => {
36623
36624
  }
36624
36625
  async getPriceFromMyAPI(tokenSymbol) {
36625
36626
  logger.verbose(`getPrice from redis: ${tokenSymbol}`);
36626
- const endpoint = "https://app.strkfarm.com";
36627
+ const endpoint = "https://app.troves.fi";
36627
36628
  const url = `${endpoint}/api/price/${tokenSymbol}`;
36628
36629
  const priceInfoRes = await fetch(url);
36629
36630
  const priceInfo = await priceInfoRes.json();
@@ -38183,7 +38184,8 @@ var strkfarm_risk_engine = (() => {
38183
38184
  }
38184
38185
  };
38185
38186
 
38186
- // src/interfaces/common.ts
38187
+ // src/interfaces/common.tsx
38188
+ var import_jsx_runtime = __toESM(require_jsx_runtime());
38187
38189
  var RiskType = /* @__PURE__ */ ((RiskType2) => {
38188
38190
  RiskType2["MARKET_RISK"] = "Market Risk";
38189
38191
  RiskType2["IMPERMANENT_LOSS"] = "Impermanent Loss Risk";
@@ -38239,8 +38241,8 @@ var strkfarm_risk_engine = (() => {
38239
38241
  };
38240
38242
  var getRiskColor = (risk) => {
38241
38243
  const value = risk.value;
38242
- if (value === 0) return "green";
38243
- if (value < 2.5) return "yellow";
38244
+ if (value <= 1) return "light_green_2";
38245
+ if (value < 3) return "yellow";
38244
38246
  return "red";
38245
38247
  };
38246
38248
  var getNoRiskTags = (risks) => {
@@ -38249,8 +38251,20 @@ var strkfarm_risk_engine = (() => {
38249
38251
  (risk) => !risks.map((risk2) => risk2.type).includes(risk)
38250
38252
  );
38251
38253
  const mergedUnique = [.../* @__PURE__ */ new Set([...noRisks1, ...noRisks2])];
38252
- return mergedUnique.map((risk) => `No ${risk}`);
38254
+ return mergedUnique;
38253
38255
  };
38256
+ function highlightTextWithLinks(put, highlights) {
38257
+ const escapeRegExp = (text) => text.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
38258
+ const pattern = new RegExp(
38259
+ `(${highlights.map((m) => escapeRegExp(m.highlight)).join("|")})`,
38260
+ "gi"
38261
+ );
38262
+ const parts = put.split(pattern);
38263
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: parts.map((part, i) => {
38264
+ const match = highlights.find((m) => m.highlight.toLowerCase() === part.toLowerCase());
38265
+ return match ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href: match.link, target: "_blank", style: { color: "var(--chakra-colors-white)", background: "var(--chakra-colors-highlight)" }, children: part }, i) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: part }, i);
38266
+ }) });
38267
+ }
38254
38268
 
38255
38269
  // src/interfaces/initializable.ts
38256
38270
  var Initializable = class {
@@ -45366,8 +45380,15 @@ var strkfarm_risk_engine = (() => {
45366
45380
  ]
45367
45381
  };
45368
45382
 
45383
+ // src/strategies/constants.ts
45384
+ var COMMON_CONTRACTS = [{
45385
+ address: ContractAddr.from("0x0636a3f51cc37f5729e4da4b1de6a8549a28f3c0d5bf3b17f150971e451ff9c2"),
45386
+ name: "Access Controller",
45387
+ sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/blob/main/src/components/accessControl.cairo"
45388
+ }];
45389
+
45369
45390
  // src/strategies/vesu-rebalance.tsx
45370
- var import_jsx_runtime = __toESM(require_jsx_runtime());
45391
+ var import_jsx_runtime2 = __toESM(require_jsx_runtime());
45371
45392
  var VesuRebalance = class _VesuRebalance extends BaseStrategy {
45372
45393
  // 10000 bps = 100%
45373
45394
  /**
@@ -46008,11 +46029,11 @@ var strkfarm_risk_engine = (() => {
46008
46029
  logo: "https://static-assets-8zct.onrender.com/integrations/vesu/logo.png"
46009
46030
  };
46010
46031
  var _riskFactor = [
46011
- { type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25 },
46012
- { type: "Counterparty Risk" /* COUNTERPARTY_RISK */, value: 1, weight: 50 },
46013
- { type: "Oracle Risk" /* ORACLE_RISK */, value: 0.5, weight: 25 }
46032
+ { type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by CSC" },
46033
+ { type: "Counterparty Risk" /* COUNTERPARTY_RISK */, value: 1, weight: 50, reason: "Reasonable max LTV ratios and Curated by well-known risk managers like Re7" },
46034
+ { type: "Oracle Risk" /* ORACLE_RISK */, value: 0.5, weight: 25, reason: "Uses Pragma price feeds, Most reputable price feed on Starknet" }
46014
46035
  ];
46015
- var AUDIT_URL = "https://assets.strkfarm.com/strkfarm/audit_report_vesu_and_ekubo_strats.pdf";
46036
+ var AUDIT_URL = "https://assets.troves.fi/strkfarm/audit_report_vesu_and_ekubo_strats.pdf";
46016
46037
  var faqs = [
46017
46038
  {
46018
46039
  question: "What is the Vesu Rebalancing Strategy?",
@@ -46048,9 +46069,9 @@ var strkfarm_risk_engine = (() => {
46048
46069
  },
46049
46070
  {
46050
46071
  question: "Is the strategy audited?",
46051
- answer: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
46072
+ answer: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
46052
46073
  "Yes, the strategy has been audited. You can review the audit report in our docs ",
46053
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href: "https://docs.strkfarm.com/p/strategies/vesu-fusion-rebalancing-vaults#technical-details", style: { textDecoration: "underline", marginLeft: "5px" }, children: "Here" }),
46074
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("a", { href: "https://docs.troves.fi/p/strategies/vesu-fusion-rebalancing-vaults#technical-details", style: { textDecoration: "underline", marginLeft: "5px" }, children: "Here" }),
46054
46075
  "."
46055
46076
  ] })
46056
46077
  }
@@ -46058,7 +46079,7 @@ var strkfarm_risk_engine = (() => {
46058
46079
  var VesuRebalanceStrategies = [
46059
46080
  {
46060
46081
  name: "Vesu Fusion STRK",
46061
- description: _description.replace("{{TOKEN}}", "STRK"),
46082
+ description: _description,
46062
46083
  address: ContractAddr.from(
46063
46084
  "0x7fb5bcb8525954a60fde4e8fb8220477696ce7117ef264775a1770e23571929"
46064
46085
  ),
@@ -46078,7 +46099,9 @@ var strkfarm_risk_engine = (() => {
46078
46099
  additionalInfo: {
46079
46100
  feeBps: 1e3
46080
46101
  },
46081
- faqs
46102
+ faqs,
46103
+ contractDetails: [],
46104
+ investmentSteps: []
46082
46105
  },
46083
46106
  {
46084
46107
  name: "Vesu Fusion ETH",
@@ -46102,7 +46125,9 @@ var strkfarm_risk_engine = (() => {
46102
46125
  additionalInfo: {
46103
46126
  feeBps: 1e3
46104
46127
  },
46105
- faqs
46128
+ faqs,
46129
+ contractDetails: [],
46130
+ investmentSteps: []
46106
46131
  },
46107
46132
  {
46108
46133
  name: "Vesu Fusion USDC",
@@ -46126,7 +46151,9 @@ var strkfarm_risk_engine = (() => {
46126
46151
  additionalInfo: {
46127
46152
  feeBps: 1e3
46128
46153
  },
46129
- faqs
46154
+ faqs,
46155
+ contractDetails: [],
46156
+ investmentSteps: []
46130
46157
  },
46131
46158
  {
46132
46159
  name: "Vesu Fusion USDT",
@@ -46150,7 +46177,9 @@ var strkfarm_risk_engine = (() => {
46150
46177
  additionalInfo: {
46151
46178
  feeBps: 1e3
46152
46179
  },
46153
- faqs
46180
+ faqs,
46181
+ contractDetails: [],
46182
+ investmentSteps: []
46154
46183
  // }, {
46155
46184
  // name: 'Vesu Fusion WBTC',
46156
46185
  // description: _description.replace('{{TOKEN}}', 'WBTC'),
@@ -46169,6 +46198,32 @@ var strkfarm_risk_engine = (() => {
46169
46198
  // },
46170
46199
  }
46171
46200
  ];
46201
+ VesuRebalanceStrategies.forEach((s) => {
46202
+ s.contractDetails = [
46203
+ {
46204
+ address: s.address,
46205
+ name: "Vault",
46206
+ sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/tree/main/src/strategies/vesu_rebalance"
46207
+ },
46208
+ ...COMMON_CONTRACTS
46209
+ ];
46210
+ s.docs = "https://docs.troves.fi/p/strategies/vesu-fusion-rebalancing-vaults";
46211
+ s.description = highlightTextWithLinks(
46212
+ _description.replace("{{TOKEN}}", s.depositTokens[0].symbol),
46213
+ [{
46214
+ highlight: "Vesu pools",
46215
+ link: "https://vesu.xyz/pools"
46216
+ }, {
46217
+ highlight: "Defi spring STRK Rewards",
46218
+ link: "https://defispring.starknet.io/"
46219
+ }]
46220
+ );
46221
+ s.investmentSteps = [
46222
+ "Split the amount and Supply to configured Vesu pools",
46223
+ "Monitor and Rebalance funds across multiple Vesu pools to maximize yield",
46224
+ "Harvest and supply Defi Spring STRK rewards every week (Auto-compound)"
46225
+ ];
46226
+ });
46172
46227
 
46173
46228
  // src/data/cl-vault.abi.json
46174
46229
  var cl_vault_abi_default = [
@@ -51070,7 +51125,7 @@ var strkfarm_risk_engine = (() => {
51070
51125
  ];
51071
51126
 
51072
51127
  // src/strategies/ekubo-cl-vault.tsx
51073
- var import_jsx_runtime2 = __toESM(require_jsx_runtime());
51128
+ var import_jsx_runtime3 = __toESM(require_jsx_runtime());
51074
51129
  var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
51075
51130
  /**
51076
51131
  * Creates a new VesuRebalance strategy instance.
@@ -51480,17 +51535,13 @@ var strkfarm_risk_engine = (() => {
51480
51535
  const token0Info = await Global.getTokenInfoFromAddr(poolKey.token0);
51481
51536
  const token1Info = await Global.getTokenInfoFromAddr(poolKey.token1);
51482
51537
  const price = sqrtRatio * sqrtRatio * 10 ** token0Info.decimals / 10 ** token1Info.decimals;
51483
- const tick = _EkuboCLVault.priceToTick(
51484
- price,
51485
- true,
51486
- Number(poolKey.tick_spacing)
51487
- );
51538
+ const tick = priceInfo.tick;
51488
51539
  console.log(
51489
51540
  `EkuboCLVault: getCurrentPrice: blockIdentifier: ${blockIdentifier}, price: ${price}, tick: ${tick.mag}, ${tick.sign}`
51490
51541
  );
51491
51542
  return {
51492
51543
  price,
51493
- tick: tick.mag * (tick.sign == 0 ? 1 : -1),
51544
+ tick: Number(tick.mag) * (tick.sign ? -1 : 1),
51494
51545
  sqrtRatio: priceInfo.sqrt_ratio.toString()
51495
51546
  };
51496
51547
  }
@@ -52137,19 +52188,20 @@ var strkfarm_risk_engine = (() => {
52137
52188
  return [baseFlow, rebalanceFlow];
52138
52189
  }
52139
52190
  };
52140
- var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and DeFi Spring rewards are automatically compounded back into the strategy. In return, you receive an ERC-20 token representing your share of the strategy. The APY is calculated based on 7-day historical performance.";
52191
+ var _description2 = "Deploys your {{POOL_NAME}} into an Ekubo liquidity pool, automatically rebalancing positions around the current price to optimize yield and reduce the need for manual adjustments. Trading fees and DeFi Spring rewards are automatically compounded back into the strategy. In return, you receive an ERC-20 token representing your share of the strategy";
52141
52192
  var _protocol2 = {
52142
52193
  name: "Ekubo",
52143
52194
  logo: "https://app.ekubo.org/favicon.ico"
52144
52195
  };
52145
52196
  var _riskFactor2 = [
52146
- { type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25 },
52147
- { type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 1, weight: 75 }
52197
+ { type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 34, reason: "Audited smart contracts" },
52198
+ { type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 0.75, weight: 33, reason: "Low risk due to co-related assets" },
52199
+ { type: "Market Risk" /* MARKET_RISK */, value: 0.75, weight: 33, reason: "Low risk due to co-related assets" }
52148
52200
  ];
52149
52201
  var _riskFactorStable = [
52150
52202
  { type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25 }
52151
52203
  ];
52152
- var AUDIT_URL2 = "https://assets.strkfarm.com/strkfarm/audit_report_vesu_and_ekubo_strats.pdf";
52204
+ var AUDIT_URL2 = "https://assets.troves.fi/strkfarm/audit_report_vesu_and_ekubo_strats.pdf";
52153
52205
  var faqs2 = [
52154
52206
  {
52155
52207
  question: "What is the Ekubo CL Vault strategy?",
@@ -52165,13 +52217,13 @@ var strkfarm_risk_engine = (() => {
52165
52217
  },
52166
52218
  {
52167
52219
  question: "Is the strategy audited?",
52168
- answer: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
52220
+ answer: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
52169
52221
  "Yes, the strategy has been audited. You can review the audit report in our docs",
52170
52222
  " ",
52171
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
52223
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
52172
52224
  "a",
52173
52225
  {
52174
- href: "https://docs.strkfarm.com/p/ekubo-cl-vaults#technical-details",
52226
+ href: "https://docs.troves.fi/p/ekubo-cl-vaults#technical-details",
52175
52227
  style: { textDecoration: "underline", marginLeft: "5px" },
52176
52228
  children: "Here"
52177
52229
  }
@@ -52182,23 +52234,7 @@ var strkfarm_risk_engine = (() => {
52182
52234
  ];
52183
52235
  var xSTRKSTRK = {
52184
52236
  name: "Ekubo xSTRK/STRK",
52185
- description: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
52186
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { children: _description2.replace("{{POOL_NAME}}", "xSTRK/STRK") }),
52187
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
52188
- "ul",
52189
- {
52190
- style: {
52191
- marginLeft: "20px",
52192
- listStyle: "circle",
52193
- fontSize: "12px"
52194
- },
52195
- children: [
52196
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("li", { style: { marginTop: "10px" }, children: "During withdrawal, you may receive either or both tokens depending on market conditions and prevailing prices." }),
52197
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("li", { style: { marginTop: "10px" }, children: "Sometimes you might see a negative APY \u2014 this is usually not a big deal. It happens when xSTRK's price drops on DEXes, but things typically bounce back within a few days or a week." })
52198
- ]
52199
- }
52200
- )
52201
- ] }),
52237
+ description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
52202
52238
  address: ContractAddr.from(
52203
52239
  "0x01f083b98674bc21effee29ef443a00c7b9a500fd92cf30341a3da12c73f2324"
52204
52240
  ),
@@ -52244,48 +52280,25 @@ var strkfarm_risk_engine = (() => {
52244
52280
  multiplier: 1,
52245
52281
  logo: "https://endur.fi/favicon.ico",
52246
52282
  toolTip: "This strategy holds xSTRK and STRK tokens. Earn 1x Endur points on your xSTRK portion of Liquidity. STRK portion will earn Endur's DEX Bonus points. Points can be found on endur.fi."
52247
- }]
52283
+ }],
52284
+ contractDetails: [],
52285
+ investmentSteps: []
52248
52286
  };
52249
52287
  var EkuboCLVaultStrategies = [
52250
52288
  xSTRKSTRK,
52251
52289
  {
52290
+ ...xSTRKSTRK,
52252
52291
  name: "Ekubo USDC/USDT",
52253
- description: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
52254
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { children: _description2.replace("{{POOL_NAME}}", "USDC/USDT") }),
52255
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
52256
- "ul",
52257
- {
52258
- style: {
52259
- marginLeft: "20px",
52260
- listStyle: "circle",
52261
- fontSize: "12px"
52262
- },
52263
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("li", { style: { marginTop: "10px" }, children: "During withdrawal, you may receive either or both tokens depending on market conditions and prevailing prices." })
52264
- }
52265
- )
52266
- ] }),
52292
+ description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
52267
52293
  address: ContractAddr.from(
52268
52294
  "0xd647ed735f0db52f2a5502b6e06ed21dc4284a43a36af4b60d3c80fbc56c91"
52269
52295
  ),
52270
52296
  launchBlock: 1385576,
52271
- type: "Other",
52272
52297
  // must be same order as poolKey token0 and token1
52273
52298
  depositTokens: [
52274
52299
  Global.getDefaultTokens().find((t) => t.symbol === "USDC"),
52275
52300
  Global.getDefaultTokens().find((t) => t.symbol === "USDT")
52276
52301
  ],
52277
- protocols: [_protocol2],
52278
- auditUrl: AUDIT_URL2,
52279
- maxTVL: Web3Number.fromWei("0", 6),
52280
- risk: {
52281
- riskFactor: _riskFactorStable,
52282
- netRisk: _riskFactorStable.reduce(
52283
- (acc, curr) => acc + curr.value * curr.weight,
52284
- 0
52285
- ) / _riskFactorStable.reduce((acc, curr) => acc + curr.weight, 0),
52286
- notARisks: getNoRiskTags(_riskFactorStable)
52287
- },
52288
- apyMethodology: "APY based on 7-day historical performance, including fees and rewards.",
52289
52302
  additionalInfo: {
52290
52303
  newBounds: {
52291
52304
  lower: -1,
@@ -52298,51 +52311,71 @@ var strkfarm_risk_engine = (() => {
52298
52311
  minWaitHours: 6,
52299
52312
  direction: "any"
52300
52313
  }
52301
- },
52302
- faqs: [...faqs2]
52303
- }
52304
- // {
52305
- // ...xSTRKSTRK,
52306
- // name: "Ekubo STRK/USDC",
52307
- // description: (
52308
- // <div>
52309
- // <p>{_description.replace("{{POOL_NAME}}", "STRK/USDC")}</p>
52310
- // <ul
52311
- // style={{
52312
- // marginLeft: "20px",
52313
- // listStyle: "circle",
52314
- // fontSize: "12px",
52315
- // }}
52316
- // >
52317
- // <li style={{ marginTop: "10px" }}>
52318
- // During withdrawal, you may receive either or both tokens depending
52319
- // on market conditions and prevailing prices.
52320
- // </li>
52321
- // </ul>
52322
- // </div>
52323
- // ),
52324
- // address: ContractAddr.from(
52325
- // "0xb7bd37121041261446d8eedec618955a4490641034942da688e8cbddea7b23"
52326
- // ),
52327
- // launchBlock: 1492136,
52328
- // // must be same order as poolKey token0 and token1
52329
- // depositTokens: [
52330
- // Global.getDefaultTokens().find((t) => t.symbol === "STRK")!,
52331
- // Global.getDefaultTokens().find((t) => t.symbol === "USDC")!,
52332
- // ],
52333
- // maxTVL: Web3Number.fromWei("0", 6),
52334
- // additionalInfo: {
52335
- // newBounds: "Managed by Re7",
52336
- // feeBps: 1000,
52337
- // rebalanceConditions: {
52338
- // customShouldRebalance: async (currentPrice: number) =>
52339
- // true,
52340
- // minWaitHours: 6,
52341
- // direction: "any",
52342
- // },
52343
- // },
52344
- // },
52314
+ }
52315
+ },
52316
+ {
52317
+ ...xSTRKSTRK,
52318
+ name: "Ekubo STRK/USDC",
52319
+ description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
52320
+ address: ContractAddr.from(
52321
+ "0xb7bd37121041261446d8eedec618955a4490641034942da688e8cbddea7b23"
52322
+ ),
52323
+ launchBlock: 1492136,
52324
+ // must be same order as poolKey token0 and token1
52325
+ depositTokens: [
52326
+ Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
52327
+ Global.getDefaultTokens().find((t) => t.symbol === "USDC")
52328
+ ],
52329
+ maxTVL: Web3Number.fromWei("0", 6),
52330
+ additionalInfo: {
52331
+ newBounds: "Managed by Re7",
52332
+ feeBps: 1e3,
52333
+ rebalanceConditions: {
52334
+ customShouldRebalance: async (currentPrice) => true,
52335
+ minWaitHours: 6,
52336
+ direction: "any"
52337
+ }
52338
+ }
52339
+ }
52345
52340
  ];
52341
+ EkuboCLVaultStrategies.forEach((s) => {
52342
+ s.contractDetails = [
52343
+ {
52344
+ address: s.address,
52345
+ name: "Vault",
52346
+ sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/tree/main/src/strategies/cl_vault"
52347
+ },
52348
+ ...COMMON_CONTRACTS
52349
+ ];
52350
+ s.docs = "https://docs.troves.fi/p/ekubo-cl-vaults";
52351
+ s.description = /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
52352
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { children: highlightTextWithLinks(
52353
+ _description2.replace("{{POOL_NAME}}", s.name.split(" ")[1]),
52354
+ [{
52355
+ highlight: "Ekubo liquidity pool",
52356
+ link: "https://app.ekubo.org/positions"
52357
+ }, {
52358
+ highlight: "DeFi Spring rewards",
52359
+ link: "https://defispring.starknet.io/"
52360
+ }, {
52361
+ highlight: "ERC-20 token",
52362
+ link: "https://www.investopedia.com/news/what-erc20-and-what-does-it-mean-ethereum/"
52363
+ }]
52364
+ ) }),
52365
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { style: { padding: "16px 16px", background: "var(--chakra-colors-mycard_light)", marginTop: "16px", borderRadius: "16px" }, children: [
52366
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h4", { style: { fontWeight: "bold" }, children: "Key points to note:" }),
52367
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "10px", color: "var(--chakra-colors-text_secondary)" }, children: [
52368
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { style: {}, children: "1. During withdrawal, you may receive either or both tokens depending on market conditions and prevailing prices." }),
52369
+ s.name.includes("xSTRK/STRK") && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { style: {}, children: "2. Sometimes you might see a negative APY \u2014 this is usually not a big deal. It happens when xSTRK's price drops on DEXes, but things typically bounce back within a few days or a week." })
52370
+ ] })
52371
+ ] })
52372
+ ] });
52373
+ s.investmentSteps = [
52374
+ "Supply tokens to Ekubo's pool",
52375
+ "Monitor and Rebalance position to optimize yield",
52376
+ "Harvest and supply Defi Spring STRK rewards every week (Auto-compound)"
52377
+ ];
52378
+ });
52346
52379
  return __toCommonJS(index_browser_exports);
52347
52380
  })();
52348
52381
  /*! Bundled license information: