@strkfarm/sdk 1.0.46 → 1.0.49
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 +153 -118
- package/dist/index.browser.mjs +151 -116
- package/dist/index.d.ts +18 -5
- package/dist/index.js +152 -116
- package/dist/index.mjs +149 -114
- package/package.json +2 -2
- package/src/interfaces/{common.ts → common.tsx} +50 -5
- package/src/strategies/constants.ts +7 -0
- package/src/strategies/ekubo-cl-vault.tsx +93 -109
- package/src/strategies/index.ts +1 -1
- package/src/strategies/vesu-rebalance.tsx +54 -11
package/dist/index.js
CHANGED
|
@@ -63,6 +63,7 @@ __export(src_exports, {
|
|
|
63
63
|
getNoRiskTags: () => getNoRiskTags,
|
|
64
64
|
getRiskColor: () => getRiskColor,
|
|
65
65
|
getRiskExplaination: () => getRiskExplaination,
|
|
66
|
+
highlightTextWithLinks: () => highlightTextWithLinks,
|
|
66
67
|
logger: () => logger
|
|
67
68
|
});
|
|
68
69
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -2081,8 +2082,9 @@ var AvnuWrapper = class _AvnuWrapper {
|
|
|
2081
2082
|
}
|
|
2082
2083
|
};
|
|
2083
2084
|
|
|
2084
|
-
// src/interfaces/common.
|
|
2085
|
+
// src/interfaces/common.tsx
|
|
2085
2086
|
var import_starknet5 = require("starknet");
|
|
2087
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
2086
2088
|
var RiskType = /* @__PURE__ */ ((RiskType2) => {
|
|
2087
2089
|
RiskType2["MARKET_RISK"] = "Market Risk";
|
|
2088
2090
|
RiskType2["IMPERMANENT_LOSS"] = "Impermanent Loss Risk";
|
|
@@ -2138,8 +2140,8 @@ var getRiskExplaination = (riskType) => {
|
|
|
2138
2140
|
};
|
|
2139
2141
|
var getRiskColor = (risk) => {
|
|
2140
2142
|
const value = risk.value;
|
|
2141
|
-
if (value
|
|
2142
|
-
if (value <
|
|
2143
|
+
if (value <= 1) return "light_green_2";
|
|
2144
|
+
if (value < 3) return "yellow";
|
|
2143
2145
|
return "red";
|
|
2144
2146
|
};
|
|
2145
2147
|
var getNoRiskTags = (risks) => {
|
|
@@ -2148,8 +2150,20 @@ var getNoRiskTags = (risks) => {
|
|
|
2148
2150
|
(risk) => !risks.map((risk2) => risk2.type).includes(risk)
|
|
2149
2151
|
);
|
|
2150
2152
|
const mergedUnique = [.../* @__PURE__ */ new Set([...noRisks1, ...noRisks2])];
|
|
2151
|
-
return mergedUnique
|
|
2153
|
+
return mergedUnique;
|
|
2152
2154
|
};
|
|
2155
|
+
function highlightTextWithLinks(put, highlights) {
|
|
2156
|
+
const escapeRegExp = (text) => text.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
|
|
2157
|
+
const pattern = new RegExp(
|
|
2158
|
+
`(${highlights.map((m) => escapeRegExp(m.highlight)).join("|")})`,
|
|
2159
|
+
"gi"
|
|
2160
|
+
);
|
|
2161
|
+
const parts = put.split(pattern);
|
|
2162
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: parts.map((part, i) => {
|
|
2163
|
+
const match = highlights.find((m) => m.highlight.toLowerCase() === part.toLowerCase());
|
|
2164
|
+
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);
|
|
2165
|
+
}) });
|
|
2166
|
+
}
|
|
2153
2167
|
|
|
2154
2168
|
// src/interfaces/initializable.ts
|
|
2155
2169
|
var Initializable = class {
|
|
@@ -9271,8 +9285,15 @@ var vesu_pools_default = {
|
|
|
9271
9285
|
]
|
|
9272
9286
|
};
|
|
9273
9287
|
|
|
9288
|
+
// src/strategies/constants.ts
|
|
9289
|
+
var COMMON_CONTRACTS = [{
|
|
9290
|
+
address: ContractAddr.from("0x0636a3f51cc37f5729e4da4b1de6a8549a28f3c0d5bf3b17f150971e451ff9c2"),
|
|
9291
|
+
name: "Access Controller",
|
|
9292
|
+
sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/blob/main/src/components/accessControl.cairo"
|
|
9293
|
+
}];
|
|
9294
|
+
|
|
9274
9295
|
// src/strategies/vesu-rebalance.tsx
|
|
9275
|
-
var
|
|
9296
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
9276
9297
|
var VesuRebalance = class _VesuRebalance extends BaseStrategy {
|
|
9277
9298
|
// 10000 bps = 100%
|
|
9278
9299
|
/**
|
|
@@ -9913,9 +9934,9 @@ var _protocol = {
|
|
|
9913
9934
|
logo: "https://static-assets-8zct.onrender.com/integrations/vesu/logo.png"
|
|
9914
9935
|
};
|
|
9915
9936
|
var _riskFactor = [
|
|
9916
|
-
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25 },
|
|
9917
|
-
{ type: "Counterparty Risk" /* COUNTERPARTY_RISK */, value: 1, weight: 50 },
|
|
9918
|
-
{ type: "Oracle Risk" /* ORACLE_RISK */, value: 0.5, weight: 25 }
|
|
9937
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by CSC" },
|
|
9938
|
+
{ type: "Counterparty Risk" /* COUNTERPARTY_RISK */, value: 1, weight: 50, reason: "Reasonable max LTV ratios and Curated by well-known risk managers like Re7" },
|
|
9939
|
+
{ type: "Oracle Risk" /* ORACLE_RISK */, value: 0.5, weight: 25, reason: "Uses Pragma price feeds, Most reputable price feed on Starknet" }
|
|
9919
9940
|
];
|
|
9920
9941
|
var AUDIT_URL = "https://assets.strkfarm.com/strkfarm/audit_report_vesu_and_ekubo_strats.pdf";
|
|
9921
9942
|
var faqs = [
|
|
@@ -9953,9 +9974,9 @@ var faqs = [
|
|
|
9953
9974
|
},
|
|
9954
9975
|
{
|
|
9955
9976
|
question: "Is the strategy audited?",
|
|
9956
|
-
answer: /* @__PURE__ */ (0,
|
|
9977
|
+
answer: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
|
|
9957
9978
|
"Yes, the strategy has been audited. You can review the audit report in our docs ",
|
|
9958
|
-
/* @__PURE__ */ (0,
|
|
9979
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("a", { href: "https://docs.strkfarm.com/p/strategies/vesu-fusion-rebalancing-vaults#technical-details", style: { textDecoration: "underline", marginLeft: "5px" }, children: "Here" }),
|
|
9959
9980
|
"."
|
|
9960
9981
|
] })
|
|
9961
9982
|
}
|
|
@@ -9963,7 +9984,7 @@ var faqs = [
|
|
|
9963
9984
|
var VesuRebalanceStrategies = [
|
|
9964
9985
|
{
|
|
9965
9986
|
name: "Vesu Fusion STRK",
|
|
9966
|
-
description: _description
|
|
9987
|
+
description: _description,
|
|
9967
9988
|
address: ContractAddr.from(
|
|
9968
9989
|
"0x7fb5bcb8525954a60fde4e8fb8220477696ce7117ef264775a1770e23571929"
|
|
9969
9990
|
),
|
|
@@ -9983,7 +10004,9 @@ var VesuRebalanceStrategies = [
|
|
|
9983
10004
|
additionalInfo: {
|
|
9984
10005
|
feeBps: 1e3
|
|
9985
10006
|
},
|
|
9986
|
-
faqs
|
|
10007
|
+
faqs,
|
|
10008
|
+
contractDetails: [],
|
|
10009
|
+
investmentSteps: []
|
|
9987
10010
|
},
|
|
9988
10011
|
{
|
|
9989
10012
|
name: "Vesu Fusion ETH",
|
|
@@ -10007,7 +10030,9 @@ var VesuRebalanceStrategies = [
|
|
|
10007
10030
|
additionalInfo: {
|
|
10008
10031
|
feeBps: 1e3
|
|
10009
10032
|
},
|
|
10010
|
-
faqs
|
|
10033
|
+
faqs,
|
|
10034
|
+
contractDetails: [],
|
|
10035
|
+
investmentSteps: []
|
|
10011
10036
|
},
|
|
10012
10037
|
{
|
|
10013
10038
|
name: "Vesu Fusion USDC",
|
|
@@ -10031,7 +10056,9 @@ var VesuRebalanceStrategies = [
|
|
|
10031
10056
|
additionalInfo: {
|
|
10032
10057
|
feeBps: 1e3
|
|
10033
10058
|
},
|
|
10034
|
-
faqs
|
|
10059
|
+
faqs,
|
|
10060
|
+
contractDetails: [],
|
|
10061
|
+
investmentSteps: []
|
|
10035
10062
|
},
|
|
10036
10063
|
{
|
|
10037
10064
|
name: "Vesu Fusion USDT",
|
|
@@ -10055,7 +10082,9 @@ var VesuRebalanceStrategies = [
|
|
|
10055
10082
|
additionalInfo: {
|
|
10056
10083
|
feeBps: 1e3
|
|
10057
10084
|
},
|
|
10058
|
-
faqs
|
|
10085
|
+
faqs,
|
|
10086
|
+
contractDetails: [],
|
|
10087
|
+
investmentSteps: []
|
|
10059
10088
|
// }, {
|
|
10060
10089
|
// name: 'Vesu Fusion WBTC',
|
|
10061
10090
|
// description: _description.replace('{{TOKEN}}', 'WBTC'),
|
|
@@ -10074,6 +10103,32 @@ var VesuRebalanceStrategies = [
|
|
|
10074
10103
|
// },
|
|
10075
10104
|
}
|
|
10076
10105
|
];
|
|
10106
|
+
VesuRebalanceStrategies.forEach((s) => {
|
|
10107
|
+
s.contractDetails = [
|
|
10108
|
+
{
|
|
10109
|
+
address: s.address,
|
|
10110
|
+
name: "Vault",
|
|
10111
|
+
sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/tree/main/src/strategies/vesu_rebalance"
|
|
10112
|
+
},
|
|
10113
|
+
...COMMON_CONTRACTS
|
|
10114
|
+
];
|
|
10115
|
+
s.docs = "https://docs.strkfarm.com/p/strategies/vesu-fusion-rebalancing-vaults";
|
|
10116
|
+
s.description = highlightTextWithLinks(
|
|
10117
|
+
_description.replace("{{TOKEN}}", s.depositTokens[0].symbol),
|
|
10118
|
+
[{
|
|
10119
|
+
highlight: "Vesu pools",
|
|
10120
|
+
link: "https://vesu.xyz/pools"
|
|
10121
|
+
}, {
|
|
10122
|
+
highlight: "Defi spring STRK Rewards",
|
|
10123
|
+
link: "https://defispring.starknet.io/"
|
|
10124
|
+
}]
|
|
10125
|
+
);
|
|
10126
|
+
s.investmentSteps = [
|
|
10127
|
+
"Split the amount and Supply to configured Vesu pools",
|
|
10128
|
+
"Monitor and Rebalance funds across multiple Vesu pools to maximize yield",
|
|
10129
|
+
"Harvest and supply Defi Spring STRK rewards every week (Auto-compound)"
|
|
10130
|
+
];
|
|
10131
|
+
});
|
|
10077
10132
|
|
|
10078
10133
|
// src/strategies/ekubo-cl-vault.tsx
|
|
10079
10134
|
var import_starknet9 = require("starknet");
|
|
@@ -14978,7 +15033,7 @@ var erc4626_abi_default = [
|
|
|
14978
15033
|
];
|
|
14979
15034
|
|
|
14980
15035
|
// src/strategies/ekubo-cl-vault.tsx
|
|
14981
|
-
var
|
|
15036
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
14982
15037
|
var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
14983
15038
|
/**
|
|
14984
15039
|
* Creates a new VesuRebalance strategy instance.
|
|
@@ -15385,18 +15440,16 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
15385
15440
|
console.log(
|
|
15386
15441
|
`EkuboCLVault: getCurrentPrice: blockIdentifier: ${blockIdentifier}, sqrtRatio: ${sqrtRatio}, ${priceInfo.sqrt_ratio.toString()}`
|
|
15387
15442
|
);
|
|
15388
|
-
const
|
|
15389
|
-
const
|
|
15390
|
-
|
|
15391
|
-
|
|
15392
|
-
Number(poolKey.tick_spacing)
|
|
15393
|
-
);
|
|
15443
|
+
const token0Info = await Global.getTokenInfoFromAddr(poolKey.token0);
|
|
15444
|
+
const token1Info = await Global.getTokenInfoFromAddr(poolKey.token1);
|
|
15445
|
+
const price = sqrtRatio * sqrtRatio * 10 ** token0Info.decimals / 10 ** token1Info.decimals;
|
|
15446
|
+
const tick = priceInfo.tick;
|
|
15394
15447
|
console.log(
|
|
15395
15448
|
`EkuboCLVault: getCurrentPrice: blockIdentifier: ${blockIdentifier}, price: ${price}, tick: ${tick.mag}, ${tick.sign}`
|
|
15396
15449
|
);
|
|
15397
15450
|
return {
|
|
15398
15451
|
price,
|
|
15399
|
-
tick: tick.mag * (tick.sign
|
|
15452
|
+
tick: Number(tick.mag) * (tick.sign ? -1 : 1),
|
|
15400
15453
|
sqrtRatio: priceInfo.sqrt_ratio.toString()
|
|
15401
15454
|
};
|
|
15402
15455
|
}
|
|
@@ -16043,14 +16096,15 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
|
|
|
16043
16096
|
return [baseFlow, rebalanceFlow];
|
|
16044
16097
|
}
|
|
16045
16098
|
};
|
|
16046
|
-
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
|
|
16099
|
+
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";
|
|
16047
16100
|
var _protocol2 = {
|
|
16048
16101
|
name: "Ekubo",
|
|
16049
16102
|
logo: "https://app.ekubo.org/favicon.ico"
|
|
16050
16103
|
};
|
|
16051
16104
|
var _riskFactor2 = [
|
|
16052
|
-
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight:
|
|
16053
|
-
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value:
|
|
16105
|
+
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 34, reason: "Audited smart contracts" },
|
|
16106
|
+
{ type: "Impermanent Loss Risk" /* IMPERMANENT_LOSS */, value: 0.75, weight: 33, reason: "Low risk due to co-related assets" },
|
|
16107
|
+
{ type: "Market Risk" /* MARKET_RISK */, value: 0.75, weight: 33, reason: "Low risk due to co-related assets" }
|
|
16054
16108
|
];
|
|
16055
16109
|
var _riskFactorStable = [
|
|
16056
16110
|
{ type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25 }
|
|
@@ -16071,10 +16125,10 @@ var faqs2 = [
|
|
|
16071
16125
|
},
|
|
16072
16126
|
{
|
|
16073
16127
|
question: "Is the strategy audited?",
|
|
16074
|
-
answer: /* @__PURE__ */ (0,
|
|
16128
|
+
answer: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
|
|
16075
16129
|
"Yes, the strategy has been audited. You can review the audit report in our docs",
|
|
16076
16130
|
" ",
|
|
16077
|
-
/* @__PURE__ */ (0,
|
|
16131
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
16078
16132
|
"a",
|
|
16079
16133
|
{
|
|
16080
16134
|
href: "https://docs.strkfarm.com/p/ekubo-cl-vaults#technical-details",
|
|
@@ -16088,23 +16142,7 @@ var faqs2 = [
|
|
|
16088
16142
|
];
|
|
16089
16143
|
var xSTRKSTRK = {
|
|
16090
16144
|
name: "Ekubo xSTRK/STRK",
|
|
16091
|
-
description: /* @__PURE__ */ (0,
|
|
16092
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { children: _description2.replace("{{POOL_NAME}}", "xSTRK/STRK") }),
|
|
16093
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
16094
|
-
"ul",
|
|
16095
|
-
{
|
|
16096
|
-
style: {
|
|
16097
|
-
marginLeft: "20px",
|
|
16098
|
-
listStyle: "circle",
|
|
16099
|
-
fontSize: "12px"
|
|
16100
|
-
},
|
|
16101
|
-
children: [
|
|
16102
|
-
/* @__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." }),
|
|
16103
|
-
/* @__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." })
|
|
16104
|
-
]
|
|
16105
|
-
}
|
|
16106
|
-
)
|
|
16107
|
-
] }),
|
|
16145
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
16108
16146
|
address: ContractAddr.from(
|
|
16109
16147
|
"0x01f083b98674bc21effee29ef443a00c7b9a500fd92cf30341a3da12c73f2324"
|
|
16110
16148
|
),
|
|
@@ -16150,48 +16188,25 @@ var xSTRKSTRK = {
|
|
|
16150
16188
|
multiplier: 1,
|
|
16151
16189
|
logo: "https://endur.fi/favicon.ico",
|
|
16152
16190
|
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."
|
|
16153
|
-
}]
|
|
16191
|
+
}],
|
|
16192
|
+
contractDetails: [],
|
|
16193
|
+
investmentSteps: []
|
|
16154
16194
|
};
|
|
16155
16195
|
var EkuboCLVaultStrategies = [
|
|
16156
16196
|
xSTRKSTRK,
|
|
16157
16197
|
{
|
|
16198
|
+
...xSTRKSTRK,
|
|
16158
16199
|
name: "Ekubo USDC/USDT",
|
|
16159
|
-
description: /* @__PURE__ */ (0,
|
|
16160
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { children: _description2.replace("{{POOL_NAME}}", "USDC/USDT") }),
|
|
16161
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
16162
|
-
"ul",
|
|
16163
|
-
{
|
|
16164
|
-
style: {
|
|
16165
|
-
marginLeft: "20px",
|
|
16166
|
-
listStyle: "circle",
|
|
16167
|
-
fontSize: "12px"
|
|
16168
|
-
},
|
|
16169
|
-
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." })
|
|
16170
|
-
}
|
|
16171
|
-
)
|
|
16172
|
-
] }),
|
|
16200
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
16173
16201
|
address: ContractAddr.from(
|
|
16174
16202
|
"0xd647ed735f0db52f2a5502b6e06ed21dc4284a43a36af4b60d3c80fbc56c91"
|
|
16175
16203
|
),
|
|
16176
16204
|
launchBlock: 1385576,
|
|
16177
|
-
type: "Other",
|
|
16178
16205
|
// must be same order as poolKey token0 and token1
|
|
16179
16206
|
depositTokens: [
|
|
16180
16207
|
Global.getDefaultTokens().find((t) => t.symbol === "USDC"),
|
|
16181
16208
|
Global.getDefaultTokens().find((t) => t.symbol === "USDT")
|
|
16182
16209
|
],
|
|
16183
|
-
protocols: [_protocol2],
|
|
16184
|
-
auditUrl: AUDIT_URL2,
|
|
16185
|
-
maxTVL: Web3Number.fromWei("0", 6),
|
|
16186
|
-
risk: {
|
|
16187
|
-
riskFactor: _riskFactorStable,
|
|
16188
|
-
netRisk: _riskFactorStable.reduce(
|
|
16189
|
-
(acc, curr) => acc + curr.value * curr.weight,
|
|
16190
|
-
0
|
|
16191
|
-
) / _riskFactorStable.reduce((acc, curr) => acc + curr.weight, 0),
|
|
16192
|
-
notARisks: getNoRiskTags(_riskFactorStable)
|
|
16193
|
-
},
|
|
16194
|
-
apyMethodology: "APY based on 7-day historical performance, including fees and rewards.",
|
|
16195
16210
|
additionalInfo: {
|
|
16196
16211
|
newBounds: {
|
|
16197
16212
|
lower: -1,
|
|
@@ -16204,51 +16219,71 @@ var EkuboCLVaultStrategies = [
|
|
|
16204
16219
|
minWaitHours: 6,
|
|
16205
16220
|
direction: "any"
|
|
16206
16221
|
}
|
|
16207
|
-
}
|
|
16208
|
-
|
|
16222
|
+
}
|
|
16223
|
+
},
|
|
16224
|
+
{
|
|
16225
|
+
...xSTRKSTRK,
|
|
16226
|
+
name: "Ekubo STRK/USDC",
|
|
16227
|
+
description: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, {}),
|
|
16228
|
+
address: ContractAddr.from(
|
|
16229
|
+
"0xb7bd37121041261446d8eedec618955a4490641034942da688e8cbddea7b23"
|
|
16230
|
+
),
|
|
16231
|
+
launchBlock: 1492136,
|
|
16232
|
+
// must be same order as poolKey token0 and token1
|
|
16233
|
+
depositTokens: [
|
|
16234
|
+
Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
|
|
16235
|
+
Global.getDefaultTokens().find((t) => t.symbol === "USDC")
|
|
16236
|
+
],
|
|
16237
|
+
maxTVL: Web3Number.fromWei("0", 6),
|
|
16238
|
+
additionalInfo: {
|
|
16239
|
+
newBounds: "Managed by Re7",
|
|
16240
|
+
feeBps: 1e3,
|
|
16241
|
+
rebalanceConditions: {
|
|
16242
|
+
customShouldRebalance: async (currentPrice) => true,
|
|
16243
|
+
minWaitHours: 6,
|
|
16244
|
+
direction: "any"
|
|
16245
|
+
}
|
|
16246
|
+
}
|
|
16209
16247
|
}
|
|
16210
|
-
// {
|
|
16211
|
-
// ...xSTRKSTRK,
|
|
16212
|
-
// name: "Ekubo STRK/USDC",
|
|
16213
|
-
// description: (
|
|
16214
|
-
// <div>
|
|
16215
|
-
// <p>{_description.replace("{{POOL_NAME}}", "STRK/USDC")}</p>
|
|
16216
|
-
// <ul
|
|
16217
|
-
// style={{
|
|
16218
|
-
// marginLeft: "20px",
|
|
16219
|
-
// listStyle: "circle",
|
|
16220
|
-
// fontSize: "12px",
|
|
16221
|
-
// }}
|
|
16222
|
-
// >
|
|
16223
|
-
// <li style={{ marginTop: "10px" }}>
|
|
16224
|
-
// During withdrawal, you may receive either or both tokens depending
|
|
16225
|
-
// on market conditions and prevailing prices.
|
|
16226
|
-
// </li>
|
|
16227
|
-
// </ul>
|
|
16228
|
-
// </div>
|
|
16229
|
-
// ),
|
|
16230
|
-
// address: ContractAddr.from(
|
|
16231
|
-
// "0xb7bd37121041261446d8eedec618955a4490641034942da688e8cbddea7b23"
|
|
16232
|
-
// ),
|
|
16233
|
-
// launchBlock: 1492136,
|
|
16234
|
-
// // must be same order as poolKey token0 and token1
|
|
16235
|
-
// depositTokens: [
|
|
16236
|
-
// Global.getDefaultTokens().find((t) => t.symbol === "STRK")!,
|
|
16237
|
-
// Global.getDefaultTokens().find((t) => t.symbol === "USDC")!,
|
|
16238
|
-
// ],
|
|
16239
|
-
// maxTVL: Web3Number.fromWei("0", 6),
|
|
16240
|
-
// additionalInfo: {
|
|
16241
|
-
// newBounds: "Managed by Re7",
|
|
16242
|
-
// feeBps: 1000,
|
|
16243
|
-
// rebalanceConditions: {
|
|
16244
|
-
// customShouldRebalance: async (currentPrice: number) =>
|
|
16245
|
-
// true,
|
|
16246
|
-
// minWaitHours: 6,
|
|
16247
|
-
// direction: "any",
|
|
16248
|
-
// },
|
|
16249
|
-
// },
|
|
16250
|
-
// },
|
|
16251
16248
|
];
|
|
16249
|
+
EkuboCLVaultStrategies.forEach((s) => {
|
|
16250
|
+
s.contractDetails = [
|
|
16251
|
+
{
|
|
16252
|
+
address: s.address,
|
|
16253
|
+
name: "Vault",
|
|
16254
|
+
sourceCodeUrl: "https://github.com/strkfarm/strkfarm-contracts/tree/main/src/strategies/cl_vault"
|
|
16255
|
+
},
|
|
16256
|
+
...COMMON_CONTRACTS
|
|
16257
|
+
];
|
|
16258
|
+
s.docs = "https://docs.strkfarm.com/p/ekubo-cl-vaults";
|
|
16259
|
+
s.description = /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
|
|
16260
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { children: highlightTextWithLinks(
|
|
16261
|
+
_description2.replace("{{POOL_NAME}}", s.name.split(" ")[1]),
|
|
16262
|
+
[{
|
|
16263
|
+
highlight: "Ekubo liquidity pool",
|
|
16264
|
+
link: "https://app.ekubo.org/positions"
|
|
16265
|
+
}, {
|
|
16266
|
+
highlight: "DeFi Spring rewards",
|
|
16267
|
+
link: "https://defispring.starknet.io/"
|
|
16268
|
+
}, {
|
|
16269
|
+
highlight: "ERC-20 token",
|
|
16270
|
+
link: "https://www.investopedia.com/news/what-erc20-and-what-does-it-mean-ethereum/"
|
|
16271
|
+
}]
|
|
16272
|
+
) }),
|
|
16273
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { style: { padding: "16px 16px", background: "var(--chakra-colors-mycard_light)", marginTop: "16px", borderRadius: "16px" }, children: [
|
|
16274
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h4", { style: { fontWeight: "bold" }, children: "Key points to note:" }),
|
|
16275
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { style: { display: "flex", flexDirection: "column", gap: "10px", color: "var(--chakra-colors-text_secondary)" }, children: [
|
|
16276
|
+
/* @__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." }),
|
|
16277
|
+
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." })
|
|
16278
|
+
] })
|
|
16279
|
+
] })
|
|
16280
|
+
] });
|
|
16281
|
+
s.investmentSteps = [
|
|
16282
|
+
"Supply tokens to Ekubo's pool",
|
|
16283
|
+
"Monitor and Rebalance position to optimize yield",
|
|
16284
|
+
"Harvest and supply Defi Spring STRK rewards every week (Auto-compound)"
|
|
16285
|
+
];
|
|
16286
|
+
});
|
|
16252
16287
|
|
|
16253
16288
|
// src/notifs/telegram.ts
|
|
16254
16289
|
var import_node_telegram_bot_api = __toESM(require("node-telegram-bot-api"));
|
|
@@ -16546,5 +16581,6 @@ var Store = class _Store {
|
|
|
16546
16581
|
getNoRiskTags,
|
|
16547
16582
|
getRiskColor,
|
|
16548
16583
|
getRiskExplaination,
|
|
16584
|
+
highlightTextWithLinks,
|
|
16549
16585
|
logger
|
|
16550
16586
|
});
|