@strkfarm/sdk 1.0.53 → 1.0.55

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.
@@ -17286,6 +17286,8 @@ var strkfarm_risk_engine = (() => {
17286
17286
  Pricer: () => Pricer,
17287
17287
  PricerFromApi: () => PricerFromApi,
17288
17288
  RiskType: () => RiskType,
17289
+ SenseiStrategies: () => SenseiStrategies,
17290
+ SenseiVault: () => SenseiVault,
17289
17291
  VesuRebalance: () => VesuRebalance,
17290
17292
  VesuRebalanceStrategies: () => VesuRebalanceStrategies,
17291
17293
  Web3Number: () => Web3Number,
@@ -19770,6 +19772,19 @@ var strkfarm_risk_engine = (() => {
19770
19772
  }
19771
19773
  return value.toFixed(this.maxToFixedDecimals());
19772
19774
  }
19775
+ minimum(value) {
19776
+ const _value = new import_bignumber.default(value);
19777
+ const _valueMe = new import_bignumber.default(this.toString());
19778
+ const answer = _value.lessThanOrEqualTo(_valueMe) ? _value : _valueMe;
19779
+ return this.construct(answer.toString(), this.decimals);
19780
+ }
19781
+ maximum(value) {
19782
+ const _value = new import_bignumber.default(value);
19783
+ const _valueMe = new import_bignumber.default(this.toString());
19784
+ console.warn(`maximum: _value: ${_value.toString()}, _valueMe: ${_valueMe.toString()}`);
19785
+ const answer = _value.greaterThanOrEqualTo(_valueMe) ? _value : _valueMe;
19786
+ return this.construct(answer.toString(), this.decimals);
19787
+ }
19773
19788
  };
19774
19789
  import_bignumber.default.config({ DECIMAL_PLACES: 18, ROUNDING_MODE: import_bignumber.default.ROUND_DOWN });
19775
19790
  _Web3Number.config({ DECIMAL_PLACES: 18, ROUNDING_MODE: import_bignumber.default.ROUND_DOWN });
@@ -38107,6 +38122,9 @@ var strkfarm_risk_engine = (() => {
38107
38122
  throw new Error(message);
38108
38123
  }
38109
38124
  }
38125
+ function getTrovesEndpoint() {
38126
+ return process.env.TROVES_ENDPOINT || "https://app.troves.fi";
38127
+ }
38110
38128
 
38111
38129
  // src/modules/avnu.ts
38112
38130
  var AvnuWrapper = class _AvnuWrapper {
@@ -38132,7 +38150,6 @@ var strkfarm_risk_engine = (() => {
38132
38150
  }
38133
38151
  throw new Error("no quotes found");
38134
38152
  }
38135
- logger.verbose(`${_AvnuWrapper.name}: getQuotes => Found ${JSON.stringify(filteredQuotes[0])}`);
38136
38153
  return filteredQuotes[0];
38137
38154
  }
38138
38155
  async getSwapInfo(quote, taker, integratorFeeBps, integratorFeeRecipient, minAmount) {
@@ -38198,6 +38215,7 @@ var strkfarm_risk_engine = (() => {
38198
38215
  RiskType2["ORACLE_RISK"] = "Oracle Risk";
38199
38216
  RiskType2["TECHNICAL_RISK"] = "Technical Risk";
38200
38217
  RiskType2["COUNTERPARTY_RISK"] = "Counterparty Risk";
38218
+ RiskType2["DEPEG_RISK"] = "Depeg Risk";
38201
38219
  return RiskType2;
38202
38220
  })(RiskType || {});
38203
38221
  var Network = /* @__PURE__ */ ((Network2) => {
@@ -38212,7 +38230,7 @@ var strkfarm_risk_engine = (() => {
38212
38230
  FlowChartColors2["Purple"] = "#6e53dc";
38213
38231
  return FlowChartColors2;
38214
38232
  })(FlowChartColors || {});
38215
- function getMainnetConfig(rpcUrl = "https://starknet-mainnet.public.blastapi.io", blockIdentifier = "pending") {
38233
+ function getMainnetConfig(rpcUrl, blockIdentifier = "pending") {
38216
38234
  return {
38217
38235
  provider: new RpcProvider2({
38218
38236
  nodeUrl: rpcUrl,
@@ -38240,6 +38258,8 @@ var strkfarm_risk_engine = (() => {
38240
38258
  return "The risk of technical issues e.g. backend failure.";
38241
38259
  case "Counterparty Risk" /* COUNTERPARTY_RISK */:
38242
38260
  return "The risk of the counterparty defaulting e.g. bad debt on lending platforms.";
38261
+ case "Depeg Risk" /* DEPEG_RISK */:
38262
+ return "The risk of a token losing its peg to the underlying asset, leading to potential losses for holders.";
38243
38263
  }
38244
38264
  };
38245
38265
  var getRiskColor = (risk) => {
@@ -39824,6 +39844,7 @@ var strkfarm_risk_engine = (() => {
39824
39844
  // src/strategies/base-strategy.ts
39825
39845
  var BaseStrategy = class {
39826
39846
  constructor(config2) {
39847
+ this.cache = /* @__PURE__ */ new Map();
39827
39848
  this.config = config2;
39828
39849
  }
39829
39850
  async getUserTVL(user) {
@@ -39838,6 +39859,23 @@ var strkfarm_risk_engine = (() => {
39838
39859
  async withdrawCall(amountInfo, receiver, owner) {
39839
39860
  throw new Error("Not implemented");
39840
39861
  }
39862
+ setCache(key, data, ttl = 6e4) {
39863
+ const timestamp = Date.now();
39864
+ this.cache.set(key, { timestamp, ttl, data });
39865
+ }
39866
+ getCache(key) {
39867
+ const cachedData = this.cache.get(key);
39868
+ if (!cachedData || !this.isCacheValid(key)) {
39869
+ return null;
39870
+ }
39871
+ return cachedData.data;
39872
+ }
39873
+ isCacheValid(key) {
39874
+ const cachedData = this.cache.get(key);
39875
+ if (!cachedData) return false;
39876
+ const { timestamp, ttl } = cachedData;
39877
+ return Date.now() - timestamp <= ttl;
39878
+ }
39841
39879
  };
39842
39880
 
39843
39881
  // src/node/headless.browser.ts
@@ -52150,11 +52188,19 @@ var strkfarm_risk_engine = (() => {
52150
52188
  uint256_exports.uint256ToBN(swapInfo1.token_from_amount).toString(),
52151
52189
  18
52152
52190
  // cause its always STRK?
52191
+ ).minimum(
52192
+ postFeeAmount.toFixed(18)
52193
+ // cause always strk
52194
+ );
52195
+ swapInfo.token_from_amount = uint256_exports.bnToUint256(swap1Amount.toWei());
52196
+ swapInfo.token_to_min_amount = uint256_exports.bnToUint256(
52197
+ swap1Amount.multipliedBy(0).toWei()
52198
+ // placeholder
52153
52199
  );
52154
52200
  logger.verbose(
52155
52201
  `${_EkuboCLVault.name}: harvest => swap1Amount: ${swap1Amount}`
52156
52202
  );
52157
- const remainingAmount = postFeeAmount.minus(swap1Amount);
52203
+ const remainingAmount = postFeeAmount.minus(swap1Amount).maximum(0);
52158
52204
  logger.verbose(
52159
52205
  `${_EkuboCLVault.name}: harvest => remainingAmount: ${remainingAmount}`
52160
52206
  );
@@ -52194,7 +52240,12 @@ var strkfarm_risk_engine = (() => {
52194
52240
  const _callsFinal = await this.rebalanceIter(
52195
52241
  swapInfo,
52196
52242
  acc,
52197
- harvestEstimateCall
52243
+ harvestEstimateCall,
52244
+ claim.token.eq(poolKey.token0),
52245
+ 0,
52246
+ 0n,
52247
+ BigInt(postFeeAmount.toWei())
52248
+ // upper limit is the post fee amount
52198
52249
  );
52199
52250
  logger.verbose(
52200
52251
  `${_EkuboCLVault.name}: harvest => _callsFinal: ${JSON.stringify(
@@ -52435,6 +52486,2044 @@ var strkfarm_risk_engine = (() => {
52435
52486
  "Harvest and supply Defi Spring STRK rewards every week (Auto-compound)"
52436
52487
  ];
52437
52488
  });
52489
+
52490
+ // src/data/sensei.abi.json
52491
+ var sensei_abi_default = [
52492
+ {
52493
+ type: "impl",
52494
+ name: "IStrategyCustomImpl",
52495
+ interface_name: "strkfarm::interfaces::ERC721Strategy::IStrategyCustom"
52496
+ },
52497
+ {
52498
+ type: "struct",
52499
+ name: "core::integer::u256",
52500
+ members: [
52501
+ {
52502
+ name: "low",
52503
+ type: "core::integer::u128"
52504
+ },
52505
+ {
52506
+ name: "high",
52507
+ type: "core::integer::u128"
52508
+ }
52509
+ ]
52510
+ },
52511
+ {
52512
+ type: "struct",
52513
+ name: "strkfarm::interfaces::IEkuboDistributor::Claim",
52514
+ members: [
52515
+ {
52516
+ name: "id",
52517
+ type: "core::integer::u64"
52518
+ },
52519
+ {
52520
+ name: "claimee",
52521
+ type: "core::starknet::contract_address::ContractAddress"
52522
+ },
52523
+ {
52524
+ name: "amount",
52525
+ type: "core::integer::u128"
52526
+ }
52527
+ ]
52528
+ },
52529
+ {
52530
+ type: "struct",
52531
+ name: "core::array::Span::<core::felt252>",
52532
+ members: [
52533
+ {
52534
+ name: "snapshot",
52535
+ type: "@core::array::Array::<core::felt252>"
52536
+ }
52537
+ ]
52538
+ },
52539
+ {
52540
+ type: "struct",
52541
+ name: "strkfarm::components::swap::Route",
52542
+ members: [
52543
+ {
52544
+ name: "token_from",
52545
+ type: "core::starknet::contract_address::ContractAddress"
52546
+ },
52547
+ {
52548
+ name: "token_to",
52549
+ type: "core::starknet::contract_address::ContractAddress"
52550
+ },
52551
+ {
52552
+ name: "exchange_address",
52553
+ type: "core::starknet::contract_address::ContractAddress"
52554
+ },
52555
+ {
52556
+ name: "percent",
52557
+ type: "core::integer::u128"
52558
+ },
52559
+ {
52560
+ name: "additional_swap_params",
52561
+ type: "core::array::Array::<core::felt252>"
52562
+ }
52563
+ ]
52564
+ },
52565
+ {
52566
+ type: "struct",
52567
+ name: "strkfarm::components::swap::AvnuMultiRouteSwap",
52568
+ members: [
52569
+ {
52570
+ name: "token_from_address",
52571
+ type: "core::starknet::contract_address::ContractAddress"
52572
+ },
52573
+ {
52574
+ name: "token_from_amount",
52575
+ type: "core::integer::u256"
52576
+ },
52577
+ {
52578
+ name: "token_to_address",
52579
+ type: "core::starknet::contract_address::ContractAddress"
52580
+ },
52581
+ {
52582
+ name: "token_to_amount",
52583
+ type: "core::integer::u256"
52584
+ },
52585
+ {
52586
+ name: "token_to_min_amount",
52587
+ type: "core::integer::u256"
52588
+ },
52589
+ {
52590
+ name: "beneficiary",
52591
+ type: "core::starknet::contract_address::ContractAddress"
52592
+ },
52593
+ {
52594
+ name: "integrator_fee_amount_bps",
52595
+ type: "core::integer::u128"
52596
+ },
52597
+ {
52598
+ name: "integrator_fee_recipient",
52599
+ type: "core::starknet::contract_address::ContractAddress"
52600
+ },
52601
+ {
52602
+ name: "routes",
52603
+ type: "core::array::Array::<strkfarm::components::swap::Route>"
52604
+ }
52605
+ ]
52606
+ },
52607
+ {
52608
+ type: "struct",
52609
+ name: "strkfarm::interfaces::ERC721Strategy::Position",
52610
+ members: [
52611
+ {
52612
+ name: "acc1_supply_shares",
52613
+ type: "core::integer::u256"
52614
+ },
52615
+ {
52616
+ name: "acc1_borrow_shares",
52617
+ type: "core::integer::u256"
52618
+ },
52619
+ {
52620
+ name: "acc2_supply_shares",
52621
+ type: "core::integer::u256"
52622
+ },
52623
+ {
52624
+ name: "acc2_borrow_shares",
52625
+ type: "core::integer::u256"
52626
+ }
52627
+ ]
52628
+ },
52629
+ {
52630
+ type: "enum",
52631
+ name: "core::bool",
52632
+ variants: [
52633
+ {
52634
+ name: "False",
52635
+ type: "()"
52636
+ },
52637
+ {
52638
+ name: "True",
52639
+ type: "()"
52640
+ }
52641
+ ]
52642
+ },
52643
+ {
52644
+ type: "struct",
52645
+ name: "strkfarm::interfaces::ERC721Strategy::PositionDescription",
52646
+ members: [
52647
+ {
52648
+ name: "estimated_size",
52649
+ type: "core::integer::u256"
52650
+ },
52651
+ {
52652
+ name: "deposit1",
52653
+ type: "core::integer::u256"
52654
+ },
52655
+ {
52656
+ name: "borrow1",
52657
+ type: "core::integer::u256"
52658
+ },
52659
+ {
52660
+ name: "deposit2",
52661
+ type: "core::integer::u256"
52662
+ },
52663
+ {
52664
+ name: "borrow2",
52665
+ type: "core::integer::u256"
52666
+ }
52667
+ ]
52668
+ },
52669
+ {
52670
+ type: "struct",
52671
+ name: "strkfarm::interfaces::oracle::IPriceOracleDispatcher",
52672
+ members: [
52673
+ {
52674
+ name: "contract_address",
52675
+ type: "core::starknet::contract_address::ContractAddress"
52676
+ }
52677
+ ]
52678
+ },
52679
+ {
52680
+ type: "struct",
52681
+ name: "ekubo::interfaces::core::ICoreDispatcher",
52682
+ members: [
52683
+ {
52684
+ name: "contract_address",
52685
+ type: "core::starknet::contract_address::ContractAddress"
52686
+ }
52687
+ ]
52688
+ },
52689
+ {
52690
+ type: "struct",
52691
+ name: "strkfarm::components::ekuboSwap::IRouterDispatcher",
52692
+ members: [
52693
+ {
52694
+ name: "contract_address",
52695
+ type: "core::starknet::contract_address::ContractAddress"
52696
+ }
52697
+ ]
52698
+ },
52699
+ {
52700
+ type: "struct",
52701
+ name: "strkfarm::components::ekuboSwap::EkuboSwapStruct",
52702
+ members: [
52703
+ {
52704
+ name: "core",
52705
+ type: "ekubo::interfaces::core::ICoreDispatcher"
52706
+ },
52707
+ {
52708
+ name: "router",
52709
+ type: "strkfarm::components::ekuboSwap::IRouterDispatcher"
52710
+ }
52711
+ ]
52712
+ },
52713
+ {
52714
+ type: "struct",
52715
+ name: "ekubo::types::keys::PoolKey",
52716
+ members: [
52717
+ {
52718
+ name: "token0",
52719
+ type: "core::starknet::contract_address::ContractAddress"
52720
+ },
52721
+ {
52722
+ name: "token1",
52723
+ type: "core::starknet::contract_address::ContractAddress"
52724
+ },
52725
+ {
52726
+ name: "fee",
52727
+ type: "core::integer::u128"
52728
+ },
52729
+ {
52730
+ name: "tick_spacing",
52731
+ type: "core::integer::u128"
52732
+ },
52733
+ {
52734
+ name: "extension",
52735
+ type: "core::starknet::contract_address::ContractAddress"
52736
+ }
52737
+ ]
52738
+ },
52739
+ {
52740
+ type: "struct",
52741
+ name: "ekubo::interfaces::router::RouteNode",
52742
+ members: [
52743
+ {
52744
+ name: "pool_key",
52745
+ type: "ekubo::types::keys::PoolKey"
52746
+ },
52747
+ {
52748
+ name: "sqrt_ratio_limit",
52749
+ type: "core::integer::u256"
52750
+ },
52751
+ {
52752
+ name: "skip_ahead",
52753
+ type: "core::integer::u128"
52754
+ }
52755
+ ]
52756
+ },
52757
+ {
52758
+ type: "struct",
52759
+ name: "strkfarm::interfaces::ERC721Strategy::Settings",
52760
+ members: [
52761
+ {
52762
+ name: "base_fee_percent",
52763
+ type: "core::integer::u128"
52764
+ },
52765
+ {
52766
+ name: "reward_fee_percent",
52767
+ type: "core::integer::u128"
52768
+ },
52769
+ {
52770
+ name: "fee_receiver",
52771
+ type: "core::starknet::contract_address::ContractAddress"
52772
+ },
52773
+ {
52774
+ name: "min_health_factor",
52775
+ type: "core::integer::u32"
52776
+ },
52777
+ {
52778
+ name: "target_health_factor",
52779
+ type: "core::integer::u32"
52780
+ },
52781
+ {
52782
+ name: "coefs_sum1",
52783
+ type: "core::integer::u128"
52784
+ },
52785
+ {
52786
+ name: "coefs_sum2",
52787
+ type: "core::integer::u128"
52788
+ },
52789
+ {
52790
+ name: "oracle",
52791
+ type: "strkfarm::interfaces::oracle::IPriceOracleDispatcher"
52792
+ },
52793
+ {
52794
+ name: "ekubo_swap",
52795
+ type: "strkfarm::components::ekuboSwap::EkuboSwapStruct"
52796
+ },
52797
+ {
52798
+ name: "swap_routes1",
52799
+ type: "core::array::Array::<ekubo::interfaces::router::RouteNode>"
52800
+ },
52801
+ {
52802
+ name: "swap_routes2",
52803
+ type: "core::array::Array::<ekubo::interfaces::router::RouteNode>"
52804
+ },
52805
+ {
52806
+ name: "additional_shares_action_id",
52807
+ type: "core::integer::u8"
52808
+ }
52809
+ ]
52810
+ },
52811
+ {
52812
+ type: "interface",
52813
+ name: "strkfarm::interfaces::ERC721Strategy::IStrategyCustom",
52814
+ items: [
52815
+ {
52816
+ type: "function",
52817
+ name: "deposit",
52818
+ inputs: [
52819
+ {
52820
+ name: "amount",
52821
+ type: "core::integer::u256"
52822
+ },
52823
+ {
52824
+ name: "receiver",
52825
+ type: "core::starknet::contract_address::ContractAddress"
52826
+ }
52827
+ ],
52828
+ outputs: [
52829
+ {
52830
+ type: "core::integer::u256"
52831
+ }
52832
+ ],
52833
+ state_mutability: "external"
52834
+ },
52835
+ {
52836
+ type: "function",
52837
+ name: "health_factors",
52838
+ inputs: [],
52839
+ outputs: [
52840
+ {
52841
+ type: "(core::integer::u32, core::integer::u32)"
52842
+ }
52843
+ ],
52844
+ state_mutability: "view"
52845
+ },
52846
+ {
52847
+ type: "function",
52848
+ name: "harvest",
52849
+ inputs: [
52850
+ {
52851
+ name: "protocol1_rewards_contract",
52852
+ type: "core::starknet::contract_address::ContractAddress"
52853
+ },
52854
+ {
52855
+ name: "claim1",
52856
+ type: "strkfarm::interfaces::IEkuboDistributor::Claim"
52857
+ },
52858
+ {
52859
+ name: "proof1",
52860
+ type: "core::array::Span::<core::felt252>"
52861
+ },
52862
+ {
52863
+ name: "protocol2_rewards_contract",
52864
+ type: "core::starknet::contract_address::ContractAddress"
52865
+ },
52866
+ {
52867
+ name: "claim2",
52868
+ type: "strkfarm::interfaces::IEkuboDistributor::Claim"
52869
+ },
52870
+ {
52871
+ name: "proof2",
52872
+ type: "core::array::Span::<core::felt252>"
52873
+ },
52874
+ {
52875
+ name: "swapInfo",
52876
+ type: "strkfarm::components::swap::AvnuMultiRouteSwap"
52877
+ }
52878
+ ],
52879
+ outputs: [],
52880
+ state_mutability: "external"
52881
+ },
52882
+ {
52883
+ type: "function",
52884
+ name: "withdraw",
52885
+ inputs: [
52886
+ {
52887
+ name: "amount",
52888
+ type: "core::integer::u256"
52889
+ },
52890
+ {
52891
+ name: "receiver",
52892
+ type: "core::starknet::contract_address::ContractAddress"
52893
+ },
52894
+ {
52895
+ name: "max_slippage_bps",
52896
+ type: "core::integer::u32"
52897
+ }
52898
+ ],
52899
+ outputs: [],
52900
+ state_mutability: "external"
52901
+ },
52902
+ {
52903
+ type: "function",
52904
+ name: "get_all_shares",
52905
+ inputs: [],
52906
+ outputs: [
52907
+ {
52908
+ type: "strkfarm::interfaces::ERC721Strategy::Position"
52909
+ }
52910
+ ],
52911
+ state_mutability: "view"
52912
+ },
52913
+ {
52914
+ type: "function",
52915
+ name: "rebalance",
52916
+ inputs: [
52917
+ {
52918
+ name: "amount",
52919
+ type: "core::integer::u256"
52920
+ },
52921
+ {
52922
+ name: "shouldRepay",
52923
+ type: "core::bool"
52924
+ }
52925
+ ],
52926
+ outputs: [],
52927
+ state_mutability: "external"
52928
+ },
52929
+ {
52930
+ type: "function",
52931
+ name: "describe_position",
52932
+ inputs: [
52933
+ {
52934
+ name: "token_id",
52935
+ type: "core::felt252"
52936
+ }
52937
+ ],
52938
+ outputs: [
52939
+ {
52940
+ type: "(strkfarm::interfaces::ERC721Strategy::Position, strkfarm::interfaces::ERC721Strategy::PositionDescription)"
52941
+ }
52942
+ ],
52943
+ state_mutability: "view"
52944
+ },
52945
+ {
52946
+ type: "function",
52947
+ name: "set_settings",
52948
+ inputs: [
52949
+ {
52950
+ name: "settings",
52951
+ type: "strkfarm::interfaces::ERC721Strategy::Settings"
52952
+ }
52953
+ ],
52954
+ outputs: [],
52955
+ state_mutability: "external"
52956
+ },
52957
+ {
52958
+ type: "function",
52959
+ name: "initialize",
52960
+ inputs: [],
52961
+ outputs: [],
52962
+ state_mutability: "external"
52963
+ }
52964
+ ]
52965
+ },
52966
+ {
52967
+ type: "impl",
52968
+ name: "MMSettingsImpl",
52969
+ interface_name: "strkfarm::strats::dnmm_vesu::DeltaNeutralLoopingVesuXSTRK::IMMSettings"
52970
+ },
52971
+ {
52972
+ type: "struct",
52973
+ name: "strkfarm::components::endur::EndurSettings",
52974
+ members: [
52975
+ {
52976
+ name: "lst",
52977
+ type: "core::starknet::contract_address::ContractAddress"
52978
+ }
52979
+ ]
52980
+ },
52981
+ {
52982
+ type: "struct",
52983
+ name: "strkfarm::interfaces::IVesu::IStonDispatcher",
52984
+ members: [
52985
+ {
52986
+ name: "contract_address",
52987
+ type: "core::starknet::contract_address::ContractAddress"
52988
+ }
52989
+ ]
52990
+ },
52991
+ {
52992
+ type: "struct",
52993
+ name: "strkfarm::components::vesu::vesuStruct",
52994
+ members: [
52995
+ {
52996
+ name: "singleton",
52997
+ type: "strkfarm::interfaces::IVesu::IStonDispatcher"
52998
+ },
52999
+ {
53000
+ name: "pool_id",
53001
+ type: "core::felt252"
53002
+ },
53003
+ {
53004
+ name: "debt",
53005
+ type: "core::starknet::contract_address::ContractAddress"
53006
+ },
53007
+ {
53008
+ name: "col",
53009
+ type: "core::starknet::contract_address::ContractAddress"
53010
+ },
53011
+ {
53012
+ name: "oracle",
53013
+ type: "core::starknet::contract_address::ContractAddress"
53014
+ }
53015
+ ]
53016
+ },
53017
+ {
53018
+ type: "interface",
53019
+ name: "strkfarm::strats::dnmm_vesu::DeltaNeutralLoopingVesuXSTRK::IMMSettings",
53020
+ items: [
53021
+ {
53022
+ type: "function",
53023
+ name: "set_mm_settings",
53024
+ inputs: [
53025
+ {
53026
+ name: "lend_settings1",
53027
+ type: "strkfarm::components::endur::EndurSettings"
53028
+ },
53029
+ {
53030
+ name: "lend_settings2",
53031
+ type: "strkfarm::components::vesu::vesuStruct"
53032
+ }
53033
+ ],
53034
+ outputs: [],
53035
+ state_mutability: "external"
53036
+ }
53037
+ ]
53038
+ },
53039
+ {
53040
+ type: "impl",
53041
+ name: "DNMMImpl",
53042
+ interface_name: "strkfarm::interfaces::ERC721Strategy::IStrategy"
53043
+ },
53044
+ {
53045
+ type: "struct",
53046
+ name: "strkfarm::interfaces::ERC721Strategy::StrategyConfig",
53047
+ members: [
53048
+ {
53049
+ name: "main_token",
53050
+ type: "core::starknet::contract_address::ContractAddress"
53051
+ },
53052
+ {
53053
+ name: "main_offset",
53054
+ type: "core::integer::u128"
53055
+ },
53056
+ {
53057
+ name: "secondary_token",
53058
+ type: "core::starknet::contract_address::ContractAddress"
53059
+ },
53060
+ {
53061
+ name: "secondary_offset",
53062
+ type: "core::integer::u128"
53063
+ }
53064
+ ]
53065
+ },
53066
+ {
53067
+ type: "interface",
53068
+ name: "strkfarm::interfaces::ERC721Strategy::IStrategy",
53069
+ items: [
53070
+ {
53071
+ type: "function",
53072
+ name: "config",
53073
+ inputs: [],
53074
+ outputs: [
53075
+ {
53076
+ type: "strkfarm::interfaces::ERC721Strategy::StrategyConfig"
53077
+ }
53078
+ ],
53079
+ state_mutability: "view"
53080
+ },
53081
+ {
53082
+ type: "function",
53083
+ name: "get_settings",
53084
+ inputs: [],
53085
+ outputs: [
53086
+ {
53087
+ type: "strkfarm::interfaces::ERC721Strategy::Settings"
53088
+ }
53089
+ ],
53090
+ state_mutability: "view"
53091
+ }
53092
+ ]
53093
+ },
53094
+ {
53095
+ type: "impl",
53096
+ name: "EkuboLockedImpl",
53097
+ interface_name: "ekubo::interfaces::core::ILocker"
53098
+ },
53099
+ {
53100
+ type: "interface",
53101
+ name: "ekubo::interfaces::core::ILocker",
53102
+ items: [
53103
+ {
53104
+ type: "function",
53105
+ name: "locked",
53106
+ inputs: [
53107
+ {
53108
+ name: "id",
53109
+ type: "core::integer::u32"
53110
+ },
53111
+ {
53112
+ name: "data",
53113
+ type: "core::array::Span::<core::felt252>"
53114
+ }
53115
+ ],
53116
+ outputs: [
53117
+ {
53118
+ type: "core::array::Span::<core::felt252>"
53119
+ }
53120
+ ],
53121
+ state_mutability: "external"
53122
+ }
53123
+ ]
53124
+ },
53125
+ {
53126
+ type: "impl",
53127
+ name: "ERC721MixinImpl",
53128
+ interface_name: "openzeppelin_token::erc721::interface::ERC721ABI"
53129
+ },
53130
+ {
53131
+ type: "struct",
53132
+ name: "core::byte_array::ByteArray",
53133
+ members: [
53134
+ {
53135
+ name: "data",
53136
+ type: "core::array::Array::<core::bytes_31::bytes31>"
53137
+ },
53138
+ {
53139
+ name: "pending_word",
53140
+ type: "core::felt252"
53141
+ },
53142
+ {
53143
+ name: "pending_word_len",
53144
+ type: "core::integer::u32"
53145
+ }
53146
+ ]
53147
+ },
53148
+ {
53149
+ type: "interface",
53150
+ name: "openzeppelin_token::erc721::interface::ERC721ABI",
53151
+ items: [
53152
+ {
53153
+ type: "function",
53154
+ name: "balance_of",
53155
+ inputs: [
53156
+ {
53157
+ name: "account",
53158
+ type: "core::starknet::contract_address::ContractAddress"
53159
+ }
53160
+ ],
53161
+ outputs: [
53162
+ {
53163
+ type: "core::integer::u256"
53164
+ }
53165
+ ],
53166
+ state_mutability: "view"
53167
+ },
53168
+ {
53169
+ type: "function",
53170
+ name: "owner_of",
53171
+ inputs: [
53172
+ {
53173
+ name: "token_id",
53174
+ type: "core::integer::u256"
53175
+ }
53176
+ ],
53177
+ outputs: [
53178
+ {
53179
+ type: "core::starknet::contract_address::ContractAddress"
53180
+ }
53181
+ ],
53182
+ state_mutability: "view"
53183
+ },
53184
+ {
53185
+ type: "function",
53186
+ name: "safe_transfer_from",
53187
+ inputs: [
53188
+ {
53189
+ name: "from",
53190
+ type: "core::starknet::contract_address::ContractAddress"
53191
+ },
53192
+ {
53193
+ name: "to",
53194
+ type: "core::starknet::contract_address::ContractAddress"
53195
+ },
53196
+ {
53197
+ name: "token_id",
53198
+ type: "core::integer::u256"
53199
+ },
53200
+ {
53201
+ name: "data",
53202
+ type: "core::array::Span::<core::felt252>"
53203
+ }
53204
+ ],
53205
+ outputs: [],
53206
+ state_mutability: "external"
53207
+ },
53208
+ {
53209
+ type: "function",
53210
+ name: "transfer_from",
53211
+ inputs: [
53212
+ {
53213
+ name: "from",
53214
+ type: "core::starknet::contract_address::ContractAddress"
53215
+ },
53216
+ {
53217
+ name: "to",
53218
+ type: "core::starknet::contract_address::ContractAddress"
53219
+ },
53220
+ {
53221
+ name: "token_id",
53222
+ type: "core::integer::u256"
53223
+ }
53224
+ ],
53225
+ outputs: [],
53226
+ state_mutability: "external"
53227
+ },
53228
+ {
53229
+ type: "function",
53230
+ name: "approve",
53231
+ inputs: [
53232
+ {
53233
+ name: "to",
53234
+ type: "core::starknet::contract_address::ContractAddress"
53235
+ },
53236
+ {
53237
+ name: "token_id",
53238
+ type: "core::integer::u256"
53239
+ }
53240
+ ],
53241
+ outputs: [],
53242
+ state_mutability: "external"
53243
+ },
53244
+ {
53245
+ type: "function",
53246
+ name: "set_approval_for_all",
53247
+ inputs: [
53248
+ {
53249
+ name: "operator",
53250
+ type: "core::starknet::contract_address::ContractAddress"
53251
+ },
53252
+ {
53253
+ name: "approved",
53254
+ type: "core::bool"
53255
+ }
53256
+ ],
53257
+ outputs: [],
53258
+ state_mutability: "external"
53259
+ },
53260
+ {
53261
+ type: "function",
53262
+ name: "get_approved",
53263
+ inputs: [
53264
+ {
53265
+ name: "token_id",
53266
+ type: "core::integer::u256"
53267
+ }
53268
+ ],
53269
+ outputs: [
53270
+ {
53271
+ type: "core::starknet::contract_address::ContractAddress"
53272
+ }
53273
+ ],
53274
+ state_mutability: "view"
53275
+ },
53276
+ {
53277
+ type: "function",
53278
+ name: "is_approved_for_all",
53279
+ inputs: [
53280
+ {
53281
+ name: "owner",
53282
+ type: "core::starknet::contract_address::ContractAddress"
53283
+ },
53284
+ {
53285
+ name: "operator",
53286
+ type: "core::starknet::contract_address::ContractAddress"
53287
+ }
53288
+ ],
53289
+ outputs: [
53290
+ {
53291
+ type: "core::bool"
53292
+ }
53293
+ ],
53294
+ state_mutability: "view"
53295
+ },
53296
+ {
53297
+ type: "function",
53298
+ name: "supports_interface",
53299
+ inputs: [
53300
+ {
53301
+ name: "interface_id",
53302
+ type: "core::felt252"
53303
+ }
53304
+ ],
53305
+ outputs: [
53306
+ {
53307
+ type: "core::bool"
53308
+ }
53309
+ ],
53310
+ state_mutability: "view"
53311
+ },
53312
+ {
53313
+ type: "function",
53314
+ name: "name",
53315
+ inputs: [],
53316
+ outputs: [
53317
+ {
53318
+ type: "core::byte_array::ByteArray"
53319
+ }
53320
+ ],
53321
+ state_mutability: "view"
53322
+ },
53323
+ {
53324
+ type: "function",
53325
+ name: "symbol",
53326
+ inputs: [],
53327
+ outputs: [
53328
+ {
53329
+ type: "core::byte_array::ByteArray"
53330
+ }
53331
+ ],
53332
+ state_mutability: "view"
53333
+ },
53334
+ {
53335
+ type: "function",
53336
+ name: "token_uri",
53337
+ inputs: [
53338
+ {
53339
+ name: "token_id",
53340
+ type: "core::integer::u256"
53341
+ }
53342
+ ],
53343
+ outputs: [
53344
+ {
53345
+ type: "core::byte_array::ByteArray"
53346
+ }
53347
+ ],
53348
+ state_mutability: "view"
53349
+ },
53350
+ {
53351
+ type: "function",
53352
+ name: "balanceOf",
53353
+ inputs: [
53354
+ {
53355
+ name: "account",
53356
+ type: "core::starknet::contract_address::ContractAddress"
53357
+ }
53358
+ ],
53359
+ outputs: [
53360
+ {
53361
+ type: "core::integer::u256"
53362
+ }
53363
+ ],
53364
+ state_mutability: "view"
53365
+ },
53366
+ {
53367
+ type: "function",
53368
+ name: "ownerOf",
53369
+ inputs: [
53370
+ {
53371
+ name: "tokenId",
53372
+ type: "core::integer::u256"
53373
+ }
53374
+ ],
53375
+ outputs: [
53376
+ {
53377
+ type: "core::starknet::contract_address::ContractAddress"
53378
+ }
53379
+ ],
53380
+ state_mutability: "view"
53381
+ },
53382
+ {
53383
+ type: "function",
53384
+ name: "safeTransferFrom",
53385
+ inputs: [
53386
+ {
53387
+ name: "from",
53388
+ type: "core::starknet::contract_address::ContractAddress"
53389
+ },
53390
+ {
53391
+ name: "to",
53392
+ type: "core::starknet::contract_address::ContractAddress"
53393
+ },
53394
+ {
53395
+ name: "tokenId",
53396
+ type: "core::integer::u256"
53397
+ },
53398
+ {
53399
+ name: "data",
53400
+ type: "core::array::Span::<core::felt252>"
53401
+ }
53402
+ ],
53403
+ outputs: [],
53404
+ state_mutability: "external"
53405
+ },
53406
+ {
53407
+ type: "function",
53408
+ name: "transferFrom",
53409
+ inputs: [
53410
+ {
53411
+ name: "from",
53412
+ type: "core::starknet::contract_address::ContractAddress"
53413
+ },
53414
+ {
53415
+ name: "to",
53416
+ type: "core::starknet::contract_address::ContractAddress"
53417
+ },
53418
+ {
53419
+ name: "tokenId",
53420
+ type: "core::integer::u256"
53421
+ }
53422
+ ],
53423
+ outputs: [],
53424
+ state_mutability: "external"
53425
+ },
53426
+ {
53427
+ type: "function",
53428
+ name: "setApprovalForAll",
53429
+ inputs: [
53430
+ {
53431
+ name: "operator",
53432
+ type: "core::starknet::contract_address::ContractAddress"
53433
+ },
53434
+ {
53435
+ name: "approved",
53436
+ type: "core::bool"
53437
+ }
53438
+ ],
53439
+ outputs: [],
53440
+ state_mutability: "external"
53441
+ },
53442
+ {
53443
+ type: "function",
53444
+ name: "getApproved",
53445
+ inputs: [
53446
+ {
53447
+ name: "tokenId",
53448
+ type: "core::integer::u256"
53449
+ }
53450
+ ],
53451
+ outputs: [
53452
+ {
53453
+ type: "core::starknet::contract_address::ContractAddress"
53454
+ }
53455
+ ],
53456
+ state_mutability: "view"
53457
+ },
53458
+ {
53459
+ type: "function",
53460
+ name: "isApprovedForAll",
53461
+ inputs: [
53462
+ {
53463
+ name: "owner",
53464
+ type: "core::starknet::contract_address::ContractAddress"
53465
+ },
53466
+ {
53467
+ name: "operator",
53468
+ type: "core::starknet::contract_address::ContractAddress"
53469
+ }
53470
+ ],
53471
+ outputs: [
53472
+ {
53473
+ type: "core::bool"
53474
+ }
53475
+ ],
53476
+ state_mutability: "view"
53477
+ },
53478
+ {
53479
+ type: "function",
53480
+ name: "tokenURI",
53481
+ inputs: [
53482
+ {
53483
+ name: "tokenId",
53484
+ type: "core::integer::u256"
53485
+ }
53486
+ ],
53487
+ outputs: [
53488
+ {
53489
+ type: "core::byte_array::ByteArray"
53490
+ }
53491
+ ],
53492
+ state_mutability: "view"
53493
+ }
53494
+ ]
53495
+ },
53496
+ {
53497
+ type: "impl",
53498
+ name: "RewardShareImpl",
53499
+ interface_name: "strkfarm::components::harvester::reward_shares::IRewardShare"
53500
+ },
53501
+ {
53502
+ type: "struct",
53503
+ name: "strkfarm::components::harvester::reward_shares::UserRewardsInfo",
53504
+ members: [
53505
+ {
53506
+ name: "pending_round_points",
53507
+ type: "core::felt252"
53508
+ },
53509
+ {
53510
+ name: "shares_owned",
53511
+ type: "core::felt252"
53512
+ },
53513
+ {
53514
+ name: "block_number",
53515
+ type: "core::integer::u64"
53516
+ },
53517
+ {
53518
+ name: "index",
53519
+ type: "core::integer::u32"
53520
+ }
53521
+ ]
53522
+ },
53523
+ {
53524
+ type: "struct",
53525
+ name: "strkfarm::components::harvester::reward_shares::RewardsInfo",
53526
+ members: [
53527
+ {
53528
+ name: "amount",
53529
+ type: "core::felt252"
53530
+ },
53531
+ {
53532
+ name: "shares",
53533
+ type: "core::felt252"
53534
+ },
53535
+ {
53536
+ name: "total_round_points",
53537
+ type: "core::felt252"
53538
+ },
53539
+ {
53540
+ name: "block_number",
53541
+ type: "core::integer::u64"
53542
+ }
53543
+ ]
53544
+ },
53545
+ {
53546
+ type: "interface",
53547
+ name: "strkfarm::components::harvester::reward_shares::IRewardShare",
53548
+ items: [
53549
+ {
53550
+ type: "function",
53551
+ name: "get_user_reward_info",
53552
+ inputs: [
53553
+ {
53554
+ name: "user",
53555
+ type: "core::starknet::contract_address::ContractAddress"
53556
+ }
53557
+ ],
53558
+ outputs: [
53559
+ {
53560
+ type: "strkfarm::components::harvester::reward_shares::UserRewardsInfo"
53561
+ }
53562
+ ],
53563
+ state_mutability: "view"
53564
+ },
53565
+ {
53566
+ type: "function",
53567
+ name: "get_rewards_info",
53568
+ inputs: [
53569
+ {
53570
+ name: "index",
53571
+ type: "core::integer::u32"
53572
+ }
53573
+ ],
53574
+ outputs: [
53575
+ {
53576
+ type: "strkfarm::components::harvester::reward_shares::RewardsInfo"
53577
+ }
53578
+ ],
53579
+ state_mutability: "view"
53580
+ },
53581
+ {
53582
+ type: "function",
53583
+ name: "get_total_rewards",
53584
+ inputs: [],
53585
+ outputs: [
53586
+ {
53587
+ type: "core::integer::u32"
53588
+ }
53589
+ ],
53590
+ state_mutability: "view"
53591
+ },
53592
+ {
53593
+ type: "function",
53594
+ name: "get_total_unminted_shares",
53595
+ inputs: [],
53596
+ outputs: [
53597
+ {
53598
+ type: "core::felt252"
53599
+ }
53600
+ ],
53601
+ state_mutability: "view"
53602
+ },
53603
+ {
53604
+ type: "function",
53605
+ name: "get_additional_shares",
53606
+ inputs: [
53607
+ {
53608
+ name: "user",
53609
+ type: "core::starknet::contract_address::ContractAddress"
53610
+ }
53611
+ ],
53612
+ outputs: [
53613
+ {
53614
+ type: "(core::felt252, core::integer::u64, core::felt252)"
53615
+ }
53616
+ ],
53617
+ state_mutability: "view"
53618
+ }
53619
+ ]
53620
+ },
53621
+ {
53622
+ type: "impl",
53623
+ name: "CommonCompImpl",
53624
+ interface_name: "strkfarm::interfaces::common::ICommon"
53625
+ },
53626
+ {
53627
+ type: "interface",
53628
+ name: "strkfarm::interfaces::common::ICommon",
53629
+ items: [
53630
+ {
53631
+ type: "function",
53632
+ name: "upgrade",
53633
+ inputs: [
53634
+ {
53635
+ name: "new_class",
53636
+ type: "core::starknet::class_hash::ClassHash"
53637
+ }
53638
+ ],
53639
+ outputs: [],
53640
+ state_mutability: "external"
53641
+ },
53642
+ {
53643
+ type: "function",
53644
+ name: "pause",
53645
+ inputs: [],
53646
+ outputs: [],
53647
+ state_mutability: "external"
53648
+ },
53649
+ {
53650
+ type: "function",
53651
+ name: "unpause",
53652
+ inputs: [],
53653
+ outputs: [],
53654
+ state_mutability: "external"
53655
+ },
53656
+ {
53657
+ type: "function",
53658
+ name: "is_paused",
53659
+ inputs: [],
53660
+ outputs: [
53661
+ {
53662
+ type: "core::bool"
53663
+ }
53664
+ ],
53665
+ state_mutability: "view"
53666
+ },
53667
+ {
53668
+ type: "function",
53669
+ name: "owner",
53670
+ inputs: [],
53671
+ outputs: [
53672
+ {
53673
+ type: "core::starknet::contract_address::ContractAddress"
53674
+ }
53675
+ ],
53676
+ state_mutability: "view"
53677
+ },
53678
+ {
53679
+ type: "function",
53680
+ name: "transfer_ownership",
53681
+ inputs: [
53682
+ {
53683
+ name: "new_owner",
53684
+ type: "core::starknet::contract_address::ContractAddress"
53685
+ }
53686
+ ],
53687
+ outputs: [],
53688
+ state_mutability: "external"
53689
+ },
53690
+ {
53691
+ type: "function",
53692
+ name: "renounce_ownership",
53693
+ inputs: [],
53694
+ outputs: [],
53695
+ state_mutability: "external"
53696
+ }
53697
+ ]
53698
+ },
53699
+ {
53700
+ type: "constructor",
53701
+ name: "constructor",
53702
+ inputs: [
53703
+ {
53704
+ name: "name",
53705
+ type: "core::byte_array::ByteArray"
53706
+ },
53707
+ {
53708
+ name: "symbol",
53709
+ type: "core::byte_array::ByteArray"
53710
+ },
53711
+ {
53712
+ name: "base_uri",
53713
+ type: "core::byte_array::ByteArray"
53714
+ },
53715
+ {
53716
+ name: "owner",
53717
+ type: "core::starknet::contract_address::ContractAddress"
53718
+ },
53719
+ {
53720
+ name: "main_token",
53721
+ type: "core::starknet::contract_address::ContractAddress"
53722
+ },
53723
+ {
53724
+ name: "main_offset",
53725
+ type: "core::integer::u128"
53726
+ },
53727
+ {
53728
+ name: "secondary_token",
53729
+ type: "core::starknet::contract_address::ContractAddress"
53730
+ },
53731
+ {
53732
+ name: "secondary_offset",
53733
+ type: "core::integer::u128"
53734
+ },
53735
+ {
53736
+ name: "settings",
53737
+ type: "strkfarm::interfaces::ERC721Strategy::Settings"
53738
+ },
53739
+ {
53740
+ name: "lend_settings1",
53741
+ type: "strkfarm::components::endur::EndurSettings"
53742
+ },
53743
+ {
53744
+ name: "lend_settings2",
53745
+ type: "strkfarm::components::vesu::vesuStruct"
53746
+ }
53747
+ ]
53748
+ },
53749
+ {
53750
+ type: "event",
53751
+ name: "openzeppelin_token::erc721::erc721::ERC721Component::Transfer",
53752
+ kind: "struct",
53753
+ members: [
53754
+ {
53755
+ name: "from",
53756
+ type: "core::starknet::contract_address::ContractAddress",
53757
+ kind: "key"
53758
+ },
53759
+ {
53760
+ name: "to",
53761
+ type: "core::starknet::contract_address::ContractAddress",
53762
+ kind: "key"
53763
+ },
53764
+ {
53765
+ name: "token_id",
53766
+ type: "core::integer::u256",
53767
+ kind: "key"
53768
+ }
53769
+ ]
53770
+ },
53771
+ {
53772
+ type: "event",
53773
+ name: "openzeppelin_token::erc721::erc721::ERC721Component::Approval",
53774
+ kind: "struct",
53775
+ members: [
53776
+ {
53777
+ name: "owner",
53778
+ type: "core::starknet::contract_address::ContractAddress",
53779
+ kind: "key"
53780
+ },
53781
+ {
53782
+ name: "approved",
53783
+ type: "core::starknet::contract_address::ContractAddress",
53784
+ kind: "key"
53785
+ },
53786
+ {
53787
+ name: "token_id",
53788
+ type: "core::integer::u256",
53789
+ kind: "key"
53790
+ }
53791
+ ]
53792
+ },
53793
+ {
53794
+ type: "event",
53795
+ name: "openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll",
53796
+ kind: "struct",
53797
+ members: [
53798
+ {
53799
+ name: "owner",
53800
+ type: "core::starknet::contract_address::ContractAddress",
53801
+ kind: "key"
53802
+ },
53803
+ {
53804
+ name: "operator",
53805
+ type: "core::starknet::contract_address::ContractAddress",
53806
+ kind: "key"
53807
+ },
53808
+ {
53809
+ name: "approved",
53810
+ type: "core::bool",
53811
+ kind: "data"
53812
+ }
53813
+ ]
53814
+ },
53815
+ {
53816
+ type: "event",
53817
+ name: "openzeppelin_token::erc721::erc721::ERC721Component::Event",
53818
+ kind: "enum",
53819
+ variants: [
53820
+ {
53821
+ name: "Transfer",
53822
+ type: "openzeppelin_token::erc721::erc721::ERC721Component::Transfer",
53823
+ kind: "nested"
53824
+ },
53825
+ {
53826
+ name: "Approval",
53827
+ type: "openzeppelin_token::erc721::erc721::ERC721Component::Approval",
53828
+ kind: "nested"
53829
+ },
53830
+ {
53831
+ name: "ApprovalForAll",
53832
+ type: "openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll",
53833
+ kind: "nested"
53834
+ }
53835
+ ]
53836
+ },
53837
+ {
53838
+ type: "event",
53839
+ name: "openzeppelin_introspection::src5::SRC5Component::Event",
53840
+ kind: "enum",
53841
+ variants: []
53842
+ },
53843
+ {
53844
+ type: "event",
53845
+ name: "openzeppelin_upgrades::upgradeable::UpgradeableComponent::Upgraded",
53846
+ kind: "struct",
53847
+ members: [
53848
+ {
53849
+ name: "class_hash",
53850
+ type: "core::starknet::class_hash::ClassHash",
53851
+ kind: "data"
53852
+ }
53853
+ ]
53854
+ },
53855
+ {
53856
+ type: "event",
53857
+ name: "openzeppelin_upgrades::upgradeable::UpgradeableComponent::Event",
53858
+ kind: "enum",
53859
+ variants: [
53860
+ {
53861
+ name: "Upgraded",
53862
+ type: "openzeppelin_upgrades::upgradeable::UpgradeableComponent::Upgraded",
53863
+ kind: "nested"
53864
+ }
53865
+ ]
53866
+ },
53867
+ {
53868
+ type: "event",
53869
+ name: "openzeppelin_security::pausable::PausableComponent::Paused",
53870
+ kind: "struct",
53871
+ members: [
53872
+ {
53873
+ name: "account",
53874
+ type: "core::starknet::contract_address::ContractAddress",
53875
+ kind: "data"
53876
+ }
53877
+ ]
53878
+ },
53879
+ {
53880
+ type: "event",
53881
+ name: "openzeppelin_security::pausable::PausableComponent::Unpaused",
53882
+ kind: "struct",
53883
+ members: [
53884
+ {
53885
+ name: "account",
53886
+ type: "core::starknet::contract_address::ContractAddress",
53887
+ kind: "data"
53888
+ }
53889
+ ]
53890
+ },
53891
+ {
53892
+ type: "event",
53893
+ name: "openzeppelin_security::pausable::PausableComponent::Event",
53894
+ kind: "enum",
53895
+ variants: [
53896
+ {
53897
+ name: "Paused",
53898
+ type: "openzeppelin_security::pausable::PausableComponent::Paused",
53899
+ kind: "nested"
53900
+ },
53901
+ {
53902
+ name: "Unpaused",
53903
+ type: "openzeppelin_security::pausable::PausableComponent::Unpaused",
53904
+ kind: "nested"
53905
+ }
53906
+ ]
53907
+ },
53908
+ {
53909
+ type: "event",
53910
+ name: "openzeppelin_security::reentrancyguard::ReentrancyGuardComponent::Event",
53911
+ kind: "enum",
53912
+ variants: []
53913
+ },
53914
+ {
53915
+ type: "event",
53916
+ name: "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred",
53917
+ kind: "struct",
53918
+ members: [
53919
+ {
53920
+ name: "previous_owner",
53921
+ type: "core::starknet::contract_address::ContractAddress",
53922
+ kind: "key"
53923
+ },
53924
+ {
53925
+ name: "new_owner",
53926
+ type: "core::starknet::contract_address::ContractAddress",
53927
+ kind: "key"
53928
+ }
53929
+ ]
53930
+ },
53931
+ {
53932
+ type: "event",
53933
+ name: "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted",
53934
+ kind: "struct",
53935
+ members: [
53936
+ {
53937
+ name: "previous_owner",
53938
+ type: "core::starknet::contract_address::ContractAddress",
53939
+ kind: "key"
53940
+ },
53941
+ {
53942
+ name: "new_owner",
53943
+ type: "core::starknet::contract_address::ContractAddress",
53944
+ kind: "key"
53945
+ }
53946
+ ]
53947
+ },
53948
+ {
53949
+ type: "event",
53950
+ name: "openzeppelin_access::ownable::ownable::OwnableComponent::Event",
53951
+ kind: "enum",
53952
+ variants: [
53953
+ {
53954
+ name: "OwnershipTransferred",
53955
+ type: "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred",
53956
+ kind: "nested"
53957
+ },
53958
+ {
53959
+ name: "OwnershipTransferStarted",
53960
+ type: "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted",
53961
+ kind: "nested"
53962
+ }
53963
+ ]
53964
+ },
53965
+ {
53966
+ type: "event",
53967
+ name: "strkfarm::components::common::CommonComp::Event",
53968
+ kind: "enum",
53969
+ variants: []
53970
+ },
53971
+ {
53972
+ type: "event",
53973
+ name: "strkfarm::components::harvester::reward_shares::RewardShareComponent::Rewards",
53974
+ kind: "struct",
53975
+ members: [
53976
+ {
53977
+ name: "index",
53978
+ type: "core::integer::u32",
53979
+ kind: "data"
53980
+ },
53981
+ {
53982
+ name: "info",
53983
+ type: "strkfarm::components::harvester::reward_shares::RewardsInfo",
53984
+ kind: "data"
53985
+ },
53986
+ {
53987
+ name: "total_reward_shares",
53988
+ type: "core::felt252",
53989
+ kind: "data"
53990
+ },
53991
+ {
53992
+ name: "timestamp",
53993
+ type: "core::integer::u64",
53994
+ kind: "data"
53995
+ }
53996
+ ]
53997
+ },
53998
+ {
53999
+ type: "event",
54000
+ name: "strkfarm::components::harvester::reward_shares::RewardShareComponent::UserRewards",
54001
+ kind: "struct",
54002
+ members: [
54003
+ {
54004
+ name: "user",
54005
+ type: "core::starknet::contract_address::ContractAddress",
54006
+ kind: "key"
54007
+ },
54008
+ {
54009
+ name: "info",
54010
+ type: "strkfarm::components::harvester::reward_shares::UserRewardsInfo",
54011
+ kind: "data"
54012
+ },
54013
+ {
54014
+ name: "total_reward_shares",
54015
+ type: "core::felt252",
54016
+ kind: "data"
54017
+ },
54018
+ {
54019
+ name: "timestamp",
54020
+ type: "core::integer::u64",
54021
+ kind: "data"
54022
+ }
54023
+ ]
54024
+ },
54025
+ {
54026
+ type: "event",
54027
+ name: "strkfarm::components::harvester::reward_shares::RewardShareComponent::Event",
54028
+ kind: "enum",
54029
+ variants: [
54030
+ {
54031
+ name: "Rewards",
54032
+ type: "strkfarm::components::harvester::reward_shares::RewardShareComponent::Rewards",
54033
+ kind: "nested"
54034
+ },
54035
+ {
54036
+ name: "UserRewards",
54037
+ type: "strkfarm::components::harvester::reward_shares::RewardShareComponent::UserRewards",
54038
+ kind: "nested"
54039
+ }
54040
+ ]
54041
+ },
54042
+ {
54043
+ type: "event",
54044
+ name: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Deposit",
54045
+ kind: "struct",
54046
+ members: [
54047
+ {
54048
+ name: "sender",
54049
+ type: "core::starknet::contract_address::ContractAddress",
54050
+ kind: "key"
54051
+ },
54052
+ {
54053
+ name: "owner",
54054
+ type: "core::starknet::contract_address::ContractAddress",
54055
+ kind: "key"
54056
+ },
54057
+ {
54058
+ name: "assets",
54059
+ type: "core::integer::u256",
54060
+ kind: "data"
54061
+ },
54062
+ {
54063
+ name: "net_position",
54064
+ type: "strkfarm::interfaces::ERC721Strategy::Position",
54065
+ kind: "data"
54066
+ }
54067
+ ]
54068
+ },
54069
+ {
54070
+ type: "event",
54071
+ name: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Withdraw",
54072
+ kind: "struct",
54073
+ members: [
54074
+ {
54075
+ name: "sender",
54076
+ type: "core::starknet::contract_address::ContractAddress",
54077
+ kind: "key"
54078
+ },
54079
+ {
54080
+ name: "receiver",
54081
+ type: "core::starknet::contract_address::ContractAddress",
54082
+ kind: "key"
54083
+ },
54084
+ {
54085
+ name: "owner",
54086
+ type: "core::starknet::contract_address::ContractAddress",
54087
+ kind: "key"
54088
+ },
54089
+ {
54090
+ name: "assets",
54091
+ type: "core::integer::u256",
54092
+ kind: "data"
54093
+ },
54094
+ {
54095
+ name: "net_position",
54096
+ type: "strkfarm::interfaces::ERC721Strategy::Position",
54097
+ kind: "data"
54098
+ }
54099
+ ]
54100
+ },
54101
+ {
54102
+ type: "event",
54103
+ name: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Rebalance",
54104
+ kind: "struct",
54105
+ members: [
54106
+ {
54107
+ name: "caller",
54108
+ type: "core::starknet::contract_address::ContractAddress",
54109
+ kind: "key"
54110
+ },
54111
+ {
54112
+ name: "amount",
54113
+ type: "core::integer::u256",
54114
+ kind: "data"
54115
+ },
54116
+ {
54117
+ name: "shouldRepay",
54118
+ type: "core::bool",
54119
+ kind: "data"
54120
+ },
54121
+ {
54122
+ name: "pre_hf1",
54123
+ type: "core::integer::u32",
54124
+ kind: "data"
54125
+ },
54126
+ {
54127
+ name: "pre_hf2",
54128
+ type: "core::integer::u32",
54129
+ kind: "data"
54130
+ },
54131
+ {
54132
+ name: "hf1",
54133
+ type: "core::integer::u32",
54134
+ kind: "data"
54135
+ },
54136
+ {
54137
+ name: "hf2",
54138
+ type: "core::integer::u32",
54139
+ kind: "data"
54140
+ }
54141
+ ]
54142
+ },
54143
+ {
54144
+ type: "event",
54145
+ name: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::ShareUpdate",
54146
+ kind: "struct",
54147
+ members: [
54148
+ {
54149
+ name: "token_id",
54150
+ type: "core::felt252",
54151
+ kind: "key"
54152
+ },
54153
+ {
54154
+ name: "action_id",
54155
+ type: "core::integer::u8",
54156
+ kind: "key"
54157
+ },
54158
+ {
54159
+ name: "user_shares",
54160
+ type: "core::felt252",
54161
+ kind: "data"
54162
+ },
54163
+ {
54164
+ name: "total_shares",
54165
+ type: "core::felt252",
54166
+ kind: "data"
54167
+ }
54168
+ ]
54169
+ },
54170
+ {
54171
+ type: "event",
54172
+ name: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Event",
54173
+ kind: "enum",
54174
+ variants: [
54175
+ {
54176
+ name: "Deposit",
54177
+ type: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Deposit",
54178
+ kind: "nested"
54179
+ },
54180
+ {
54181
+ name: "Withdraw",
54182
+ type: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Withdraw",
54183
+ kind: "nested"
54184
+ },
54185
+ {
54186
+ name: "Rebalance",
54187
+ type: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Rebalance",
54188
+ kind: "nested"
54189
+ },
54190
+ {
54191
+ name: "ShareUpdate",
54192
+ type: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::ShareUpdate",
54193
+ kind: "nested"
54194
+ }
54195
+ ]
54196
+ },
54197
+ {
54198
+ type: "event",
54199
+ name: "strkfarm::strats::dnmm_vesu::DeltaNeutralLoopingVesuXSTRK::Event",
54200
+ kind: "enum",
54201
+ variants: [
54202
+ {
54203
+ name: "ERC721Event",
54204
+ type: "openzeppelin_token::erc721::erc721::ERC721Component::Event",
54205
+ kind: "flat"
54206
+ },
54207
+ {
54208
+ name: "SRC5Event",
54209
+ type: "openzeppelin_introspection::src5::SRC5Component::Event",
54210
+ kind: "flat"
54211
+ },
54212
+ {
54213
+ name: "UpgradeableEvent",
54214
+ type: "openzeppelin_upgrades::upgradeable::UpgradeableComponent::Event",
54215
+ kind: "flat"
54216
+ },
54217
+ {
54218
+ name: "PausableEvent",
54219
+ type: "openzeppelin_security::pausable::PausableComponent::Event",
54220
+ kind: "flat"
54221
+ },
54222
+ {
54223
+ name: "ReentrancyGuardEvent",
54224
+ type: "openzeppelin_security::reentrancyguard::ReentrancyGuardComponent::Event",
54225
+ kind: "flat"
54226
+ },
54227
+ {
54228
+ name: "OwnableEvent",
54229
+ type: "openzeppelin_access::ownable::ownable::OwnableComponent::Event",
54230
+ kind: "flat"
54231
+ },
54232
+ {
54233
+ name: "CommonCompEvent",
54234
+ type: "strkfarm::components::common::CommonComp::Event",
54235
+ kind: "flat"
54236
+ },
54237
+ {
54238
+ name: "RewardShareEvent",
54239
+ type: "strkfarm::components::harvester::reward_shares::RewardShareComponent::Event",
54240
+ kind: "flat"
54241
+ },
54242
+ {
54243
+ name: "DeltaNeutralLoopingEvent",
54244
+ type: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Event",
54245
+ kind: "flat"
54246
+ }
54247
+ ]
54248
+ }
54249
+ ];
54250
+
54251
+ // src/strategies/sensei.ts
54252
+ var SenseiVault = class extends BaseStrategy {
54253
+ constructor(config2, pricer, metadata) {
54254
+ super(config2);
54255
+ this.getSettings = async () => {
54256
+ const settings2 = await this.contract.call("get_settings", []);
54257
+ logger.verbose("getSettings", settings2);
54258
+ return settings2;
54259
+ };
54260
+ this.address = metadata.address;
54261
+ this.pricer = pricer;
54262
+ this.metadata = metadata;
54263
+ this.contract = new Contract(sensei_abi_default, this.address.address, this.config.provider);
54264
+ if (metadata.depositTokens.length === 0) {
54265
+ throw new Error("Deposit tokens are not defined in metadata");
54266
+ }
54267
+ }
54268
+ async getUserTVL(user) {
54269
+ const result = await this.contract.call(
54270
+ "describe_position",
54271
+ [user.address]
54272
+ );
54273
+ const amount = Web3Number.fromWei(
54274
+ uint256_exports.uint256ToBN(result[1].estimated_size).toString(),
54275
+ this.metadata.depositTokens[0].decimals
54276
+ );
54277
+ const price = await this.pricer.getPrice(
54278
+ this.metadata.depositTokens[0].symbol
54279
+ );
54280
+ return {
54281
+ usdValue: Number(amount.toFixed(6)) * price.price,
54282
+ amount,
54283
+ tokenInfo: this.metadata.depositTokens[0]
54284
+ };
54285
+ }
54286
+ async getTVL() {
54287
+ try {
54288
+ const {
54289
+ collateralXSTRK,
54290
+ collateralUSDValue,
54291
+ debtSTRK,
54292
+ debtUSDValue,
54293
+ xSTRKPrice,
54294
+ collateralInSTRK
54295
+ } = await this.getPositionInfo();
54296
+ const usdValue = Number(collateralUSDValue.toFixed(6)) - Number(debtUSDValue.toFixed(6));
54297
+ return {
54298
+ usdValue,
54299
+ amount: new Web3Number(
54300
+ (collateralInSTRK - Number(debtSTRK.toFixed(6))).toFixed(6),
54301
+ collateralXSTRK.decimals
54302
+ ),
54303
+ tokenInfo: this.metadata.depositTokens[0]
54304
+ };
54305
+ } catch (error2) {
54306
+ console.error("Error fetching TVL:", error2);
54307
+ return {
54308
+ usdValue: 0,
54309
+ amount: new Web3Number("0", this.metadata.depositTokens[0].decimals),
54310
+ tokenInfo: this.metadata.depositTokens[0]
54311
+ };
54312
+ }
54313
+ }
54314
+ async depositCall(amountInfo, receiver) {
54315
+ const mainTokenContract = new Contract(
54316
+ erc20_abi_default,
54317
+ this.metadata.depositTokens[0].address.address,
54318
+ this.config.provider
54319
+ );
54320
+ const call1 = mainTokenContract.populate("approve", [
54321
+ this.address.address,
54322
+ uint256_exports.bnToUint256(amountInfo.amount.toWei())
54323
+ ]);
54324
+ const call2 = this.contract.populate("deposit", [
54325
+ uint256_exports.bnToUint256(amountInfo.amount.toWei()),
54326
+ receiver.address
54327
+ ]);
54328
+ const calls = [call1, call2];
54329
+ return calls;
54330
+ }
54331
+ async withdrawCall(amountInfo, receiver, owner) {
54332
+ const call = this.contract.populate("withdraw", [
54333
+ uint256_exports.bnToUint256(amountInfo.amount.toWei()),
54334
+ receiver.address,
54335
+ 300
54336
+ // 3% max slippage
54337
+ ]);
54338
+ return [call];
54339
+ }
54340
+ async getPositionInfo() {
54341
+ const CACHE_KEY = "positionInfo";
54342
+ if (this.isCacheValid(CACHE_KEY)) {
54343
+ return this.getCache(CACHE_KEY);
54344
+ }
54345
+ const resp = await fetch(
54346
+ `${getTrovesEndpoint()}/vesu/positions?walletAddress=${this.address.address}`
54347
+ );
54348
+ const data = await resp.json();
54349
+ if (!data.data || data.data.length == 0) {
54350
+ throw new Error("No positions found");
54351
+ }
54352
+ const collateralXSTRK = Web3Number.fromWei(
54353
+ data.data[0].collateral.value,
54354
+ data.data[0].collateral.decimals
54355
+ );
54356
+ const collateralUSDValue = Web3Number.fromWei(
54357
+ data.data[0].collateral.usdPrice.value,
54358
+ data.data[0].collateral.usdPrice.decimals
54359
+ );
54360
+ const debtSTRK = Web3Number.fromWei(
54361
+ data.data[0].debt.value,
54362
+ data.data[0].debt.decimals
54363
+ );
54364
+ const debtUSDValue = Web3Number.fromWei(
54365
+ data.data[0].debt.usdPrice.value,
54366
+ data.data[0].debt.usdPrice.decimals
54367
+ );
54368
+ const xSTRKPrice = await this.getSecondaryTokenPriceRelativeToMain();
54369
+ const collateralInSTRK = Number(collateralXSTRK.toFixed(6)) * xSTRKPrice;
54370
+ const STRKUSDPrice = Number(debtUSDValue.toFixed(6)) / Number(debtSTRK.toFixed(6));
54371
+ const actualCollateralUSDValue = collateralInSTRK * STRKUSDPrice;
54372
+ const cacheData = {
54373
+ collateralXSTRK,
54374
+ collateralUSDValue: new Web3Number(
54375
+ actualCollateralUSDValue.toFixed(6),
54376
+ collateralUSDValue.decimals
54377
+ ),
54378
+ debtSTRK,
54379
+ debtUSDValue,
54380
+ xSTRKPrice,
54381
+ collateralInSTRK
54382
+ };
54383
+ this.setCache(CACHE_KEY, cacheData);
54384
+ return cacheData;
54385
+ }
54386
+ async getSecondaryTokenPriceRelativeToMain(retry = 0) {
54387
+ const CACHE_KEY = "xSTRKPrice";
54388
+ if (this.isCacheValid(CACHE_KEY)) {
54389
+ return this.getCache(CACHE_KEY);
54390
+ }
54391
+ const params = {
54392
+ sellTokenAddress: this.metadata.additionalInfo.secondaryToken.address.address,
54393
+ buyTokenAddress: this.metadata.additionalInfo.mainToken.address.address,
54394
+ sellAmount: BigInt(new Web3Number("1", 18).toWei()),
54395
+ takerAddress: this.address.address
54396
+ };
54397
+ logger.verbose("getSecondaryTokenPriceRelativeToMain [1]", params);
54398
+ let avnu = new AvnuWrapper();
54399
+ const quote = await avnu.getQuotes(
54400
+ params.sellTokenAddress,
54401
+ params.buyTokenAddress,
54402
+ params.sellAmount?.toString() || "0",
54403
+ params.takerAddress
54404
+ );
54405
+ if (!quote) {
54406
+ throw new Error("No quotes found to compute secondary token price relative to main token");
54407
+ }
54408
+ const firstQuote = quote;
54409
+ const price = Number(
54410
+ Web3Number.fromWei(firstQuote.buyAmount.toString(), 18).toFixed(
54411
+ 6
54412
+ )
54413
+ );
54414
+ logger.verbose("getSecondaryTokenPriceRelativeToMain [2]", price);
54415
+ this.setCache(CACHE_KEY, price);
54416
+ return price;
54417
+ }
54418
+ };
54419
+ var senseiDescription = `Deposit your {{token1}} to automatically loop your funds via Endur ({{token2}}) and Vesu to create a delta neutral position. This strategy is designed to maximize your yield on {{token1}}. Your position is automatically adjusted periodically to maintain a healthy health factor. You receive a NFT as representation for your stake on Troves. You can withdraw anytime by redeeming your NFT for {{token1}}.`;
54420
+ var vesuProtocol = {
54421
+ name: "Vesu",
54422
+ logo: "https://static-assets-8zct.onrender.com/integrations/vesu/logo.png"
54423
+ };
54424
+ var endurProtocol = {
54425
+ name: "Endur",
54426
+ logo: "https://app.endur.fi/logo.png"
54427
+ };
54428
+ var _riskFactor3 = [
54429
+ { type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by CSC" },
54430
+ { 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." },
54431
+ { 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" },
54432
+ { type: "Low Liquidity Risk" /* LOW_LIQUIDITY_RISK */, value: 0.5, weight: 50, reason: "xSTRK can be sometimes illiquid near true price" }
54433
+ ];
54434
+ var FAQS = [
54435
+ {
54436
+ question: "What is xSTRK Sensei?",
54437
+ answer: "xSTRK Sensei is a leveraged looping strategy involving xSTRK and STRK. It uses xSTRK as collateral on Vesu, borrows STRK, and buys more xSTRK with it to create up to 4x leverage and boost yields."
54438
+ },
54439
+ {
54440
+ question: "What is the benefit of using xSTRK Sensei?",
54441
+ answer: "The strategy amplifies your xSTRK exposure and yield through leverage. It also helps you accumulate more Endur points faster."
54442
+ },
54443
+ {
54444
+ question: "What is the maximum leverage possible?",
54445
+ answer: "The strategy may allow up to ~4x leverage, depending on your collateral ratio and market conditions on Vesu. This strategy tries to maintain a health factor of 1.1 on Vesu"
54446
+ },
54447
+ {
54448
+ question: "Isn't 1.1 health factor risky?",
54449
+ answer: "Based on Re7's xSTRK pool configuration on Vesu, xSTRK uses STRK price as its oracle source. This means collateral and debt will always move in the same direction, making 1.1 HF safe. However, if debt increases too much (over months), liquidation may occur, which we try to avoid by actively monitoring the position."
54450
+ },
54451
+ {
54452
+ question: "Are there any risks involved?",
54453
+ answer: "Yes. The major risks are related to xSTRK's illiquidity and price volatility. During volatility or low liquidity, exiting a position can result in loss."
54454
+ },
54455
+ {
54456
+ question: "Does the position always grow?",
54457
+ answer: "No. While xSTRK's true value increases over time, its DEX price may not grow continuously and can fluctuate or move in discrete steps."
54458
+ },
54459
+ {
54460
+ question: "Can I lose money using this strategy?",
54461
+ answer: "Yes. If the xSTRK price drops sharply or becomes illiquid, you may face slippage or loss when trying to exit the looped position."
54462
+ },
54463
+ {
54464
+ question: "What affects the DEX price of xSTRK?",
54465
+ answer: "xSTRK's DEX price depends on supply, demand, and liquidity. Unlike its true value which grows steadily, the DEX price can fluctuate due to market activity."
54466
+ },
54467
+ {
54468
+ question: "Why is xSTRK considered illiquid?",
54469
+ answer: "Since xSTRK is a evolving LST with limited trading volume, sudden large trades can cause high slippage, making it harder to enter or exit positions efficiently. Such conditions normalize over time. Enter and exit positions with caution."
54470
+ },
54471
+ {
54472
+ question: "Do I earn Endur points on looped xSTRK?",
54473
+ answer: "Yes. All xSTRK in the looped position contributes to your Endur points, allowing you to farm points more effectively with leverage. Visit endur.fi/leaderboard to see your points."
54474
+ }
54475
+ ];
54476
+ var SenseiStrategies = [
54477
+ {
54478
+ name: "xSTRK Sensei",
54479
+ description: highlightTextWithLinks(
54480
+ senseiDescription.replaceAll("{{token1}}", "STRK").replaceAll("{{token2}}", "xSTRK"),
54481
+ [{
54482
+ highlight: "Endur",
54483
+ link: "https://endur.fi"
54484
+ }, {
54485
+ highlight: "Vesu",
54486
+ link: "https://vesu.xyz"
54487
+ }, {
54488
+ highlight: "delta neutral position",
54489
+ link: "https://www.investopedia.com/terms/d/deltaneutral.asp"
54490
+ }]
54491
+ ),
54492
+ address: ContractAddr.from(
54493
+ "0x7023a5cadc8a5db80e4f0fde6b330cbd3c17bbbf9cb145cbabd7bd5e6fb7b0b"
54494
+ ),
54495
+ launchBlock: 1053811,
54496
+ type: "Other",
54497
+ depositTokens: [
54498
+ Global.getDefaultTokens().find((t) => t.symbol === "STRK")
54499
+ ],
54500
+ protocols: [endurProtocol, vesuProtocol],
54501
+ maxTVL: new Web3Number("1500000", 18),
54502
+ risk: {
54503
+ riskFactor: _riskFactor3,
54504
+ netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
54505
+ notARisks: getNoRiskTags(_riskFactor3)
54506
+ },
54507
+ additionalInfo: {
54508
+ mainToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
54509
+ secondaryToken: Global.getDefaultTokens().find((t) => t.symbol === "xSTRK"),
54510
+ targetHfBps: 11e3,
54511
+ // 1.1 health factor
54512
+ feeBps: 2e3
54513
+ // 2% fee on profits
54514
+ },
54515
+ faqs: FAQS,
54516
+ contractDetails: [],
54517
+ investmentSteps: [
54518
+ "Swap STRK for xSTRK",
54519
+ "Deposit xSTRK to Vesu's Re7 xSTRK Pool",
54520
+ "Borrow STRK against your xSTRK collateral",
54521
+ "Buy more xSTRK with borrowed STRK",
54522
+ "Repeat the process to loop your position",
54523
+ "Claim DeFi spring (STRK) rewards weekly and reinvest"
54524
+ ]
54525
+ }
54526
+ ];
52438
54527
  return __toCommonJS(index_browser_exports);
52439
54528
  })();
52440
54529
  /*! Bundled license information: