@strkfarm/sdk 1.0.59 → 1.0.60

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.js CHANGED
@@ -2268,7 +2268,7 @@ var getRiskExplaination = (riskType) => {
2268
2268
  };
2269
2269
  var getRiskColor = (risk) => {
2270
2270
  const value = risk.value;
2271
- if (value <= 1) return "light_green_2";
2271
+ if (value <= 2) return "light_green_2";
2272
2272
  if (value < 3) return "yellow";
2273
2273
  return "red";
2274
2274
  };
@@ -2296,8 +2296,18 @@ var VesuProtocol = {
2296
2296
  name: "Vesu",
2297
2297
  logo: "https://static-assets-8zct.onrender.com/integrations/vesu/logo.png"
2298
2298
  };
2299
+ var EndurProtocol = {
2300
+ name: "Endur",
2301
+ logo: "http://endur.fi/logo.png"
2302
+ };
2303
+ var ExtendedProtocol = {
2304
+ name: "Extended",
2305
+ logo: "https://static-assets-8zct.onrender.com/integrations/extended/extended.svg"
2306
+ };
2299
2307
  var Protocols = {
2300
- VESU: VesuProtocol
2308
+ VESU: VesuProtocol,
2309
+ ENDUR: EndurProtocol,
2310
+ EXTENDED: ExtendedProtocol
2301
2311
  };
2302
2312
 
2303
2313
  // src/interfaces/initializable.ts
@@ -18558,7 +18568,7 @@ var SenseiStrategies = [
18558
18568
  var import_starknet12 = require("starknet");
18559
18569
 
18560
18570
  // src/strategies/universal-adapters/adapter-utils.ts
18561
- var SIMPLE_SANITIZER = ContractAddr.from("0x11b59e89b35dfceb3e48ec18c01f8ec569592026c275bcb58e22af9f4dedaac");
18571
+ var SIMPLE_SANITIZER = ContractAddr.from("0x3798dc4f83fdfad199e5236e3656cf2fb79bc50c00504d0dd41522e0f042072");
18562
18572
  function toBigInt(value) {
18563
18573
  if (typeof value === "string") {
18564
18574
  return BigInt(value);
@@ -18673,6 +18683,35 @@ var CommonAdapter = class extends BaseAdapter {
18673
18683
  };
18674
18684
  };
18675
18685
  }
18686
+ getBringLiquidityAdapter(id) {
18687
+ return () => ({
18688
+ leaf: this.constructSimpleLeafData({
18689
+ id,
18690
+ target: this.config.vaultAddress,
18691
+ method: "bring_liquidity",
18692
+ packedArguments: []
18693
+ }),
18694
+ callConstructor: this.getBringLiquidityCall().bind(this)
18695
+ });
18696
+ }
18697
+ getBringLiquidityCall() {
18698
+ return (params) => {
18699
+ const uint256Amount = import_starknet13.uint256.bnToUint256(params.amount.toWei());
18700
+ return {
18701
+ sanitizer: SIMPLE_SANITIZER,
18702
+ call: {
18703
+ contractAddress: this.config.vaultAddress,
18704
+ selector: import_starknet13.hash.getSelectorFromName("bring_liquidity"),
18705
+ calldata: [
18706
+ toBigInt(uint256Amount.low.toString()),
18707
+ // amount low
18708
+ toBigInt(uint256Amount.high.toString())
18709
+ // amount high
18710
+ ]
18711
+ }
18712
+ };
18713
+ };
18714
+ }
18676
18715
  };
18677
18716
 
18678
18717
  // src/strategies/universal-adapters/vesu-adapter.ts
@@ -21190,7 +21229,7 @@ var VesuAdapter = class _VesuAdapter extends BaseAdapter {
21190
21229
  }
21191
21230
  };
21192
21231
 
21193
- // src/strategies/universal-strategy.ts
21232
+ // src/strategies/universal-strategy.tsx
21194
21233
  var import_starknet15 = require("starknet");
21195
21234
 
21196
21235
  // src/data/universal-vault.abi.json
@@ -23396,7 +23435,8 @@ var vault_manager_abi_default = [
23396
23435
  }
23397
23436
  ];
23398
23437
 
23399
- // src/strategies/universal-strategy.ts
23438
+ // src/strategies/universal-strategy.tsx
23439
+ var import_jsx_runtime4 = require("react/jsx-runtime");
23400
23440
  var AUMTypes = /* @__PURE__ */ ((AUMTypes2) => {
23401
23441
  AUMTypes2["FINALISED"] = "finalised";
23402
23442
  AUMTypes2["DEFISPRING"] = "defispring";
@@ -23617,6 +23657,7 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
23617
23657
  const balance = await this.getUnusedBalance();
23618
23658
  logger.verbose(`${this.getTag()} unused balance: ${balance.amount.toNumber()}`);
23619
23659
  const vesuAum = leg1AUM[0].amount.plus(leg2AUM[0].usdValue / token1Price.price).minus(leg1AUM[1].usdValue / token1Price.price).minus(leg2AUM[1].amount);
23660
+ logger.verbose(`${this.getTag()} Vesu AUM: leg1: ${leg1AUM[0].amount.toNumber()}, ${leg1AUM[1].amount.toNumber()}, leg2: ${leg2AUM[0].amount.toNumber()}, ${leg2AUM[1].amount.toNumber()}`);
23620
23661
  const zeroAmt = Web3Number.fromWei("0", this.asset().decimals);
23621
23662
  const net = {
23622
23663
  tokenInfo: this.asset(),
@@ -23833,18 +23874,23 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
23833
23874
  logger.verbose(`${this.getTag()}:: leg1DepositAmount: ${params.leg1DepositAmount.toString()} ${vesuAdapter1.config.collateral.symbol}`);
23834
23875
  logger.verbose(`${this.getTag()}:: borrow1Amount: ${borrow1Amount.toString()} ${vesuAdapter1.config.debt.symbol}`);
23835
23876
  logger.verbose(`${this.getTag()}:: borrow2Amount: ${borrow2Amount.toString()} ${vesuAdapter2.config.debt.symbol}`);
23836
- const callSet1 = this.getVesuModifyPositionCalls({
23877
+ let callSet1 = this.getVesuModifyPositionCalls({
23837
23878
  isLeg1: true,
23838
23879
  isDeposit: params.isDeposit,
23839
23880
  depositAmount: params.leg1DepositAmount.plus(borrow2Amount),
23840
23881
  debtAmount: borrow1Amount
23841
23882
  });
23842
- const callSet2 = this.getVesuModifyPositionCalls({
23883
+ let callSet2 = this.getVesuModifyPositionCalls({
23843
23884
  isLeg1: false,
23844
23885
  isDeposit: params.isDeposit,
23845
23886
  depositAmount: borrow1Amount,
23846
23887
  debtAmount: borrow2Amount
23847
23888
  });
23889
+ if (!params.isDeposit) {
23890
+ let temp = callSet2;
23891
+ callSet2 = [...callSet1];
23892
+ callSet1 = [...temp];
23893
+ }
23848
23894
  const allActions = [...callSet1.map((i) => i.manageCall), ...callSet2.map((i) => i.manageCall)];
23849
23895
  const flashloanCalldata = import_starknet15.CallData.compile([
23850
23896
  [...callSet1.map((i) => i.proofs), ...callSet2.map((i) => i.proofs)],
@@ -23862,6 +23908,18 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
23862
23908
  const manageCall = this.getManageCall(["flash_loan_init" /* FLASH_LOAN */], [manageCall1]);
23863
23909
  return manageCall;
23864
23910
  }
23911
+ async getBringLiquidityCall(params) {
23912
+ const manage1Info = this.getProofs("approve_bring_liquidity" /* APPROVE_BRING_LIQUIDITY */);
23913
+ const manageCall1 = manage1Info.callConstructor({
23914
+ amount: params.amount
23915
+ });
23916
+ const manage2Info = this.getProofs("bring_liquidity" /* BRING_LIQUIDITY */);
23917
+ const manageCall2 = manage2Info.callConstructor({
23918
+ amount: params.amount
23919
+ });
23920
+ const manageCall = this.getManageCall(["approve_bring_liquidity" /* APPROVE_BRING_LIQUIDITY */, "bring_liquidity" /* BRING_LIQUIDITY */], [manageCall1, manageCall2]);
23921
+ return manageCall;
23922
+ }
23865
23923
  async getRebalanceCall(params) {
23866
23924
  let callSet1 = this.getVesuModifyPositionCalls({
23867
23925
  isLeg1: true,
@@ -23896,6 +23954,8 @@ var UNIVERSAL_MANAGE_IDS = /* @__PURE__ */ ((UNIVERSAL_MANAGE_IDS2) => {
23896
23954
  UNIVERSAL_MANAGE_IDS2["VESU_LEG2"] = "vesu_leg2";
23897
23955
  UNIVERSAL_MANAGE_IDS2["APPROVE_TOKEN1"] = "approve_token1";
23898
23956
  UNIVERSAL_MANAGE_IDS2["APPROVE_TOKEN2"] = "approve_token2";
23957
+ UNIVERSAL_MANAGE_IDS2["APPROVE_BRING_LIQUIDITY"] = "approve_bring_liquidity";
23958
+ UNIVERSAL_MANAGE_IDS2["BRING_LIQUIDITY"] = "bring_liquidity";
23899
23959
  return UNIVERSAL_MANAGE_IDS2;
23900
23960
  })(UNIVERSAL_MANAGE_IDS || {});
23901
23961
  var UNIVERSAL_ADAPTERS = /* @__PURE__ */ ((UNIVERSAL_ADAPTERS2) => {
@@ -23910,7 +23970,9 @@ function getLooperSettings(token1Symbol, token2Symbol, vaultSettings, pool1, poo
23910
23970
  const commonAdapter = new CommonAdapter({
23911
23971
  manager: vaultSettings.manager,
23912
23972
  asset: USDCToken.address,
23913
- id: "flash_loan_init" /* FLASH_LOAN */
23973
+ id: "flash_loan_init" /* FLASH_LOAN */,
23974
+ vaultAddress: vaultSettings.vaultAddress,
23975
+ vaultAllocator: vaultSettings.vaultAllocator
23914
23976
  });
23915
23977
  const vesuAdapterUSDCETH = new VesuAdapter({
23916
23978
  poolId: pool1,
@@ -23941,13 +24003,17 @@ function getLooperSettings(token1Symbol, token2Symbol, vaultSettings, pool1, poo
23941
24003
  vaultSettings.leafAdapters.push(vesuAdapterETHUSDC.getModifyPosition.bind(vesuAdapterETHUSDC));
23942
24004
  vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(USDCToken.address, vesuAdapterUSDCETH.VESU_SINGLETON, "approve_token1" /* APPROVE_TOKEN1 */).bind(commonAdapter));
23943
24005
  vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(ETHToken.address, vesuAdapterETHUSDC.VESU_SINGLETON, "approve_token2" /* APPROVE_TOKEN2 */).bind(commonAdapter));
24006
+ vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(USDCToken.address, vaultSettings.vaultAddress, "approve_bring_liquidity" /* APPROVE_BRING_LIQUIDITY */).bind(commonAdapter));
24007
+ vaultSettings.leafAdapters.push(commonAdapter.getBringLiquidityAdapter("bring_liquidity" /* BRING_LIQUIDITY */).bind(commonAdapter));
23944
24008
  return vaultSettings;
23945
24009
  }
23946
24010
  var _riskFactor4 = [
23947
24011
  { type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by Zellic" },
23948
- { type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1, weight: 50, reason: "Liquidation risk is mitigated btable price feed on Starknet" }
24012
+ { type: "Liquidation Risk" /* LIQUIDATION_RISK */, value: 1.5, weight: 50, reason: "Liquidation risk is mitigated by stable price feed on Starknet" },
24013
+ { type: "Technical Risk" /* TECHNICAL_RISK */, value: 1, weight: 50, reason: "Technical failures like risk monitoring failures" }
23949
24014
  ];
23950
24015
  var usdcVaultSettings = {
24016
+ vaultAddress: ContractAddr.from("0x7e6498cf6a1bfc7e6fc89f1831865e2dacb9756def4ec4b031a9138788a3b5e"),
23951
24017
  manager: ContractAddr.from("0xf41a2b1f498a7f9629db0b8519259e66e964260a23d20003f3e42bb1997a07"),
23952
24018
  vaultAllocator: ContractAddr.from("0x228cca1005d3f2b55cbaba27cb291dacf1b9a92d1d6b1638195fbd3d0c1e3ba"),
23953
24019
  redeemRequestNFT: ContractAddr.from("0x906d03590010868cbf7590ad47043959d7af8e782089a605d9b22567b64fda"),
@@ -23958,6 +24024,7 @@ var usdcVaultSettings = {
23958
24024
  minHealthFactor: 1.25
23959
24025
  };
23960
24026
  var wbtcVaultSettings = {
24027
+ vaultAddress: ContractAddr.from("0x5a4c1651b913aa2ea7afd9024911603152a19058624c3e425405370d62bf80c"),
23961
24028
  manager: ContractAddr.from("0xef8a664ffcfe46a6af550766d27c28937bf1b77fb4ab54d8553e92bca5ba34"),
23962
24029
  vaultAllocator: ContractAddr.from("0x1e01c25f0d9494570226ad28a7fa856c0640505e809c366a9fab4903320e735"),
23963
24030
  redeemRequestNFT: ContractAddr.from("0x4fec59a12f8424281c1e65a80b5de51b4e754625c60cddfcd00d46941ec37b2"),
@@ -23968,6 +24035,7 @@ var wbtcVaultSettings = {
23968
24035
  minHealthFactor: 1.25
23969
24036
  };
23970
24037
  var ethVaultSettings = {
24038
+ vaultAddress: ContractAddr.from("0x446c22d4d3f5cb52b4950ba832ba1df99464c6673a37c092b1d9622650dbd8"),
23971
24039
  manager: ContractAddr.from("0x494888b37206616bd09d759dcda61e5118470b9aa7f58fb84f21c778a7b8f97"),
23972
24040
  vaultAllocator: ContractAddr.from("0x4acc0ad6bea58cb578d60ff7c31f06f44369a7a9a7bbfffe4701f143e427bd"),
23973
24041
  redeemRequestNFT: ContractAddr.from("0x2e6cd71e5060a254d4db00655e420db7bf89da7755bb0d5f922e2f00c76ac49"),
@@ -23978,6 +24046,7 @@ var ethVaultSettings = {
23978
24046
  minHealthFactor: 1.25
23979
24047
  };
23980
24048
  var strkVaultSettings = {
24049
+ vaultAddress: ContractAddr.from("0x55d012f57e58c96e0a5c7ebbe55853989d01e6538b15a95e7178aca4af05c21"),
23981
24050
  manager: ContractAddr.from("0xcc6a5153ca56293405506eb20826a379d982cd738008ef7e808454d318fb81"),
23982
24051
  vaultAllocator: ContractAddr.from("0xf29d2f82e896c0ed74c9eff220af34ac148e8b99846d1ace9fbb02c9191d01"),
23983
24052
  redeemRequestNFT: ContractAddr.from("0x46902423bd632c428376b84fcee9cac5dbe016214e93a8103bcbde6e1de656b"),
@@ -23988,6 +24057,7 @@ var strkVaultSettings = {
23988
24057
  minHealthFactor: 1.25
23989
24058
  };
23990
24059
  var usdtVaultSettings = {
24060
+ vaultAddress: ContractAddr.from("0x1c4933d1880c6778585e597154eaca7b428579d72f3aae425ad2e4d26c6bb3"),
23991
24061
  manager: ContractAddr.from("0x39bb9843503799b552b7ed84b31c06e4ff10c0537edcddfbf01fe944b864029"),
23992
24062
  vaultAllocator: ContractAddr.from("0x56437d18c43727ac971f6c7086031cad7d9d6ccb340f4f3785a74cc791c931a"),
23993
24063
  redeemRequestNFT: ContractAddr.from("0x5af0c2a657eaa8e23ed78e855dac0c51e4f69e2cf91a18c472041a1f75bb41f"),
@@ -23997,10 +24067,143 @@ var usdtVaultSettings = {
23997
24067
  targetHealthFactor: 1.3,
23998
24068
  minHealthFactor: 1.25
23999
24069
  };
24070
+ function MetaVaultDescription() {
24071
+ const logos = {
24072
+ vesu: Protocols.VESU.logo,
24073
+ endur: Protocols.ENDUR.logo,
24074
+ extended: Protocols.EXTENDED.logo,
24075
+ ekubo: "https://dummyimage.com/64x64/ffffff/000000&text=K"
24076
+ };
24077
+ const sources = [
24078
+ { key: "vesu", name: "Vesu", status: "Live", description: "Integrated liquidity venue used for automated routing to capture the best available yield." },
24079
+ { key: "endur", name: "Endur", status: "Coming soon", description: "Planned integration to tap into STRK staking\u2013backed yields via our LST pipeline." },
24080
+ { key: "extended", name: "Extended", status: "Coming soon", description: "Expanding coverage to additional money markets and vaults across the ecosystem." }
24081
+ // { key: "ekubo", name: "Ekubo", status: "Coming soon", description: "Concentrated liquidity strategies targeted for optimized fee APR harvesting." },
24082
+ ];
24083
+ const containerStyle = {
24084
+ maxWidth: "800px",
24085
+ margin: "0 auto",
24086
+ backgroundColor: "#111",
24087
+ color: "#eee",
24088
+ fontFamily: "Arial, sans-serif",
24089
+ borderRadius: "12px"
24090
+ };
24091
+ const cardStyle = {
24092
+ border: "1px solid #333",
24093
+ borderRadius: "10px",
24094
+ padding: "12px",
24095
+ marginBottom: "12px",
24096
+ backgroundColor: "#1a1a1a"
24097
+ };
24098
+ const logoStyle = {
24099
+ width: "24px",
24100
+ height: "24px",
24101
+ borderRadius: "8px",
24102
+ border: "1px solid #444",
24103
+ backgroundColor: "#222"
24104
+ };
24105
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: containerStyle, children: [
24106
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h1", { style: { fontSize: "18px", marginBottom: "10px" }, children: "Meta Vault \u2014 Automated Yield Router" }),
24107
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { style: { fontSize: "14px", lineHeight: "1.5", marginBottom: "16px" }, children: "This Evergreen vault is a tokenized Meta Vault, auto-compounding strategy that continuously allocates your deposited asset to the best available yield source in the ecosystem. Depositors receive vault shares that represent a proportional claim on the underlying assets and accrued yield. Allocation shifts are handled programmatically based on on-chain signals and risk filters, minimizing idle capital and maximizing net APY." }),
24108
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { backgroundColor: "#222", padding: "10px", borderRadius: "8px", marginBottom: "20px", border: "1px solid #444" }, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("p", { style: { fontSize: "13px", color: "#ccc" }, children: [
24109
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("strong", { children: "Withdrawals:" }),
24110
+ " Requests can take up to ",
24111
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("strong", { children: "1-2 hours" }),
24112
+ " to process as the vault unwinds and settles routing."
24113
+ ] }) }),
24114
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h2", { style: { fontSize: "18px", marginBottom: "10px" }, children: "Supported Yield Sources" }),
24115
+ sources.map((s) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: cardStyle, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: { display: "flex", gap: "10px", alignItems: "flex-start" }, children: [
24116
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { src: logos[s.key], alt: `${s.name} logo`, style: logoStyle }),
24117
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { style: { flex: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [
24118
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h3", { style: { fontSize: "15px", margin: 0 }, children: s.name }),
24119
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(StatusBadge, { status: s.status })
24120
+ ] }) })
24121
+ ] }) }, s.key))
24122
+ ] });
24123
+ }
24124
+ function StatusBadge({ status }) {
24125
+ const isSoon = String(status).toLowerCase() !== "live";
24126
+ const badgeStyle = {
24127
+ fontSize: "12px",
24128
+ padding: "2px 6px",
24129
+ borderRadius: "12px",
24130
+ border: "1px solid",
24131
+ color: isSoon ? "rgb(196 196 195)" : "#6aff7d",
24132
+ borderColor: isSoon ? "#484848" : "#6aff7d",
24133
+ backgroundColor: isSoon ? "#424242" : "#002b1a"
24134
+ };
24135
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { style: badgeStyle, children: status });
24136
+ }
24137
+ function getDescription(tokenSymbol) {
24138
+ return MetaVaultDescription();
24139
+ }
24140
+ function getFAQs() {
24141
+ return [
24142
+ {
24143
+ question: "What is the Meta Vault?",
24144
+ answer: "The Meta Vault is a tokenized strategy that automatically allocates your deposited assets to the best available yield source in the ecosystem. It optimizes returns while minimizing idle capital."
24145
+ },
24146
+ {
24147
+ question: "How does yield allocation work?",
24148
+ answer: "The vault continuously monitors supported protocols and routes liquidity to the source offering the highest net yield after accounting for fees, slippage, and gas costs. Reallocations are performed automatically."
24149
+ },
24150
+ {
24151
+ question: "Which yield sources are supported?",
24152
+ answer: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { children: [
24153
+ "Currently, ",
24154
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("strong", { children: "Vesu" }),
24155
+ " is live. Future integrations include",
24156
+ " ",
24157
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("strong", { children: "Endur" }),
24158
+ ", ",
24159
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("strong", { children: "Extended" }),
24160
+ ", and",
24161
+ " ",
24162
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("strong", { children: "Ekubo" }),
24163
+ " (all coming soon)."
24164
+ ] })
24165
+ },
24166
+ {
24167
+ question: "What do I receive when I deposit?",
24168
+ answer: "Depositors receive vault tokens representing their proportional share of the vault. These tokens entitle holders to both the principal and accrued yield."
24169
+ },
24170
+ {
24171
+ question: "How long do withdrawals take?",
24172
+ answer: "Withdrawals may take up to 1-2 hours to process, as the vault unwinds and settles liquidity routing across integrated protocols."
24173
+ },
24174
+ {
24175
+ question: "Is the Meta Vault non-custodial?",
24176
+ answer: "Yes. The Meta Vault operates entirely on-chain. Users always maintain control of their vault tokens, and the strategy is fully transparent."
24177
+ },
24178
+ {
24179
+ question: "How is risk managed?",
24180
+ answer: "Integrations are supported with active risk monitoring like liquidation risk. Only vetted protocols are included to balance yield with safety. However, usual Defi risks like smart contract risk, extreme volatile market risk, etc. are still present."
24181
+ },
24182
+ {
24183
+ question: "Are there any fees?",
24184
+ answer: "Troves charges a performance of 10% on the yield generated. The APY shown is net of this fee. This fee is only applied to the profits earned, ensuring that users retain their initial capital."
24185
+ }
24186
+ ];
24187
+ }
24188
+ function getContractDetails(settings) {
24189
+ return [
24190
+ { address: settings.vaultAddress, name: "Vault" },
24191
+ { address: settings.manager, name: "Vault Manager" },
24192
+ { address: settings.vaultAllocator, name: "Vault Allocator" },
24193
+ { address: settings.redeemRequestNFT, name: "Redeem Request NFT" },
24194
+ { address: settings.aumOracle, name: "AUM Oracle" }
24195
+ ];
24196
+ }
24197
+ var investmentSteps = [
24198
+ "Deposit funds into the vault",
24199
+ "Vault manager allocates funds to optimal yield sources",
24200
+ "Vault manager reports asset under management (AUM) regularly to the vault",
24201
+ "Request withdrawal and vault manager processes it in 1-2 hours"
24202
+ ];
24000
24203
  var UniversalStrategies = [
24001
24204
  {
24002
24205
  name: "USDC Evergreen",
24003
- description: "A universal strategy for managing USDC assets",
24206
+ description: getDescription("USDC"),
24004
24207
  address: ContractAddr.from("0x7e6498cf6a1bfc7e6fc89f1831865e2dacb9756def4ec4b031a9138788a3b5e"),
24005
24208
  launchBlock: 0,
24006
24209
  type: "ERC4626",
@@ -24013,13 +24216,13 @@ var UniversalStrategies = [
24013
24216
  },
24014
24217
  protocols: [Protocols.VESU],
24015
24218
  maxTVL: Web3Number.fromWei(0, 6),
24016
- contractDetails: [],
24017
- faqs: [],
24018
- investmentSteps: []
24219
+ contractDetails: getContractDetails(usdcVaultSettings),
24220
+ faqs: getFAQs(),
24221
+ investmentSteps
24019
24222
  },
24020
24223
  {
24021
24224
  name: "WBTC Evergreen",
24022
- description: "A universal strategy for managing WBTC assets",
24225
+ description: getDescription("WBTC"),
24023
24226
  address: ContractAddr.from("0x5a4c1651b913aa2ea7afd9024911603152a19058624c3e425405370d62bf80c"),
24024
24227
  launchBlock: 0,
24025
24228
  type: "ERC4626",
@@ -24032,13 +24235,13 @@ var UniversalStrategies = [
24032
24235
  },
24033
24236
  protocols: [Protocols.VESU],
24034
24237
  maxTVL: Web3Number.fromWei(0, 8),
24035
- contractDetails: [],
24036
- faqs: [],
24037
- investmentSteps: []
24238
+ contractDetails: getContractDetails(wbtcVaultSettings),
24239
+ faqs: getFAQs(),
24240
+ investmentSteps
24038
24241
  },
24039
24242
  {
24040
24243
  name: "ETH Evergreen",
24041
- description: "A universal strategy for managing ETH assets",
24244
+ description: getDescription("ETH"),
24042
24245
  address: ContractAddr.from("0x446c22d4d3f5cb52b4950ba832ba1df99464c6673a37c092b1d9622650dbd8"),
24043
24246
  launchBlock: 0,
24044
24247
  type: "ERC4626",
@@ -24051,13 +24254,13 @@ var UniversalStrategies = [
24051
24254
  },
24052
24255
  protocols: [Protocols.VESU],
24053
24256
  maxTVL: Web3Number.fromWei(0, 18),
24054
- contractDetails: [],
24055
- faqs: [],
24056
- investmentSteps: []
24257
+ contractDetails: getContractDetails(ethVaultSettings),
24258
+ faqs: getFAQs(),
24259
+ investmentSteps
24057
24260
  },
24058
24261
  {
24059
24262
  name: "STRK Evergreen",
24060
- description: "A universal strategy for managing STRK assets",
24263
+ description: getDescription("STRK"),
24061
24264
  address: ContractAddr.from("0x55d012f57e58c96e0a5c7ebbe55853989d01e6538b15a95e7178aca4af05c21"),
24062
24265
  launchBlock: 0,
24063
24266
  type: "ERC4626",
@@ -24070,13 +24273,13 @@ var UniversalStrategies = [
24070
24273
  },
24071
24274
  protocols: [Protocols.VESU],
24072
24275
  maxTVL: Web3Number.fromWei(0, 18),
24073
- contractDetails: [],
24074
- faqs: [],
24075
- investmentSteps: []
24276
+ contractDetails: getContractDetails(strkVaultSettings),
24277
+ faqs: getFAQs(),
24278
+ investmentSteps
24076
24279
  },
24077
24280
  {
24078
24281
  name: "USDT Evergreen",
24079
- description: "A universal strategy for managing USDT assets",
24282
+ description: getDescription("USDT"),
24080
24283
  address: ContractAddr.from("0x1c4933d1880c6778585e597154eaca7b428579d72f3aae425ad2e4d26c6bb3"),
24081
24284
  launchBlock: 0,
24082
24285
  type: "ERC4626",
@@ -24089,9 +24292,9 @@ var UniversalStrategies = [
24089
24292
  },
24090
24293
  protocols: [Protocols.VESU],
24091
24294
  maxTVL: Web3Number.fromWei(0, 6),
24092
- contractDetails: [],
24093
- faqs: [],
24094
- investmentSteps: []
24295
+ contractDetails: getContractDetails(usdtVaultSettings),
24296
+ faqs: getFAQs(),
24297
+ investmentSteps
24095
24298
  }
24096
24299
  ];
24097
24300