@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.
@@ -51,6 +51,19 @@ var _Web3Number = class extends BigNumber {
51
51
  }
52
52
  return value.toFixed(this.maxToFixedDecimals());
53
53
  }
54
+ minimum(value) {
55
+ const _value = new BigNumber(value);
56
+ const _valueMe = new BigNumber(this.toString());
57
+ const answer = _value.lessThanOrEqualTo(_valueMe) ? _value : _valueMe;
58
+ return this.construct(answer.toString(), this.decimals);
59
+ }
60
+ maximum(value) {
61
+ const _value = new BigNumber(value);
62
+ const _valueMe = new BigNumber(this.toString());
63
+ console.warn(`maximum: _value: ${_value.toString()}, _valueMe: ${_valueMe.toString()}`);
64
+ const answer = _value.greaterThanOrEqualTo(_valueMe) ? _value : _valueMe;
65
+ return this.construct(answer.toString(), this.decimals);
66
+ }
54
67
  };
55
68
  BigNumber.config({ DECIMAL_PLACES: 18, ROUNDING_MODE: BigNumber.ROUND_DOWN });
56
69
  _Web3Number.config({ DECIMAL_PLACES: 18, ROUNDING_MODE: BigNumber.ROUND_DOWN });
@@ -1886,6 +1899,9 @@ function assert(condition, message) {
1886
1899
  throw new Error(message);
1887
1900
  }
1888
1901
  }
1902
+ function getTrovesEndpoint() {
1903
+ return process.env.TROVES_ENDPOINT || "https://app.troves.fi";
1904
+ }
1889
1905
 
1890
1906
  // src/modules/avnu.ts
1891
1907
  var AvnuWrapper = class _AvnuWrapper {
@@ -1911,7 +1927,6 @@ var AvnuWrapper = class _AvnuWrapper {
1911
1927
  }
1912
1928
  throw new Error("no quotes found");
1913
1929
  }
1914
- logger.verbose(`${_AvnuWrapper.name}: getQuotes => Found ${JSON.stringify(filteredQuotes[0])}`);
1915
1930
  return filteredQuotes[0];
1916
1931
  }
1917
1932
  async getSwapInfo(quote, taker, integratorFeeBps, integratorFeeRecipient, minAmount) {
@@ -1978,6 +1993,7 @@ var RiskType = /* @__PURE__ */ ((RiskType2) => {
1978
1993
  RiskType2["ORACLE_RISK"] = "Oracle Risk";
1979
1994
  RiskType2["TECHNICAL_RISK"] = "Technical Risk";
1980
1995
  RiskType2["COUNTERPARTY_RISK"] = "Counterparty Risk";
1996
+ RiskType2["DEPEG_RISK"] = "Depeg Risk";
1981
1997
  return RiskType2;
1982
1998
  })(RiskType || {});
1983
1999
  var Network = /* @__PURE__ */ ((Network2) => {
@@ -1992,7 +2008,7 @@ var FlowChartColors = /* @__PURE__ */ ((FlowChartColors2) => {
1992
2008
  FlowChartColors2["Purple"] = "#6e53dc";
1993
2009
  return FlowChartColors2;
1994
2010
  })(FlowChartColors || {});
1995
- function getMainnetConfig(rpcUrl = "https://starknet-mainnet.public.blastapi.io", blockIdentifier = "pending") {
2011
+ function getMainnetConfig(rpcUrl, blockIdentifier = "pending") {
1996
2012
  return {
1997
2013
  provider: new RpcProvider2({
1998
2014
  nodeUrl: rpcUrl,
@@ -2020,6 +2036,8 @@ var getRiskExplaination = (riskType) => {
2020
2036
  return "The risk of technical issues e.g. backend failure.";
2021
2037
  case "Counterparty Risk" /* COUNTERPARTY_RISK */:
2022
2038
  return "The risk of the counterparty defaulting e.g. bad debt on lending platforms.";
2039
+ case "Depeg Risk" /* DEPEG_RISK */:
2040
+ return "The risk of a token losing its peg to the underlying asset, leading to potential losses for holders.";
2023
2041
  }
2024
2042
  };
2025
2043
  var getRiskColor = (risk) => {
@@ -3608,6 +3626,7 @@ var vesu_rebalance_abi_default = [
3608
3626
  // src/strategies/base-strategy.ts
3609
3627
  var BaseStrategy = class {
3610
3628
  constructor(config) {
3629
+ this.cache = /* @__PURE__ */ new Map();
3611
3630
  this.config = config;
3612
3631
  }
3613
3632
  async getUserTVL(user) {
@@ -3622,6 +3641,23 @@ var BaseStrategy = class {
3622
3641
  async withdrawCall(amountInfo, receiver, owner) {
3623
3642
  throw new Error("Not implemented");
3624
3643
  }
3644
+ setCache(key, data, ttl = 6e4) {
3645
+ const timestamp = Date.now();
3646
+ this.cache.set(key, { timestamp, ttl, data });
3647
+ }
3648
+ getCache(key) {
3649
+ const cachedData = this.cache.get(key);
3650
+ if (!cachedData || !this.isCacheValid(key)) {
3651
+ return null;
3652
+ }
3653
+ return cachedData.data;
3654
+ }
3655
+ isCacheValid(key) {
3656
+ const cachedData = this.cache.get(key);
3657
+ if (!cachedData) return false;
3658
+ const { timestamp, ttl } = cachedData;
3659
+ return Date.now() - timestamp <= ttl;
3660
+ }
3625
3661
  };
3626
3662
 
3627
3663
  // src/node/headless.browser.ts
@@ -15943,11 +15979,19 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15943
15979
  uint2564.uint256ToBN(swapInfo1.token_from_amount).toString(),
15944
15980
  18
15945
15981
  // cause its always STRK?
15982
+ ).minimum(
15983
+ postFeeAmount.toFixed(18)
15984
+ // cause always strk
15985
+ );
15986
+ swapInfo.token_from_amount = uint2564.bnToUint256(swap1Amount.toWei());
15987
+ swapInfo.token_to_min_amount = uint2564.bnToUint256(
15988
+ swap1Amount.multipliedBy(0).toWei()
15989
+ // placeholder
15946
15990
  );
15947
15991
  logger.verbose(
15948
15992
  `${_EkuboCLVault.name}: harvest => swap1Amount: ${swap1Amount}`
15949
15993
  );
15950
- const remainingAmount = postFeeAmount.minus(swap1Amount);
15994
+ const remainingAmount = postFeeAmount.minus(swap1Amount).maximum(0);
15951
15995
  logger.verbose(
15952
15996
  `${_EkuboCLVault.name}: harvest => remainingAmount: ${remainingAmount}`
15953
15997
  );
@@ -15987,7 +16031,12 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15987
16031
  const _callsFinal = await this.rebalanceIter(
15988
16032
  swapInfo,
15989
16033
  acc,
15990
- harvestEstimateCall
16034
+ harvestEstimateCall,
16035
+ claim.token.eq(poolKey.token0),
16036
+ 0,
16037
+ 0n,
16038
+ BigInt(postFeeAmount.toWei())
16039
+ // upper limit is the post fee amount
15991
16040
  );
15992
16041
  logger.verbose(
15993
16042
  `${_EkuboCLVault.name}: harvest => _callsFinal: ${JSON.stringify(
@@ -16228,6 +16277,2047 @@ EkuboCLVaultStrategies.forEach((s) => {
16228
16277
  "Harvest and supply Defi Spring STRK rewards every week (Auto-compound)"
16229
16278
  ];
16230
16279
  });
16280
+
16281
+ // src/strategies/sensei.ts
16282
+ import { Contract as Contract7, uint256 as uint2565 } from "starknet";
16283
+
16284
+ // src/data/sensei.abi.json
16285
+ var sensei_abi_default = [
16286
+ {
16287
+ type: "impl",
16288
+ name: "IStrategyCustomImpl",
16289
+ interface_name: "strkfarm::interfaces::ERC721Strategy::IStrategyCustom"
16290
+ },
16291
+ {
16292
+ type: "struct",
16293
+ name: "core::integer::u256",
16294
+ members: [
16295
+ {
16296
+ name: "low",
16297
+ type: "core::integer::u128"
16298
+ },
16299
+ {
16300
+ name: "high",
16301
+ type: "core::integer::u128"
16302
+ }
16303
+ ]
16304
+ },
16305
+ {
16306
+ type: "struct",
16307
+ name: "strkfarm::interfaces::IEkuboDistributor::Claim",
16308
+ members: [
16309
+ {
16310
+ name: "id",
16311
+ type: "core::integer::u64"
16312
+ },
16313
+ {
16314
+ name: "claimee",
16315
+ type: "core::starknet::contract_address::ContractAddress"
16316
+ },
16317
+ {
16318
+ name: "amount",
16319
+ type: "core::integer::u128"
16320
+ }
16321
+ ]
16322
+ },
16323
+ {
16324
+ type: "struct",
16325
+ name: "core::array::Span::<core::felt252>",
16326
+ members: [
16327
+ {
16328
+ name: "snapshot",
16329
+ type: "@core::array::Array::<core::felt252>"
16330
+ }
16331
+ ]
16332
+ },
16333
+ {
16334
+ type: "struct",
16335
+ name: "strkfarm::components::swap::Route",
16336
+ members: [
16337
+ {
16338
+ name: "token_from",
16339
+ type: "core::starknet::contract_address::ContractAddress"
16340
+ },
16341
+ {
16342
+ name: "token_to",
16343
+ type: "core::starknet::contract_address::ContractAddress"
16344
+ },
16345
+ {
16346
+ name: "exchange_address",
16347
+ type: "core::starknet::contract_address::ContractAddress"
16348
+ },
16349
+ {
16350
+ name: "percent",
16351
+ type: "core::integer::u128"
16352
+ },
16353
+ {
16354
+ name: "additional_swap_params",
16355
+ type: "core::array::Array::<core::felt252>"
16356
+ }
16357
+ ]
16358
+ },
16359
+ {
16360
+ type: "struct",
16361
+ name: "strkfarm::components::swap::AvnuMultiRouteSwap",
16362
+ members: [
16363
+ {
16364
+ name: "token_from_address",
16365
+ type: "core::starknet::contract_address::ContractAddress"
16366
+ },
16367
+ {
16368
+ name: "token_from_amount",
16369
+ type: "core::integer::u256"
16370
+ },
16371
+ {
16372
+ name: "token_to_address",
16373
+ type: "core::starknet::contract_address::ContractAddress"
16374
+ },
16375
+ {
16376
+ name: "token_to_amount",
16377
+ type: "core::integer::u256"
16378
+ },
16379
+ {
16380
+ name: "token_to_min_amount",
16381
+ type: "core::integer::u256"
16382
+ },
16383
+ {
16384
+ name: "beneficiary",
16385
+ type: "core::starknet::contract_address::ContractAddress"
16386
+ },
16387
+ {
16388
+ name: "integrator_fee_amount_bps",
16389
+ type: "core::integer::u128"
16390
+ },
16391
+ {
16392
+ name: "integrator_fee_recipient",
16393
+ type: "core::starknet::contract_address::ContractAddress"
16394
+ },
16395
+ {
16396
+ name: "routes",
16397
+ type: "core::array::Array::<strkfarm::components::swap::Route>"
16398
+ }
16399
+ ]
16400
+ },
16401
+ {
16402
+ type: "struct",
16403
+ name: "strkfarm::interfaces::ERC721Strategy::Position",
16404
+ members: [
16405
+ {
16406
+ name: "acc1_supply_shares",
16407
+ type: "core::integer::u256"
16408
+ },
16409
+ {
16410
+ name: "acc1_borrow_shares",
16411
+ type: "core::integer::u256"
16412
+ },
16413
+ {
16414
+ name: "acc2_supply_shares",
16415
+ type: "core::integer::u256"
16416
+ },
16417
+ {
16418
+ name: "acc2_borrow_shares",
16419
+ type: "core::integer::u256"
16420
+ }
16421
+ ]
16422
+ },
16423
+ {
16424
+ type: "enum",
16425
+ name: "core::bool",
16426
+ variants: [
16427
+ {
16428
+ name: "False",
16429
+ type: "()"
16430
+ },
16431
+ {
16432
+ name: "True",
16433
+ type: "()"
16434
+ }
16435
+ ]
16436
+ },
16437
+ {
16438
+ type: "struct",
16439
+ name: "strkfarm::interfaces::ERC721Strategy::PositionDescription",
16440
+ members: [
16441
+ {
16442
+ name: "estimated_size",
16443
+ type: "core::integer::u256"
16444
+ },
16445
+ {
16446
+ name: "deposit1",
16447
+ type: "core::integer::u256"
16448
+ },
16449
+ {
16450
+ name: "borrow1",
16451
+ type: "core::integer::u256"
16452
+ },
16453
+ {
16454
+ name: "deposit2",
16455
+ type: "core::integer::u256"
16456
+ },
16457
+ {
16458
+ name: "borrow2",
16459
+ type: "core::integer::u256"
16460
+ }
16461
+ ]
16462
+ },
16463
+ {
16464
+ type: "struct",
16465
+ name: "strkfarm::interfaces::oracle::IPriceOracleDispatcher",
16466
+ members: [
16467
+ {
16468
+ name: "contract_address",
16469
+ type: "core::starknet::contract_address::ContractAddress"
16470
+ }
16471
+ ]
16472
+ },
16473
+ {
16474
+ type: "struct",
16475
+ name: "ekubo::interfaces::core::ICoreDispatcher",
16476
+ members: [
16477
+ {
16478
+ name: "contract_address",
16479
+ type: "core::starknet::contract_address::ContractAddress"
16480
+ }
16481
+ ]
16482
+ },
16483
+ {
16484
+ type: "struct",
16485
+ name: "strkfarm::components::ekuboSwap::IRouterDispatcher",
16486
+ members: [
16487
+ {
16488
+ name: "contract_address",
16489
+ type: "core::starknet::contract_address::ContractAddress"
16490
+ }
16491
+ ]
16492
+ },
16493
+ {
16494
+ type: "struct",
16495
+ name: "strkfarm::components::ekuboSwap::EkuboSwapStruct",
16496
+ members: [
16497
+ {
16498
+ name: "core",
16499
+ type: "ekubo::interfaces::core::ICoreDispatcher"
16500
+ },
16501
+ {
16502
+ name: "router",
16503
+ type: "strkfarm::components::ekuboSwap::IRouterDispatcher"
16504
+ }
16505
+ ]
16506
+ },
16507
+ {
16508
+ type: "struct",
16509
+ name: "ekubo::types::keys::PoolKey",
16510
+ members: [
16511
+ {
16512
+ name: "token0",
16513
+ type: "core::starknet::contract_address::ContractAddress"
16514
+ },
16515
+ {
16516
+ name: "token1",
16517
+ type: "core::starknet::contract_address::ContractAddress"
16518
+ },
16519
+ {
16520
+ name: "fee",
16521
+ type: "core::integer::u128"
16522
+ },
16523
+ {
16524
+ name: "tick_spacing",
16525
+ type: "core::integer::u128"
16526
+ },
16527
+ {
16528
+ name: "extension",
16529
+ type: "core::starknet::contract_address::ContractAddress"
16530
+ }
16531
+ ]
16532
+ },
16533
+ {
16534
+ type: "struct",
16535
+ name: "ekubo::interfaces::router::RouteNode",
16536
+ members: [
16537
+ {
16538
+ name: "pool_key",
16539
+ type: "ekubo::types::keys::PoolKey"
16540
+ },
16541
+ {
16542
+ name: "sqrt_ratio_limit",
16543
+ type: "core::integer::u256"
16544
+ },
16545
+ {
16546
+ name: "skip_ahead",
16547
+ type: "core::integer::u128"
16548
+ }
16549
+ ]
16550
+ },
16551
+ {
16552
+ type: "struct",
16553
+ name: "strkfarm::interfaces::ERC721Strategy::Settings",
16554
+ members: [
16555
+ {
16556
+ name: "base_fee_percent",
16557
+ type: "core::integer::u128"
16558
+ },
16559
+ {
16560
+ name: "reward_fee_percent",
16561
+ type: "core::integer::u128"
16562
+ },
16563
+ {
16564
+ name: "fee_receiver",
16565
+ type: "core::starknet::contract_address::ContractAddress"
16566
+ },
16567
+ {
16568
+ name: "min_health_factor",
16569
+ type: "core::integer::u32"
16570
+ },
16571
+ {
16572
+ name: "target_health_factor",
16573
+ type: "core::integer::u32"
16574
+ },
16575
+ {
16576
+ name: "coefs_sum1",
16577
+ type: "core::integer::u128"
16578
+ },
16579
+ {
16580
+ name: "coefs_sum2",
16581
+ type: "core::integer::u128"
16582
+ },
16583
+ {
16584
+ name: "oracle",
16585
+ type: "strkfarm::interfaces::oracle::IPriceOracleDispatcher"
16586
+ },
16587
+ {
16588
+ name: "ekubo_swap",
16589
+ type: "strkfarm::components::ekuboSwap::EkuboSwapStruct"
16590
+ },
16591
+ {
16592
+ name: "swap_routes1",
16593
+ type: "core::array::Array::<ekubo::interfaces::router::RouteNode>"
16594
+ },
16595
+ {
16596
+ name: "swap_routes2",
16597
+ type: "core::array::Array::<ekubo::interfaces::router::RouteNode>"
16598
+ },
16599
+ {
16600
+ name: "additional_shares_action_id",
16601
+ type: "core::integer::u8"
16602
+ }
16603
+ ]
16604
+ },
16605
+ {
16606
+ type: "interface",
16607
+ name: "strkfarm::interfaces::ERC721Strategy::IStrategyCustom",
16608
+ items: [
16609
+ {
16610
+ type: "function",
16611
+ name: "deposit",
16612
+ inputs: [
16613
+ {
16614
+ name: "amount",
16615
+ type: "core::integer::u256"
16616
+ },
16617
+ {
16618
+ name: "receiver",
16619
+ type: "core::starknet::contract_address::ContractAddress"
16620
+ }
16621
+ ],
16622
+ outputs: [
16623
+ {
16624
+ type: "core::integer::u256"
16625
+ }
16626
+ ],
16627
+ state_mutability: "external"
16628
+ },
16629
+ {
16630
+ type: "function",
16631
+ name: "health_factors",
16632
+ inputs: [],
16633
+ outputs: [
16634
+ {
16635
+ type: "(core::integer::u32, core::integer::u32)"
16636
+ }
16637
+ ],
16638
+ state_mutability: "view"
16639
+ },
16640
+ {
16641
+ type: "function",
16642
+ name: "harvest",
16643
+ inputs: [
16644
+ {
16645
+ name: "protocol1_rewards_contract",
16646
+ type: "core::starknet::contract_address::ContractAddress"
16647
+ },
16648
+ {
16649
+ name: "claim1",
16650
+ type: "strkfarm::interfaces::IEkuboDistributor::Claim"
16651
+ },
16652
+ {
16653
+ name: "proof1",
16654
+ type: "core::array::Span::<core::felt252>"
16655
+ },
16656
+ {
16657
+ name: "protocol2_rewards_contract",
16658
+ type: "core::starknet::contract_address::ContractAddress"
16659
+ },
16660
+ {
16661
+ name: "claim2",
16662
+ type: "strkfarm::interfaces::IEkuboDistributor::Claim"
16663
+ },
16664
+ {
16665
+ name: "proof2",
16666
+ type: "core::array::Span::<core::felt252>"
16667
+ },
16668
+ {
16669
+ name: "swapInfo",
16670
+ type: "strkfarm::components::swap::AvnuMultiRouteSwap"
16671
+ }
16672
+ ],
16673
+ outputs: [],
16674
+ state_mutability: "external"
16675
+ },
16676
+ {
16677
+ type: "function",
16678
+ name: "withdraw",
16679
+ inputs: [
16680
+ {
16681
+ name: "amount",
16682
+ type: "core::integer::u256"
16683
+ },
16684
+ {
16685
+ name: "receiver",
16686
+ type: "core::starknet::contract_address::ContractAddress"
16687
+ },
16688
+ {
16689
+ name: "max_slippage_bps",
16690
+ type: "core::integer::u32"
16691
+ }
16692
+ ],
16693
+ outputs: [],
16694
+ state_mutability: "external"
16695
+ },
16696
+ {
16697
+ type: "function",
16698
+ name: "get_all_shares",
16699
+ inputs: [],
16700
+ outputs: [
16701
+ {
16702
+ type: "strkfarm::interfaces::ERC721Strategy::Position"
16703
+ }
16704
+ ],
16705
+ state_mutability: "view"
16706
+ },
16707
+ {
16708
+ type: "function",
16709
+ name: "rebalance",
16710
+ inputs: [
16711
+ {
16712
+ name: "amount",
16713
+ type: "core::integer::u256"
16714
+ },
16715
+ {
16716
+ name: "shouldRepay",
16717
+ type: "core::bool"
16718
+ }
16719
+ ],
16720
+ outputs: [],
16721
+ state_mutability: "external"
16722
+ },
16723
+ {
16724
+ type: "function",
16725
+ name: "describe_position",
16726
+ inputs: [
16727
+ {
16728
+ name: "token_id",
16729
+ type: "core::felt252"
16730
+ }
16731
+ ],
16732
+ outputs: [
16733
+ {
16734
+ type: "(strkfarm::interfaces::ERC721Strategy::Position, strkfarm::interfaces::ERC721Strategy::PositionDescription)"
16735
+ }
16736
+ ],
16737
+ state_mutability: "view"
16738
+ },
16739
+ {
16740
+ type: "function",
16741
+ name: "set_settings",
16742
+ inputs: [
16743
+ {
16744
+ name: "settings",
16745
+ type: "strkfarm::interfaces::ERC721Strategy::Settings"
16746
+ }
16747
+ ],
16748
+ outputs: [],
16749
+ state_mutability: "external"
16750
+ },
16751
+ {
16752
+ type: "function",
16753
+ name: "initialize",
16754
+ inputs: [],
16755
+ outputs: [],
16756
+ state_mutability: "external"
16757
+ }
16758
+ ]
16759
+ },
16760
+ {
16761
+ type: "impl",
16762
+ name: "MMSettingsImpl",
16763
+ interface_name: "strkfarm::strats::dnmm_vesu::DeltaNeutralLoopingVesuXSTRK::IMMSettings"
16764
+ },
16765
+ {
16766
+ type: "struct",
16767
+ name: "strkfarm::components::endur::EndurSettings",
16768
+ members: [
16769
+ {
16770
+ name: "lst",
16771
+ type: "core::starknet::contract_address::ContractAddress"
16772
+ }
16773
+ ]
16774
+ },
16775
+ {
16776
+ type: "struct",
16777
+ name: "strkfarm::interfaces::IVesu::IStonDispatcher",
16778
+ members: [
16779
+ {
16780
+ name: "contract_address",
16781
+ type: "core::starknet::contract_address::ContractAddress"
16782
+ }
16783
+ ]
16784
+ },
16785
+ {
16786
+ type: "struct",
16787
+ name: "strkfarm::components::vesu::vesuStruct",
16788
+ members: [
16789
+ {
16790
+ name: "singleton",
16791
+ type: "strkfarm::interfaces::IVesu::IStonDispatcher"
16792
+ },
16793
+ {
16794
+ name: "pool_id",
16795
+ type: "core::felt252"
16796
+ },
16797
+ {
16798
+ name: "debt",
16799
+ type: "core::starknet::contract_address::ContractAddress"
16800
+ },
16801
+ {
16802
+ name: "col",
16803
+ type: "core::starknet::contract_address::ContractAddress"
16804
+ },
16805
+ {
16806
+ name: "oracle",
16807
+ type: "core::starknet::contract_address::ContractAddress"
16808
+ }
16809
+ ]
16810
+ },
16811
+ {
16812
+ type: "interface",
16813
+ name: "strkfarm::strats::dnmm_vesu::DeltaNeutralLoopingVesuXSTRK::IMMSettings",
16814
+ items: [
16815
+ {
16816
+ type: "function",
16817
+ name: "set_mm_settings",
16818
+ inputs: [
16819
+ {
16820
+ name: "lend_settings1",
16821
+ type: "strkfarm::components::endur::EndurSettings"
16822
+ },
16823
+ {
16824
+ name: "lend_settings2",
16825
+ type: "strkfarm::components::vesu::vesuStruct"
16826
+ }
16827
+ ],
16828
+ outputs: [],
16829
+ state_mutability: "external"
16830
+ }
16831
+ ]
16832
+ },
16833
+ {
16834
+ type: "impl",
16835
+ name: "DNMMImpl",
16836
+ interface_name: "strkfarm::interfaces::ERC721Strategy::IStrategy"
16837
+ },
16838
+ {
16839
+ type: "struct",
16840
+ name: "strkfarm::interfaces::ERC721Strategy::StrategyConfig",
16841
+ members: [
16842
+ {
16843
+ name: "main_token",
16844
+ type: "core::starknet::contract_address::ContractAddress"
16845
+ },
16846
+ {
16847
+ name: "main_offset",
16848
+ type: "core::integer::u128"
16849
+ },
16850
+ {
16851
+ name: "secondary_token",
16852
+ type: "core::starknet::contract_address::ContractAddress"
16853
+ },
16854
+ {
16855
+ name: "secondary_offset",
16856
+ type: "core::integer::u128"
16857
+ }
16858
+ ]
16859
+ },
16860
+ {
16861
+ type: "interface",
16862
+ name: "strkfarm::interfaces::ERC721Strategy::IStrategy",
16863
+ items: [
16864
+ {
16865
+ type: "function",
16866
+ name: "config",
16867
+ inputs: [],
16868
+ outputs: [
16869
+ {
16870
+ type: "strkfarm::interfaces::ERC721Strategy::StrategyConfig"
16871
+ }
16872
+ ],
16873
+ state_mutability: "view"
16874
+ },
16875
+ {
16876
+ type: "function",
16877
+ name: "get_settings",
16878
+ inputs: [],
16879
+ outputs: [
16880
+ {
16881
+ type: "strkfarm::interfaces::ERC721Strategy::Settings"
16882
+ }
16883
+ ],
16884
+ state_mutability: "view"
16885
+ }
16886
+ ]
16887
+ },
16888
+ {
16889
+ type: "impl",
16890
+ name: "EkuboLockedImpl",
16891
+ interface_name: "ekubo::interfaces::core::ILocker"
16892
+ },
16893
+ {
16894
+ type: "interface",
16895
+ name: "ekubo::interfaces::core::ILocker",
16896
+ items: [
16897
+ {
16898
+ type: "function",
16899
+ name: "locked",
16900
+ inputs: [
16901
+ {
16902
+ name: "id",
16903
+ type: "core::integer::u32"
16904
+ },
16905
+ {
16906
+ name: "data",
16907
+ type: "core::array::Span::<core::felt252>"
16908
+ }
16909
+ ],
16910
+ outputs: [
16911
+ {
16912
+ type: "core::array::Span::<core::felt252>"
16913
+ }
16914
+ ],
16915
+ state_mutability: "external"
16916
+ }
16917
+ ]
16918
+ },
16919
+ {
16920
+ type: "impl",
16921
+ name: "ERC721MixinImpl",
16922
+ interface_name: "openzeppelin_token::erc721::interface::ERC721ABI"
16923
+ },
16924
+ {
16925
+ type: "struct",
16926
+ name: "core::byte_array::ByteArray",
16927
+ members: [
16928
+ {
16929
+ name: "data",
16930
+ type: "core::array::Array::<core::bytes_31::bytes31>"
16931
+ },
16932
+ {
16933
+ name: "pending_word",
16934
+ type: "core::felt252"
16935
+ },
16936
+ {
16937
+ name: "pending_word_len",
16938
+ type: "core::integer::u32"
16939
+ }
16940
+ ]
16941
+ },
16942
+ {
16943
+ type: "interface",
16944
+ name: "openzeppelin_token::erc721::interface::ERC721ABI",
16945
+ items: [
16946
+ {
16947
+ type: "function",
16948
+ name: "balance_of",
16949
+ inputs: [
16950
+ {
16951
+ name: "account",
16952
+ type: "core::starknet::contract_address::ContractAddress"
16953
+ }
16954
+ ],
16955
+ outputs: [
16956
+ {
16957
+ type: "core::integer::u256"
16958
+ }
16959
+ ],
16960
+ state_mutability: "view"
16961
+ },
16962
+ {
16963
+ type: "function",
16964
+ name: "owner_of",
16965
+ inputs: [
16966
+ {
16967
+ name: "token_id",
16968
+ type: "core::integer::u256"
16969
+ }
16970
+ ],
16971
+ outputs: [
16972
+ {
16973
+ type: "core::starknet::contract_address::ContractAddress"
16974
+ }
16975
+ ],
16976
+ state_mutability: "view"
16977
+ },
16978
+ {
16979
+ type: "function",
16980
+ name: "safe_transfer_from",
16981
+ inputs: [
16982
+ {
16983
+ name: "from",
16984
+ type: "core::starknet::contract_address::ContractAddress"
16985
+ },
16986
+ {
16987
+ name: "to",
16988
+ type: "core::starknet::contract_address::ContractAddress"
16989
+ },
16990
+ {
16991
+ name: "token_id",
16992
+ type: "core::integer::u256"
16993
+ },
16994
+ {
16995
+ name: "data",
16996
+ type: "core::array::Span::<core::felt252>"
16997
+ }
16998
+ ],
16999
+ outputs: [],
17000
+ state_mutability: "external"
17001
+ },
17002
+ {
17003
+ type: "function",
17004
+ name: "transfer_from",
17005
+ inputs: [
17006
+ {
17007
+ name: "from",
17008
+ type: "core::starknet::contract_address::ContractAddress"
17009
+ },
17010
+ {
17011
+ name: "to",
17012
+ type: "core::starknet::contract_address::ContractAddress"
17013
+ },
17014
+ {
17015
+ name: "token_id",
17016
+ type: "core::integer::u256"
17017
+ }
17018
+ ],
17019
+ outputs: [],
17020
+ state_mutability: "external"
17021
+ },
17022
+ {
17023
+ type: "function",
17024
+ name: "approve",
17025
+ inputs: [
17026
+ {
17027
+ name: "to",
17028
+ type: "core::starknet::contract_address::ContractAddress"
17029
+ },
17030
+ {
17031
+ name: "token_id",
17032
+ type: "core::integer::u256"
17033
+ }
17034
+ ],
17035
+ outputs: [],
17036
+ state_mutability: "external"
17037
+ },
17038
+ {
17039
+ type: "function",
17040
+ name: "set_approval_for_all",
17041
+ inputs: [
17042
+ {
17043
+ name: "operator",
17044
+ type: "core::starknet::contract_address::ContractAddress"
17045
+ },
17046
+ {
17047
+ name: "approved",
17048
+ type: "core::bool"
17049
+ }
17050
+ ],
17051
+ outputs: [],
17052
+ state_mutability: "external"
17053
+ },
17054
+ {
17055
+ type: "function",
17056
+ name: "get_approved",
17057
+ inputs: [
17058
+ {
17059
+ name: "token_id",
17060
+ type: "core::integer::u256"
17061
+ }
17062
+ ],
17063
+ outputs: [
17064
+ {
17065
+ type: "core::starknet::contract_address::ContractAddress"
17066
+ }
17067
+ ],
17068
+ state_mutability: "view"
17069
+ },
17070
+ {
17071
+ type: "function",
17072
+ name: "is_approved_for_all",
17073
+ inputs: [
17074
+ {
17075
+ name: "owner",
17076
+ type: "core::starknet::contract_address::ContractAddress"
17077
+ },
17078
+ {
17079
+ name: "operator",
17080
+ type: "core::starknet::contract_address::ContractAddress"
17081
+ }
17082
+ ],
17083
+ outputs: [
17084
+ {
17085
+ type: "core::bool"
17086
+ }
17087
+ ],
17088
+ state_mutability: "view"
17089
+ },
17090
+ {
17091
+ type: "function",
17092
+ name: "supports_interface",
17093
+ inputs: [
17094
+ {
17095
+ name: "interface_id",
17096
+ type: "core::felt252"
17097
+ }
17098
+ ],
17099
+ outputs: [
17100
+ {
17101
+ type: "core::bool"
17102
+ }
17103
+ ],
17104
+ state_mutability: "view"
17105
+ },
17106
+ {
17107
+ type: "function",
17108
+ name: "name",
17109
+ inputs: [],
17110
+ outputs: [
17111
+ {
17112
+ type: "core::byte_array::ByteArray"
17113
+ }
17114
+ ],
17115
+ state_mutability: "view"
17116
+ },
17117
+ {
17118
+ type: "function",
17119
+ name: "symbol",
17120
+ inputs: [],
17121
+ outputs: [
17122
+ {
17123
+ type: "core::byte_array::ByteArray"
17124
+ }
17125
+ ],
17126
+ state_mutability: "view"
17127
+ },
17128
+ {
17129
+ type: "function",
17130
+ name: "token_uri",
17131
+ inputs: [
17132
+ {
17133
+ name: "token_id",
17134
+ type: "core::integer::u256"
17135
+ }
17136
+ ],
17137
+ outputs: [
17138
+ {
17139
+ type: "core::byte_array::ByteArray"
17140
+ }
17141
+ ],
17142
+ state_mutability: "view"
17143
+ },
17144
+ {
17145
+ type: "function",
17146
+ name: "balanceOf",
17147
+ inputs: [
17148
+ {
17149
+ name: "account",
17150
+ type: "core::starknet::contract_address::ContractAddress"
17151
+ }
17152
+ ],
17153
+ outputs: [
17154
+ {
17155
+ type: "core::integer::u256"
17156
+ }
17157
+ ],
17158
+ state_mutability: "view"
17159
+ },
17160
+ {
17161
+ type: "function",
17162
+ name: "ownerOf",
17163
+ inputs: [
17164
+ {
17165
+ name: "tokenId",
17166
+ type: "core::integer::u256"
17167
+ }
17168
+ ],
17169
+ outputs: [
17170
+ {
17171
+ type: "core::starknet::contract_address::ContractAddress"
17172
+ }
17173
+ ],
17174
+ state_mutability: "view"
17175
+ },
17176
+ {
17177
+ type: "function",
17178
+ name: "safeTransferFrom",
17179
+ inputs: [
17180
+ {
17181
+ name: "from",
17182
+ type: "core::starknet::contract_address::ContractAddress"
17183
+ },
17184
+ {
17185
+ name: "to",
17186
+ type: "core::starknet::contract_address::ContractAddress"
17187
+ },
17188
+ {
17189
+ name: "tokenId",
17190
+ type: "core::integer::u256"
17191
+ },
17192
+ {
17193
+ name: "data",
17194
+ type: "core::array::Span::<core::felt252>"
17195
+ }
17196
+ ],
17197
+ outputs: [],
17198
+ state_mutability: "external"
17199
+ },
17200
+ {
17201
+ type: "function",
17202
+ name: "transferFrom",
17203
+ inputs: [
17204
+ {
17205
+ name: "from",
17206
+ type: "core::starknet::contract_address::ContractAddress"
17207
+ },
17208
+ {
17209
+ name: "to",
17210
+ type: "core::starknet::contract_address::ContractAddress"
17211
+ },
17212
+ {
17213
+ name: "tokenId",
17214
+ type: "core::integer::u256"
17215
+ }
17216
+ ],
17217
+ outputs: [],
17218
+ state_mutability: "external"
17219
+ },
17220
+ {
17221
+ type: "function",
17222
+ name: "setApprovalForAll",
17223
+ inputs: [
17224
+ {
17225
+ name: "operator",
17226
+ type: "core::starknet::contract_address::ContractAddress"
17227
+ },
17228
+ {
17229
+ name: "approved",
17230
+ type: "core::bool"
17231
+ }
17232
+ ],
17233
+ outputs: [],
17234
+ state_mutability: "external"
17235
+ },
17236
+ {
17237
+ type: "function",
17238
+ name: "getApproved",
17239
+ inputs: [
17240
+ {
17241
+ name: "tokenId",
17242
+ type: "core::integer::u256"
17243
+ }
17244
+ ],
17245
+ outputs: [
17246
+ {
17247
+ type: "core::starknet::contract_address::ContractAddress"
17248
+ }
17249
+ ],
17250
+ state_mutability: "view"
17251
+ },
17252
+ {
17253
+ type: "function",
17254
+ name: "isApprovedForAll",
17255
+ inputs: [
17256
+ {
17257
+ name: "owner",
17258
+ type: "core::starknet::contract_address::ContractAddress"
17259
+ },
17260
+ {
17261
+ name: "operator",
17262
+ type: "core::starknet::contract_address::ContractAddress"
17263
+ }
17264
+ ],
17265
+ outputs: [
17266
+ {
17267
+ type: "core::bool"
17268
+ }
17269
+ ],
17270
+ state_mutability: "view"
17271
+ },
17272
+ {
17273
+ type: "function",
17274
+ name: "tokenURI",
17275
+ inputs: [
17276
+ {
17277
+ name: "tokenId",
17278
+ type: "core::integer::u256"
17279
+ }
17280
+ ],
17281
+ outputs: [
17282
+ {
17283
+ type: "core::byte_array::ByteArray"
17284
+ }
17285
+ ],
17286
+ state_mutability: "view"
17287
+ }
17288
+ ]
17289
+ },
17290
+ {
17291
+ type: "impl",
17292
+ name: "RewardShareImpl",
17293
+ interface_name: "strkfarm::components::harvester::reward_shares::IRewardShare"
17294
+ },
17295
+ {
17296
+ type: "struct",
17297
+ name: "strkfarm::components::harvester::reward_shares::UserRewardsInfo",
17298
+ members: [
17299
+ {
17300
+ name: "pending_round_points",
17301
+ type: "core::felt252"
17302
+ },
17303
+ {
17304
+ name: "shares_owned",
17305
+ type: "core::felt252"
17306
+ },
17307
+ {
17308
+ name: "block_number",
17309
+ type: "core::integer::u64"
17310
+ },
17311
+ {
17312
+ name: "index",
17313
+ type: "core::integer::u32"
17314
+ }
17315
+ ]
17316
+ },
17317
+ {
17318
+ type: "struct",
17319
+ name: "strkfarm::components::harvester::reward_shares::RewardsInfo",
17320
+ members: [
17321
+ {
17322
+ name: "amount",
17323
+ type: "core::felt252"
17324
+ },
17325
+ {
17326
+ name: "shares",
17327
+ type: "core::felt252"
17328
+ },
17329
+ {
17330
+ name: "total_round_points",
17331
+ type: "core::felt252"
17332
+ },
17333
+ {
17334
+ name: "block_number",
17335
+ type: "core::integer::u64"
17336
+ }
17337
+ ]
17338
+ },
17339
+ {
17340
+ type: "interface",
17341
+ name: "strkfarm::components::harvester::reward_shares::IRewardShare",
17342
+ items: [
17343
+ {
17344
+ type: "function",
17345
+ name: "get_user_reward_info",
17346
+ inputs: [
17347
+ {
17348
+ name: "user",
17349
+ type: "core::starknet::contract_address::ContractAddress"
17350
+ }
17351
+ ],
17352
+ outputs: [
17353
+ {
17354
+ type: "strkfarm::components::harvester::reward_shares::UserRewardsInfo"
17355
+ }
17356
+ ],
17357
+ state_mutability: "view"
17358
+ },
17359
+ {
17360
+ type: "function",
17361
+ name: "get_rewards_info",
17362
+ inputs: [
17363
+ {
17364
+ name: "index",
17365
+ type: "core::integer::u32"
17366
+ }
17367
+ ],
17368
+ outputs: [
17369
+ {
17370
+ type: "strkfarm::components::harvester::reward_shares::RewardsInfo"
17371
+ }
17372
+ ],
17373
+ state_mutability: "view"
17374
+ },
17375
+ {
17376
+ type: "function",
17377
+ name: "get_total_rewards",
17378
+ inputs: [],
17379
+ outputs: [
17380
+ {
17381
+ type: "core::integer::u32"
17382
+ }
17383
+ ],
17384
+ state_mutability: "view"
17385
+ },
17386
+ {
17387
+ type: "function",
17388
+ name: "get_total_unminted_shares",
17389
+ inputs: [],
17390
+ outputs: [
17391
+ {
17392
+ type: "core::felt252"
17393
+ }
17394
+ ],
17395
+ state_mutability: "view"
17396
+ },
17397
+ {
17398
+ type: "function",
17399
+ name: "get_additional_shares",
17400
+ inputs: [
17401
+ {
17402
+ name: "user",
17403
+ type: "core::starknet::contract_address::ContractAddress"
17404
+ }
17405
+ ],
17406
+ outputs: [
17407
+ {
17408
+ type: "(core::felt252, core::integer::u64, core::felt252)"
17409
+ }
17410
+ ],
17411
+ state_mutability: "view"
17412
+ }
17413
+ ]
17414
+ },
17415
+ {
17416
+ type: "impl",
17417
+ name: "CommonCompImpl",
17418
+ interface_name: "strkfarm::interfaces::common::ICommon"
17419
+ },
17420
+ {
17421
+ type: "interface",
17422
+ name: "strkfarm::interfaces::common::ICommon",
17423
+ items: [
17424
+ {
17425
+ type: "function",
17426
+ name: "upgrade",
17427
+ inputs: [
17428
+ {
17429
+ name: "new_class",
17430
+ type: "core::starknet::class_hash::ClassHash"
17431
+ }
17432
+ ],
17433
+ outputs: [],
17434
+ state_mutability: "external"
17435
+ },
17436
+ {
17437
+ type: "function",
17438
+ name: "pause",
17439
+ inputs: [],
17440
+ outputs: [],
17441
+ state_mutability: "external"
17442
+ },
17443
+ {
17444
+ type: "function",
17445
+ name: "unpause",
17446
+ inputs: [],
17447
+ outputs: [],
17448
+ state_mutability: "external"
17449
+ },
17450
+ {
17451
+ type: "function",
17452
+ name: "is_paused",
17453
+ inputs: [],
17454
+ outputs: [
17455
+ {
17456
+ type: "core::bool"
17457
+ }
17458
+ ],
17459
+ state_mutability: "view"
17460
+ },
17461
+ {
17462
+ type: "function",
17463
+ name: "owner",
17464
+ inputs: [],
17465
+ outputs: [
17466
+ {
17467
+ type: "core::starknet::contract_address::ContractAddress"
17468
+ }
17469
+ ],
17470
+ state_mutability: "view"
17471
+ },
17472
+ {
17473
+ type: "function",
17474
+ name: "transfer_ownership",
17475
+ inputs: [
17476
+ {
17477
+ name: "new_owner",
17478
+ type: "core::starknet::contract_address::ContractAddress"
17479
+ }
17480
+ ],
17481
+ outputs: [],
17482
+ state_mutability: "external"
17483
+ },
17484
+ {
17485
+ type: "function",
17486
+ name: "renounce_ownership",
17487
+ inputs: [],
17488
+ outputs: [],
17489
+ state_mutability: "external"
17490
+ }
17491
+ ]
17492
+ },
17493
+ {
17494
+ type: "constructor",
17495
+ name: "constructor",
17496
+ inputs: [
17497
+ {
17498
+ name: "name",
17499
+ type: "core::byte_array::ByteArray"
17500
+ },
17501
+ {
17502
+ name: "symbol",
17503
+ type: "core::byte_array::ByteArray"
17504
+ },
17505
+ {
17506
+ name: "base_uri",
17507
+ type: "core::byte_array::ByteArray"
17508
+ },
17509
+ {
17510
+ name: "owner",
17511
+ type: "core::starknet::contract_address::ContractAddress"
17512
+ },
17513
+ {
17514
+ name: "main_token",
17515
+ type: "core::starknet::contract_address::ContractAddress"
17516
+ },
17517
+ {
17518
+ name: "main_offset",
17519
+ type: "core::integer::u128"
17520
+ },
17521
+ {
17522
+ name: "secondary_token",
17523
+ type: "core::starknet::contract_address::ContractAddress"
17524
+ },
17525
+ {
17526
+ name: "secondary_offset",
17527
+ type: "core::integer::u128"
17528
+ },
17529
+ {
17530
+ name: "settings",
17531
+ type: "strkfarm::interfaces::ERC721Strategy::Settings"
17532
+ },
17533
+ {
17534
+ name: "lend_settings1",
17535
+ type: "strkfarm::components::endur::EndurSettings"
17536
+ },
17537
+ {
17538
+ name: "lend_settings2",
17539
+ type: "strkfarm::components::vesu::vesuStruct"
17540
+ }
17541
+ ]
17542
+ },
17543
+ {
17544
+ type: "event",
17545
+ name: "openzeppelin_token::erc721::erc721::ERC721Component::Transfer",
17546
+ kind: "struct",
17547
+ members: [
17548
+ {
17549
+ name: "from",
17550
+ type: "core::starknet::contract_address::ContractAddress",
17551
+ kind: "key"
17552
+ },
17553
+ {
17554
+ name: "to",
17555
+ type: "core::starknet::contract_address::ContractAddress",
17556
+ kind: "key"
17557
+ },
17558
+ {
17559
+ name: "token_id",
17560
+ type: "core::integer::u256",
17561
+ kind: "key"
17562
+ }
17563
+ ]
17564
+ },
17565
+ {
17566
+ type: "event",
17567
+ name: "openzeppelin_token::erc721::erc721::ERC721Component::Approval",
17568
+ kind: "struct",
17569
+ members: [
17570
+ {
17571
+ name: "owner",
17572
+ type: "core::starknet::contract_address::ContractAddress",
17573
+ kind: "key"
17574
+ },
17575
+ {
17576
+ name: "approved",
17577
+ type: "core::starknet::contract_address::ContractAddress",
17578
+ kind: "key"
17579
+ },
17580
+ {
17581
+ name: "token_id",
17582
+ type: "core::integer::u256",
17583
+ kind: "key"
17584
+ }
17585
+ ]
17586
+ },
17587
+ {
17588
+ type: "event",
17589
+ name: "openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll",
17590
+ kind: "struct",
17591
+ members: [
17592
+ {
17593
+ name: "owner",
17594
+ type: "core::starknet::contract_address::ContractAddress",
17595
+ kind: "key"
17596
+ },
17597
+ {
17598
+ name: "operator",
17599
+ type: "core::starknet::contract_address::ContractAddress",
17600
+ kind: "key"
17601
+ },
17602
+ {
17603
+ name: "approved",
17604
+ type: "core::bool",
17605
+ kind: "data"
17606
+ }
17607
+ ]
17608
+ },
17609
+ {
17610
+ type: "event",
17611
+ name: "openzeppelin_token::erc721::erc721::ERC721Component::Event",
17612
+ kind: "enum",
17613
+ variants: [
17614
+ {
17615
+ name: "Transfer",
17616
+ type: "openzeppelin_token::erc721::erc721::ERC721Component::Transfer",
17617
+ kind: "nested"
17618
+ },
17619
+ {
17620
+ name: "Approval",
17621
+ type: "openzeppelin_token::erc721::erc721::ERC721Component::Approval",
17622
+ kind: "nested"
17623
+ },
17624
+ {
17625
+ name: "ApprovalForAll",
17626
+ type: "openzeppelin_token::erc721::erc721::ERC721Component::ApprovalForAll",
17627
+ kind: "nested"
17628
+ }
17629
+ ]
17630
+ },
17631
+ {
17632
+ type: "event",
17633
+ name: "openzeppelin_introspection::src5::SRC5Component::Event",
17634
+ kind: "enum",
17635
+ variants: []
17636
+ },
17637
+ {
17638
+ type: "event",
17639
+ name: "openzeppelin_upgrades::upgradeable::UpgradeableComponent::Upgraded",
17640
+ kind: "struct",
17641
+ members: [
17642
+ {
17643
+ name: "class_hash",
17644
+ type: "core::starknet::class_hash::ClassHash",
17645
+ kind: "data"
17646
+ }
17647
+ ]
17648
+ },
17649
+ {
17650
+ type: "event",
17651
+ name: "openzeppelin_upgrades::upgradeable::UpgradeableComponent::Event",
17652
+ kind: "enum",
17653
+ variants: [
17654
+ {
17655
+ name: "Upgraded",
17656
+ type: "openzeppelin_upgrades::upgradeable::UpgradeableComponent::Upgraded",
17657
+ kind: "nested"
17658
+ }
17659
+ ]
17660
+ },
17661
+ {
17662
+ type: "event",
17663
+ name: "openzeppelin_security::pausable::PausableComponent::Paused",
17664
+ kind: "struct",
17665
+ members: [
17666
+ {
17667
+ name: "account",
17668
+ type: "core::starknet::contract_address::ContractAddress",
17669
+ kind: "data"
17670
+ }
17671
+ ]
17672
+ },
17673
+ {
17674
+ type: "event",
17675
+ name: "openzeppelin_security::pausable::PausableComponent::Unpaused",
17676
+ kind: "struct",
17677
+ members: [
17678
+ {
17679
+ name: "account",
17680
+ type: "core::starknet::contract_address::ContractAddress",
17681
+ kind: "data"
17682
+ }
17683
+ ]
17684
+ },
17685
+ {
17686
+ type: "event",
17687
+ name: "openzeppelin_security::pausable::PausableComponent::Event",
17688
+ kind: "enum",
17689
+ variants: [
17690
+ {
17691
+ name: "Paused",
17692
+ type: "openzeppelin_security::pausable::PausableComponent::Paused",
17693
+ kind: "nested"
17694
+ },
17695
+ {
17696
+ name: "Unpaused",
17697
+ type: "openzeppelin_security::pausable::PausableComponent::Unpaused",
17698
+ kind: "nested"
17699
+ }
17700
+ ]
17701
+ },
17702
+ {
17703
+ type: "event",
17704
+ name: "openzeppelin_security::reentrancyguard::ReentrancyGuardComponent::Event",
17705
+ kind: "enum",
17706
+ variants: []
17707
+ },
17708
+ {
17709
+ type: "event",
17710
+ name: "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred",
17711
+ kind: "struct",
17712
+ members: [
17713
+ {
17714
+ name: "previous_owner",
17715
+ type: "core::starknet::contract_address::ContractAddress",
17716
+ kind: "key"
17717
+ },
17718
+ {
17719
+ name: "new_owner",
17720
+ type: "core::starknet::contract_address::ContractAddress",
17721
+ kind: "key"
17722
+ }
17723
+ ]
17724
+ },
17725
+ {
17726
+ type: "event",
17727
+ name: "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted",
17728
+ kind: "struct",
17729
+ members: [
17730
+ {
17731
+ name: "previous_owner",
17732
+ type: "core::starknet::contract_address::ContractAddress",
17733
+ kind: "key"
17734
+ },
17735
+ {
17736
+ name: "new_owner",
17737
+ type: "core::starknet::contract_address::ContractAddress",
17738
+ kind: "key"
17739
+ }
17740
+ ]
17741
+ },
17742
+ {
17743
+ type: "event",
17744
+ name: "openzeppelin_access::ownable::ownable::OwnableComponent::Event",
17745
+ kind: "enum",
17746
+ variants: [
17747
+ {
17748
+ name: "OwnershipTransferred",
17749
+ type: "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferred",
17750
+ kind: "nested"
17751
+ },
17752
+ {
17753
+ name: "OwnershipTransferStarted",
17754
+ type: "openzeppelin_access::ownable::ownable::OwnableComponent::OwnershipTransferStarted",
17755
+ kind: "nested"
17756
+ }
17757
+ ]
17758
+ },
17759
+ {
17760
+ type: "event",
17761
+ name: "strkfarm::components::common::CommonComp::Event",
17762
+ kind: "enum",
17763
+ variants: []
17764
+ },
17765
+ {
17766
+ type: "event",
17767
+ name: "strkfarm::components::harvester::reward_shares::RewardShareComponent::Rewards",
17768
+ kind: "struct",
17769
+ members: [
17770
+ {
17771
+ name: "index",
17772
+ type: "core::integer::u32",
17773
+ kind: "data"
17774
+ },
17775
+ {
17776
+ name: "info",
17777
+ type: "strkfarm::components::harvester::reward_shares::RewardsInfo",
17778
+ kind: "data"
17779
+ },
17780
+ {
17781
+ name: "total_reward_shares",
17782
+ type: "core::felt252",
17783
+ kind: "data"
17784
+ },
17785
+ {
17786
+ name: "timestamp",
17787
+ type: "core::integer::u64",
17788
+ kind: "data"
17789
+ }
17790
+ ]
17791
+ },
17792
+ {
17793
+ type: "event",
17794
+ name: "strkfarm::components::harvester::reward_shares::RewardShareComponent::UserRewards",
17795
+ kind: "struct",
17796
+ members: [
17797
+ {
17798
+ name: "user",
17799
+ type: "core::starknet::contract_address::ContractAddress",
17800
+ kind: "key"
17801
+ },
17802
+ {
17803
+ name: "info",
17804
+ type: "strkfarm::components::harvester::reward_shares::UserRewardsInfo",
17805
+ kind: "data"
17806
+ },
17807
+ {
17808
+ name: "total_reward_shares",
17809
+ type: "core::felt252",
17810
+ kind: "data"
17811
+ },
17812
+ {
17813
+ name: "timestamp",
17814
+ type: "core::integer::u64",
17815
+ kind: "data"
17816
+ }
17817
+ ]
17818
+ },
17819
+ {
17820
+ type: "event",
17821
+ name: "strkfarm::components::harvester::reward_shares::RewardShareComponent::Event",
17822
+ kind: "enum",
17823
+ variants: [
17824
+ {
17825
+ name: "Rewards",
17826
+ type: "strkfarm::components::harvester::reward_shares::RewardShareComponent::Rewards",
17827
+ kind: "nested"
17828
+ },
17829
+ {
17830
+ name: "UserRewards",
17831
+ type: "strkfarm::components::harvester::reward_shares::RewardShareComponent::UserRewards",
17832
+ kind: "nested"
17833
+ }
17834
+ ]
17835
+ },
17836
+ {
17837
+ type: "event",
17838
+ name: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Deposit",
17839
+ kind: "struct",
17840
+ members: [
17841
+ {
17842
+ name: "sender",
17843
+ type: "core::starknet::contract_address::ContractAddress",
17844
+ kind: "key"
17845
+ },
17846
+ {
17847
+ name: "owner",
17848
+ type: "core::starknet::contract_address::ContractAddress",
17849
+ kind: "key"
17850
+ },
17851
+ {
17852
+ name: "assets",
17853
+ type: "core::integer::u256",
17854
+ kind: "data"
17855
+ },
17856
+ {
17857
+ name: "net_position",
17858
+ type: "strkfarm::interfaces::ERC721Strategy::Position",
17859
+ kind: "data"
17860
+ }
17861
+ ]
17862
+ },
17863
+ {
17864
+ type: "event",
17865
+ name: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Withdraw",
17866
+ kind: "struct",
17867
+ members: [
17868
+ {
17869
+ name: "sender",
17870
+ type: "core::starknet::contract_address::ContractAddress",
17871
+ kind: "key"
17872
+ },
17873
+ {
17874
+ name: "receiver",
17875
+ type: "core::starknet::contract_address::ContractAddress",
17876
+ kind: "key"
17877
+ },
17878
+ {
17879
+ name: "owner",
17880
+ type: "core::starknet::contract_address::ContractAddress",
17881
+ kind: "key"
17882
+ },
17883
+ {
17884
+ name: "assets",
17885
+ type: "core::integer::u256",
17886
+ kind: "data"
17887
+ },
17888
+ {
17889
+ name: "net_position",
17890
+ type: "strkfarm::interfaces::ERC721Strategy::Position",
17891
+ kind: "data"
17892
+ }
17893
+ ]
17894
+ },
17895
+ {
17896
+ type: "event",
17897
+ name: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Rebalance",
17898
+ kind: "struct",
17899
+ members: [
17900
+ {
17901
+ name: "caller",
17902
+ type: "core::starknet::contract_address::ContractAddress",
17903
+ kind: "key"
17904
+ },
17905
+ {
17906
+ name: "amount",
17907
+ type: "core::integer::u256",
17908
+ kind: "data"
17909
+ },
17910
+ {
17911
+ name: "shouldRepay",
17912
+ type: "core::bool",
17913
+ kind: "data"
17914
+ },
17915
+ {
17916
+ name: "pre_hf1",
17917
+ type: "core::integer::u32",
17918
+ kind: "data"
17919
+ },
17920
+ {
17921
+ name: "pre_hf2",
17922
+ type: "core::integer::u32",
17923
+ kind: "data"
17924
+ },
17925
+ {
17926
+ name: "hf1",
17927
+ type: "core::integer::u32",
17928
+ kind: "data"
17929
+ },
17930
+ {
17931
+ name: "hf2",
17932
+ type: "core::integer::u32",
17933
+ kind: "data"
17934
+ }
17935
+ ]
17936
+ },
17937
+ {
17938
+ type: "event",
17939
+ name: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::ShareUpdate",
17940
+ kind: "struct",
17941
+ members: [
17942
+ {
17943
+ name: "token_id",
17944
+ type: "core::felt252",
17945
+ kind: "key"
17946
+ },
17947
+ {
17948
+ name: "action_id",
17949
+ type: "core::integer::u8",
17950
+ kind: "key"
17951
+ },
17952
+ {
17953
+ name: "user_shares",
17954
+ type: "core::felt252",
17955
+ kind: "data"
17956
+ },
17957
+ {
17958
+ name: "total_shares",
17959
+ type: "core::felt252",
17960
+ kind: "data"
17961
+ }
17962
+ ]
17963
+ },
17964
+ {
17965
+ type: "event",
17966
+ name: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Event",
17967
+ kind: "enum",
17968
+ variants: [
17969
+ {
17970
+ name: "Deposit",
17971
+ type: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Deposit",
17972
+ kind: "nested"
17973
+ },
17974
+ {
17975
+ name: "Withdraw",
17976
+ type: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Withdraw",
17977
+ kind: "nested"
17978
+ },
17979
+ {
17980
+ name: "Rebalance",
17981
+ type: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Rebalance",
17982
+ kind: "nested"
17983
+ },
17984
+ {
17985
+ name: "ShareUpdate",
17986
+ type: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::ShareUpdate",
17987
+ kind: "nested"
17988
+ }
17989
+ ]
17990
+ },
17991
+ {
17992
+ type: "event",
17993
+ name: "strkfarm::strats::dnmm_vesu::DeltaNeutralLoopingVesuXSTRK::Event",
17994
+ kind: "enum",
17995
+ variants: [
17996
+ {
17997
+ name: "ERC721Event",
17998
+ type: "openzeppelin_token::erc721::erc721::ERC721Component::Event",
17999
+ kind: "flat"
18000
+ },
18001
+ {
18002
+ name: "SRC5Event",
18003
+ type: "openzeppelin_introspection::src5::SRC5Component::Event",
18004
+ kind: "flat"
18005
+ },
18006
+ {
18007
+ name: "UpgradeableEvent",
18008
+ type: "openzeppelin_upgrades::upgradeable::UpgradeableComponent::Event",
18009
+ kind: "flat"
18010
+ },
18011
+ {
18012
+ name: "PausableEvent",
18013
+ type: "openzeppelin_security::pausable::PausableComponent::Event",
18014
+ kind: "flat"
18015
+ },
18016
+ {
18017
+ name: "ReentrancyGuardEvent",
18018
+ type: "openzeppelin_security::reentrancyguard::ReentrancyGuardComponent::Event",
18019
+ kind: "flat"
18020
+ },
18021
+ {
18022
+ name: "OwnableEvent",
18023
+ type: "openzeppelin_access::ownable::ownable::OwnableComponent::Event",
18024
+ kind: "flat"
18025
+ },
18026
+ {
18027
+ name: "CommonCompEvent",
18028
+ type: "strkfarm::components::common::CommonComp::Event",
18029
+ kind: "flat"
18030
+ },
18031
+ {
18032
+ name: "RewardShareEvent",
18033
+ type: "strkfarm::components::harvester::reward_shares::RewardShareComponent::Event",
18034
+ kind: "flat"
18035
+ },
18036
+ {
18037
+ name: "DeltaNeutralLoopingEvent",
18038
+ type: "strkfarm::components::delta_neutral_component::DeltaNeutralLoopingCom::Event",
18039
+ kind: "flat"
18040
+ }
18041
+ ]
18042
+ }
18043
+ ];
18044
+
18045
+ // src/strategies/sensei.ts
18046
+ var SenseiVault = class extends BaseStrategy {
18047
+ constructor(config, pricer, metadata) {
18048
+ super(config);
18049
+ this.getSettings = async () => {
18050
+ const settings = await this.contract.call("get_settings", []);
18051
+ logger.verbose("getSettings", settings);
18052
+ return settings;
18053
+ };
18054
+ this.address = metadata.address;
18055
+ this.pricer = pricer;
18056
+ this.metadata = metadata;
18057
+ this.contract = new Contract7(sensei_abi_default, this.address.address, this.config.provider);
18058
+ if (metadata.depositTokens.length === 0) {
18059
+ throw new Error("Deposit tokens are not defined in metadata");
18060
+ }
18061
+ }
18062
+ async getUserTVL(user) {
18063
+ const result = await this.contract.call(
18064
+ "describe_position",
18065
+ [user.address]
18066
+ );
18067
+ const amount = Web3Number.fromWei(
18068
+ uint2565.uint256ToBN(result[1].estimated_size).toString(),
18069
+ this.metadata.depositTokens[0].decimals
18070
+ );
18071
+ const price = await this.pricer.getPrice(
18072
+ this.metadata.depositTokens[0].symbol
18073
+ );
18074
+ return {
18075
+ usdValue: Number(amount.toFixed(6)) * price.price,
18076
+ amount,
18077
+ tokenInfo: this.metadata.depositTokens[0]
18078
+ };
18079
+ }
18080
+ async getTVL() {
18081
+ try {
18082
+ const {
18083
+ collateralXSTRK,
18084
+ collateralUSDValue,
18085
+ debtSTRK,
18086
+ debtUSDValue,
18087
+ xSTRKPrice,
18088
+ collateralInSTRK
18089
+ } = await this.getPositionInfo();
18090
+ const usdValue = Number(collateralUSDValue.toFixed(6)) - Number(debtUSDValue.toFixed(6));
18091
+ return {
18092
+ usdValue,
18093
+ amount: new Web3Number(
18094
+ (collateralInSTRK - Number(debtSTRK.toFixed(6))).toFixed(6),
18095
+ collateralXSTRK.decimals
18096
+ ),
18097
+ tokenInfo: this.metadata.depositTokens[0]
18098
+ };
18099
+ } catch (error) {
18100
+ console.error("Error fetching TVL:", error);
18101
+ return {
18102
+ usdValue: 0,
18103
+ amount: new Web3Number("0", this.metadata.depositTokens[0].decimals),
18104
+ tokenInfo: this.metadata.depositTokens[0]
18105
+ };
18106
+ }
18107
+ }
18108
+ async depositCall(amountInfo, receiver) {
18109
+ const mainTokenContract = new Contract7(
18110
+ erc20_abi_default,
18111
+ this.metadata.depositTokens[0].address.address,
18112
+ this.config.provider
18113
+ );
18114
+ const call1 = mainTokenContract.populate("approve", [
18115
+ this.address.address,
18116
+ uint2565.bnToUint256(amountInfo.amount.toWei())
18117
+ ]);
18118
+ const call2 = this.contract.populate("deposit", [
18119
+ uint2565.bnToUint256(amountInfo.amount.toWei()),
18120
+ receiver.address
18121
+ ]);
18122
+ const calls = [call1, call2];
18123
+ return calls;
18124
+ }
18125
+ async withdrawCall(amountInfo, receiver, owner) {
18126
+ const call = this.contract.populate("withdraw", [
18127
+ uint2565.bnToUint256(amountInfo.amount.toWei()),
18128
+ receiver.address,
18129
+ 300
18130
+ // 3% max slippage
18131
+ ]);
18132
+ return [call];
18133
+ }
18134
+ async getPositionInfo() {
18135
+ const CACHE_KEY = "positionInfo";
18136
+ if (this.isCacheValid(CACHE_KEY)) {
18137
+ return this.getCache(CACHE_KEY);
18138
+ }
18139
+ const resp = await fetch(
18140
+ `${getTrovesEndpoint()}/vesu/positions?walletAddress=${this.address.address}`
18141
+ );
18142
+ const data = await resp.json();
18143
+ if (!data.data || data.data.length == 0) {
18144
+ throw new Error("No positions found");
18145
+ }
18146
+ const collateralXSTRK = Web3Number.fromWei(
18147
+ data.data[0].collateral.value,
18148
+ data.data[0].collateral.decimals
18149
+ );
18150
+ const collateralUSDValue = Web3Number.fromWei(
18151
+ data.data[0].collateral.usdPrice.value,
18152
+ data.data[0].collateral.usdPrice.decimals
18153
+ );
18154
+ const debtSTRK = Web3Number.fromWei(
18155
+ data.data[0].debt.value,
18156
+ data.data[0].debt.decimals
18157
+ );
18158
+ const debtUSDValue = Web3Number.fromWei(
18159
+ data.data[0].debt.usdPrice.value,
18160
+ data.data[0].debt.usdPrice.decimals
18161
+ );
18162
+ const xSTRKPrice = await this.getSecondaryTokenPriceRelativeToMain();
18163
+ const collateralInSTRK = Number(collateralXSTRK.toFixed(6)) * xSTRKPrice;
18164
+ const STRKUSDPrice = Number(debtUSDValue.toFixed(6)) / Number(debtSTRK.toFixed(6));
18165
+ const actualCollateralUSDValue = collateralInSTRK * STRKUSDPrice;
18166
+ const cacheData = {
18167
+ collateralXSTRK,
18168
+ collateralUSDValue: new Web3Number(
18169
+ actualCollateralUSDValue.toFixed(6),
18170
+ collateralUSDValue.decimals
18171
+ ),
18172
+ debtSTRK,
18173
+ debtUSDValue,
18174
+ xSTRKPrice,
18175
+ collateralInSTRK
18176
+ };
18177
+ this.setCache(CACHE_KEY, cacheData);
18178
+ return cacheData;
18179
+ }
18180
+ async getSecondaryTokenPriceRelativeToMain(retry = 0) {
18181
+ const CACHE_KEY = "xSTRKPrice";
18182
+ if (this.isCacheValid(CACHE_KEY)) {
18183
+ return this.getCache(CACHE_KEY);
18184
+ }
18185
+ const params = {
18186
+ sellTokenAddress: this.metadata.additionalInfo.secondaryToken.address.address,
18187
+ buyTokenAddress: this.metadata.additionalInfo.mainToken.address.address,
18188
+ sellAmount: BigInt(new Web3Number("1", 18).toWei()),
18189
+ takerAddress: this.address.address
18190
+ };
18191
+ logger.verbose("getSecondaryTokenPriceRelativeToMain [1]", params);
18192
+ let avnu = new AvnuWrapper();
18193
+ const quote = await avnu.getQuotes(
18194
+ params.sellTokenAddress,
18195
+ params.buyTokenAddress,
18196
+ params.sellAmount?.toString() || "0",
18197
+ params.takerAddress
18198
+ );
18199
+ if (!quote) {
18200
+ throw new Error("No quotes found to compute secondary token price relative to main token");
18201
+ }
18202
+ const firstQuote = quote;
18203
+ const price = Number(
18204
+ Web3Number.fromWei(firstQuote.buyAmount.toString(), 18).toFixed(
18205
+ 6
18206
+ )
18207
+ );
18208
+ logger.verbose("getSecondaryTokenPriceRelativeToMain [2]", price);
18209
+ this.setCache(CACHE_KEY, price);
18210
+ return price;
18211
+ }
18212
+ };
18213
+ 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}}.`;
18214
+ var vesuProtocol = {
18215
+ name: "Vesu",
18216
+ logo: "https://static-assets-8zct.onrender.com/integrations/vesu/logo.png"
18217
+ };
18218
+ var endurProtocol = {
18219
+ name: "Endur",
18220
+ logo: "https://app.endur.fi/logo.png"
18221
+ };
18222
+ var _riskFactor3 = [
18223
+ { type: "Smart Contract Risk" /* SMART_CONTRACT_RISK */, value: 0.5, weight: 25, reason: "Audited by CSC" },
18224
+ { 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." },
18225
+ { 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" },
18226
+ { type: "Low Liquidity Risk" /* LOW_LIQUIDITY_RISK */, value: 0.5, weight: 50, reason: "xSTRK can be sometimes illiquid near true price" }
18227
+ ];
18228
+ var FAQS = [
18229
+ {
18230
+ question: "What is xSTRK Sensei?",
18231
+ 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."
18232
+ },
18233
+ {
18234
+ question: "What is the benefit of using xSTRK Sensei?",
18235
+ answer: "The strategy amplifies your xSTRK exposure and yield through leverage. It also helps you accumulate more Endur points faster."
18236
+ },
18237
+ {
18238
+ question: "What is the maximum leverage possible?",
18239
+ 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"
18240
+ },
18241
+ {
18242
+ question: "Isn't 1.1 health factor risky?",
18243
+ 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."
18244
+ },
18245
+ {
18246
+ question: "Are there any risks involved?",
18247
+ 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."
18248
+ },
18249
+ {
18250
+ question: "Does the position always grow?",
18251
+ 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."
18252
+ },
18253
+ {
18254
+ question: "Can I lose money using this strategy?",
18255
+ answer: "Yes. If the xSTRK price drops sharply or becomes illiquid, you may face slippage or loss when trying to exit the looped position."
18256
+ },
18257
+ {
18258
+ question: "What affects the DEX price of xSTRK?",
18259
+ 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."
18260
+ },
18261
+ {
18262
+ question: "Why is xSTRK considered illiquid?",
18263
+ 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."
18264
+ },
18265
+ {
18266
+ question: "Do I earn Endur points on looped xSTRK?",
18267
+ 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."
18268
+ }
18269
+ ];
18270
+ var SenseiStrategies = [
18271
+ {
18272
+ name: "xSTRK Sensei",
18273
+ description: highlightTextWithLinks(
18274
+ senseiDescription.replaceAll("{{token1}}", "STRK").replaceAll("{{token2}}", "xSTRK"),
18275
+ [{
18276
+ highlight: "Endur",
18277
+ link: "https://endur.fi"
18278
+ }, {
18279
+ highlight: "Vesu",
18280
+ link: "https://vesu.xyz"
18281
+ }, {
18282
+ highlight: "delta neutral position",
18283
+ link: "https://www.investopedia.com/terms/d/deltaneutral.asp"
18284
+ }]
18285
+ ),
18286
+ address: ContractAddr.from(
18287
+ "0x7023a5cadc8a5db80e4f0fde6b330cbd3c17bbbf9cb145cbabd7bd5e6fb7b0b"
18288
+ ),
18289
+ launchBlock: 1053811,
18290
+ type: "Other",
18291
+ depositTokens: [
18292
+ Global.getDefaultTokens().find((t) => t.symbol === "STRK")
18293
+ ],
18294
+ protocols: [endurProtocol, vesuProtocol],
18295
+ maxTVL: new Web3Number("1500000", 18),
18296
+ risk: {
18297
+ riskFactor: _riskFactor3,
18298
+ netRisk: _riskFactor3.reduce((acc, curr) => acc + curr.value * curr.weight, 0) / _riskFactor3.reduce((acc, curr) => acc + curr.weight, 0),
18299
+ notARisks: getNoRiskTags(_riskFactor3)
18300
+ },
18301
+ additionalInfo: {
18302
+ mainToken: Global.getDefaultTokens().find((t) => t.symbol === "STRK"),
18303
+ secondaryToken: Global.getDefaultTokens().find((t) => t.symbol === "xSTRK"),
18304
+ targetHfBps: 11e3,
18305
+ // 1.1 health factor
18306
+ feeBps: 2e3
18307
+ // 2% fee on profits
18308
+ },
18309
+ faqs: FAQS,
18310
+ contractDetails: [],
18311
+ investmentSteps: [
18312
+ "Swap STRK for xSTRK",
18313
+ "Deposit xSTRK to Vesu's Re7 xSTRK Pool",
18314
+ "Borrow STRK against your xSTRK collateral",
18315
+ "Buy more xSTRK with borrowed STRK",
18316
+ "Repeat the process to loop your position",
18317
+ "Claim DeFi spring (STRK) rewards weekly and reinvest"
18318
+ ]
18319
+ }
18320
+ ];
16231
18321
  export {
16232
18322
  AutoCompounderSTRK,
16233
18323
  AvnuWrapper,
@@ -16247,6 +18337,8 @@ export {
16247
18337
  Pricer,
16248
18338
  PricerFromApi,
16249
18339
  RiskType,
18340
+ SenseiStrategies,
18341
+ SenseiVault,
16250
18342
  VesuRebalance,
16251
18343
  VesuRebalanceStrategies,
16252
18344
  Web3Number,