@strkfarm/sdk 1.0.62 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -504,7 +504,7 @@ var Pricer = class extends PricerBase {
504
504
  }
505
505
  async _getPrice(token, defaultMethod = "all") {
506
506
  const methodToUse = this.methodToUse[token.symbol] || defaultMethod;
507
- logger.info(`Fetching price of ${token.symbol} using ${methodToUse}`);
507
+ logger.verbose(`Fetching price of ${token.symbol} using ${methodToUse}`);
508
508
  switch (methodToUse) {
509
509
  case "Coinbase":
510
510
  try {
@@ -669,7 +669,7 @@ var pragma_abi_default = [
669
669
  var Pragma = class {
670
670
  constructor(provider2) {
671
671
  this.contractAddr = "0x023fb3afbff2c0e3399f896dcf7400acf1a161941cfb386e34a123f228c62832";
672
- this.contract = new import_starknet2.Contract(pragma_abi_default, this.contractAddr, provider2);
672
+ this.contract = new import_starknet2.Contract({ abi: pragma_abi_default, address: this.contractAddr, providerOrAccount: provider2 });
673
673
  }
674
674
  async getPrice(tokenAddr) {
675
675
  if (!tokenAddr) {
@@ -2045,7 +2045,7 @@ var ERC20 = class {
2045
2045
  }
2046
2046
  contract(addr) {
2047
2047
  const _addr = typeof addr === "string" ? addr : addr.address;
2048
- return new import_starknet3.Contract(erc20_abi_default, _addr, this.config.provider);
2048
+ return new import_starknet3.Contract({ abi: erc20_abi_default, address: _addr, providerOrAccount: this.config.provider });
2049
2049
  }
2050
2050
  async balanceOf(token, address, tokenDecimals) {
2051
2051
  const contract = this.contract(token);
@@ -2234,7 +2234,7 @@ var FlowChartColors = /* @__PURE__ */ ((FlowChartColors2) => {
2234
2234
  FlowChartColors2["Purple"] = "#6e53dc";
2235
2235
  return FlowChartColors2;
2236
2236
  })(FlowChartColors || {});
2237
- function getMainnetConfig(rpcUrl = "https://starknet-mainnet.public.blastapi.io", blockIdentifier = "pending") {
2237
+ function getMainnetConfig(rpcUrl = "https://starknet-mainnet.public.blastapi.io", blockIdentifier = import_starknet6.BlockTag.LATEST) {
2238
2238
  return {
2239
2239
  provider: new import_starknet6.RpcProvider({
2240
2240
  nodeUrl: rpcUrl,
@@ -2353,7 +2353,7 @@ var AutoCompounderSTRK = class {
2353
2353
  async init() {
2354
2354
  const provider2 = this.config.provider;
2355
2355
  const cls = await provider2.getClassAt(this.addr.address);
2356
- this.contract = new import_starknet7.Contract(cls.abi, this.addr.address, provider2);
2356
+ this.contract = new import_starknet7.Contract({ abi: cls.abi, address: this.addr.address, providerOrAccount: provider2 });
2357
2357
  this.initialized = true;
2358
2358
  }
2359
2359
  async waitForInitilisation() {
@@ -3934,7 +3934,7 @@ var Harvests = class _Harvests {
3934
3934
  const unClaimed = [];
3935
3935
  const cls = await this.config.provider.getClassAt(rewards[0].rewardsContract.address);
3936
3936
  for (let reward of rewards) {
3937
- const contract = new import_starknet8.Contract(cls.abi, reward.rewardsContract.address, this.config.provider);
3937
+ const contract = new import_starknet8.Contract({ abi: cls.abi, address: reward.rewardsContract.address, providerOrAccount: this.config.provider });
3938
3938
  const isClaimed = await contract.call("is_claimed", [reward.claim.id]);
3939
3939
  logger.verbose(`${_Harvests.name}: isClaimed: ${isClaimed}`);
3940
3940
  if (isClaimed) {
@@ -3977,13 +3977,14 @@ var EkuboHarvests = class extends Harvests {
3977
3977
  return rewards.sort((a, b) => b.endDate.getTime() - a.endDate.getTime());
3978
3978
  }
3979
3979
  };
3980
+ var VESU_REWARDS_CONTRACT = ContractAddr.from("0x0387f3eb1d98632fbe3440a9f1385Aec9d87b6172491d3Dd81f1c35A7c61048F");
3980
3981
  var VesuHarvests = class _VesuHarvests extends Harvests {
3981
3982
  async getHarvests(addr) {
3982
3983
  const result = await fetch(`https://api.vesu.xyz/users/${addr.address}/strk-rewards/calldata`);
3983
3984
  const data = await result.json();
3984
- const rewardsContract = ContractAddr.from("0x0387f3eb1d98632fbe3440a9f1385Aec9d87b6172491d3Dd81f1c35A7c61048F");
3985
+ const rewardsContract = VESU_REWARDS_CONTRACT;
3985
3986
  const cls = await this.config.provider.getClassAt(rewardsContract.address);
3986
- const contract = new import_starknet8.Contract(cls.abi, rewardsContract.address, this.config.provider);
3987
+ const contract = new import_starknet8.Contract({ abi: cls.abi, address: rewardsContract.address, providerOrAccount: this.config.provider });
3987
3988
  const _claimed_amount = await contract.call("amount_already_claimed", [addr.address]);
3988
3989
  const claimed_amount = Web3Number.fromWei(_claimed_amount.toString(), 18);
3989
3990
  logger.verbose(`${_VesuHarvests.name}: claimed_amount: ${claimed_amount.toString()}`);
@@ -9485,11 +9486,11 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
9485
9486
  );
9486
9487
  this.metadata = metadata;
9487
9488
  this.address = metadata.address;
9488
- this.contract = new import_starknet9.Contract(
9489
- vesu_rebalance_abi_default,
9490
- this.address.address,
9491
- this.config.provider
9492
- );
9489
+ this.contract = new import_starknet9.Contract({
9490
+ abi: vesu_rebalance_abi_default,
9491
+ address: this.address.address,
9492
+ providerOrAccount: this.config.provider
9493
+ });
9493
9494
  }
9494
9495
  /**
9495
9496
  * Creates a deposit call to the strategy contract.
@@ -9502,11 +9503,11 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
9502
9503
  amountInfo.tokenInfo.address.eq(this.asset().address),
9503
9504
  "Deposit token mismatch"
9504
9505
  );
9505
- const assetContract = new import_starknet9.Contract(
9506
- vesu_rebalance_abi_default,
9507
- this.asset().address.address,
9508
- this.config.provider
9509
- );
9506
+ const assetContract = new import_starknet9.Contract({
9507
+ abi: vesu_rebalance_abi_default,
9508
+ address: this.asset().address.address,
9509
+ providerOrAccount: this.config.provider
9510
+ });
9510
9511
  const call1 = assetContract.populate("approve", [
9511
9512
  this.address.address,
9512
9513
  import_starknet9.uint256.bnToUint256(amountInfo.amount.toWei())
@@ -9639,11 +9640,11 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
9639
9640
  `Asset ${this.asset().address.toString()} not found in pool ${p.pool_id.address.toString()}`
9640
9641
  );
9641
9642
  }
9642
- let vTokenContract = new import_starknet9.Contract(
9643
- vesu_rebalance_abi_default,
9644
- p.v_token.address,
9645
- this.config.provider
9646
- );
9643
+ let vTokenContract = new import_starknet9.Contract({
9644
+ abi: vesu_rebalance_abi_default,
9645
+ address: p.v_token.address,
9646
+ providerOrAccount: this.config.provider
9647
+ });
9647
9648
  const bal = await vTokenContract.balanceOf(this.address.address);
9648
9649
  const assets = await vTokenContract.convert_to_assets(
9649
9650
  import_starknet9.uint256.bnToUint256(bal.toString())
@@ -15224,32 +15225,32 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15224
15225
  );
15225
15226
  this.metadata = metadata;
15226
15227
  this.address = metadata.address;
15227
- this.contract = new import_starknet10.Contract(
15228
- cl_vault_abi_default,
15229
- this.address.address,
15230
- this.config.provider
15231
- );
15228
+ this.contract = new import_starknet10.Contract({
15229
+ abi: cl_vault_abi_default,
15230
+ address: this.address.address,
15231
+ providerOrAccount: this.config.provider
15232
+ });
15232
15233
  if (this.metadata.additionalInfo.lstContract) {
15233
- this.lstContract = new import_starknet10.Contract(
15234
- erc4626_abi_default,
15235
- this.metadata.additionalInfo.lstContract.address,
15236
- this.config.provider
15237
- );
15234
+ this.lstContract = new import_starknet10.Contract({
15235
+ abi: erc4626_abi_default,
15236
+ address: this.metadata.additionalInfo.lstContract.address,
15237
+ providerOrAccount: this.config.provider
15238
+ });
15238
15239
  } else {
15239
15240
  this.lstContract = null;
15240
15241
  }
15241
15242
  const EKUBO_POSITION = "0x02e0af29598b407c8716b17f6d2795eca1b471413fa03fb145a5e33722184067";
15242
- this.ekuboPositionsContract = new import_starknet10.Contract(
15243
- ekubo_positions_abi_default,
15244
- EKUBO_POSITION,
15245
- this.config.provider
15246
- );
15243
+ this.ekuboPositionsContract = new import_starknet10.Contract({
15244
+ abi: ekubo_positions_abi_default,
15245
+ address: EKUBO_POSITION,
15246
+ providerOrAccount: this.config.provider
15247
+ });
15247
15248
  const EKUBO_MATH = "0x04a72e9e166f6c0e9d800af4dc40f6b6fb4404b735d3f528d9250808b2481995";
15248
- this.ekuboMathContract = new import_starknet10.Contract(
15249
- ekubo_math_abi_default,
15250
- EKUBO_MATH,
15251
- this.config.provider
15252
- );
15249
+ this.ekuboMathContract = new import_starknet10.Contract({
15250
+ abi: ekubo_math_abi_default,
15251
+ address: EKUBO_MATH,
15252
+ providerOrAccount: this.config.provider
15253
+ });
15253
15254
  this.avnu = new AvnuWrapper();
15254
15255
  }
15255
15256
  async matchInputAmounts(amountInfo) {
@@ -15297,16 +15298,16 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15297
15298
  }
15298
15299
  async depositCall(amountInfo, receiver) {
15299
15300
  const updateAmountInfo = await this.getMinDepositAmounts(amountInfo);
15300
- const token0Contract = new import_starknet10.Contract(
15301
- erc4626_abi_default,
15302
- amountInfo.token0.tokenInfo.address.address,
15303
- this.config.provider
15304
- );
15305
- const token1Contract = new import_starknet10.Contract(
15306
- erc4626_abi_default,
15307
- amountInfo.token1.tokenInfo.address.address,
15308
- this.config.provider
15309
- );
15301
+ const token0Contract = new import_starknet10.Contract({
15302
+ abi: erc4626_abi_default,
15303
+ address: amountInfo.token0.tokenInfo.address.address,
15304
+ providerOrAccount: this.config.provider
15305
+ });
15306
+ const token1Contract = new import_starknet10.Contract({
15307
+ abi: erc4626_abi_default,
15308
+ address: amountInfo.token1.tokenInfo.address.address,
15309
+ providerOrAccount: this.config.provider
15310
+ });
15310
15311
  const call1 = token0Contract.populate("approve", [
15311
15312
  this.address.address,
15312
15313
  import_starknet10.uint256.bnToUint256(updateAmountInfo.token0.amount.toWei())
@@ -15365,7 +15366,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15365
15366
  * Calculates assets before and now in a given token of TVL per share to observe growth
15366
15367
  * @returns {Promise<number>} The weighted average APY across all pools
15367
15368
  */
15368
- async netAPY(blockIdentifier = "pending", sinceBlocks = 2e4) {
15369
+ async netAPY(blockIdentifier = "pre_confirmed", sinceBlocks = 2e4) {
15369
15370
  const tvlNow = await this._getTVL(blockIdentifier);
15370
15371
  const supplyNow = await this.totalSupply(blockIdentifier);
15371
15372
  const priceNow = await this.getCurrentPrice(blockIdentifier);
@@ -15424,13 +15425,13 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15424
15425
  }
15425
15426
  return shares;
15426
15427
  }
15427
- async balanceOf(user, blockIdentifier = "pending") {
15428
+ async balanceOf(user, blockIdentifier = "pre_confirmed") {
15428
15429
  let bal = await this.contract.call("balance_of", [user.address], {
15429
15430
  blockIdentifier
15430
15431
  });
15431
15432
  return Web3Number.fromWei(bal.toString(), 18);
15432
15433
  }
15433
- async getUserTVL(user, blockIdentifier = "pending") {
15434
+ async getUserTVL(user, blockIdentifier = "pre_confirmed") {
15434
15435
  let bal = await this.balanceOf(user, blockIdentifier);
15435
15436
  const assets = await this.contract.call(
15436
15437
  "convert_to_assets",
@@ -15469,7 +15470,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15469
15470
  }
15470
15471
  };
15471
15472
  }
15472
- async _getTVL(blockIdentifier = "pending") {
15473
+ async _getTVL(blockIdentifier = "pre_confirmed") {
15473
15474
  const result = await this.contract.call("total_liquidity", [], {
15474
15475
  blockIdentifier
15475
15476
  });
@@ -15481,7 +15482,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15481
15482
  );
15482
15483
  return { amount0, amount1 };
15483
15484
  }
15484
- async totalSupply(blockIdentifier = "pending") {
15485
+ async totalSupply(blockIdentifier = "pre_confirmed") {
15485
15486
  const res = await this.contract.call("total_supply", [], {
15486
15487
  blockIdentifier
15487
15488
  });
@@ -15497,7 +15498,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15497
15498
  "Expected token1 in depositTokens[1]"
15498
15499
  );
15499
15500
  }
15500
- async getTVL(blockIdentifier = "pending") {
15501
+ async getTVL(blockIdentifier = "pre_confirmed") {
15501
15502
  const { amount0, amount1 } = await this._getTVL(blockIdentifier);
15502
15503
  const poolKey = await this.getPoolKey(blockIdentifier);
15503
15504
  this.assertValidDepositTokens(poolKey);
@@ -15586,11 +15587,11 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15586
15587
  }
15587
15588
  throw new Error("No true price available");
15588
15589
  }
15589
- async getCurrentPrice(blockIdentifier = "pending") {
15590
+ async getCurrentPrice(blockIdentifier = "pre_confirmed") {
15590
15591
  const poolKey = await this.getPoolKey(blockIdentifier);
15591
15592
  return this._getCurrentPrice(poolKey, blockIdentifier);
15592
15593
  }
15593
- async _getCurrentPrice(poolKey, blockIdentifier = "pending") {
15594
+ async _getCurrentPrice(poolKey, blockIdentifier = "pre_confirmed") {
15594
15595
  const priceInfo = await this.ekuboPositionsContract.call(
15595
15596
  "get_pool_price",
15596
15597
  [
@@ -15625,7 +15626,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15625
15626
  sqrtRatio: priceInfo.sqrt_ratio.toString()
15626
15627
  };
15627
15628
  }
15628
- async getCurrentBounds(blockIdentifier = "pending") {
15629
+ async getCurrentBounds(blockIdentifier = "pre_confirmed") {
15629
15630
  const result = await this.contract.call("get_position_key", [], {
15630
15631
  blockIdentifier
15631
15632
  });
@@ -15642,7 +15643,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15642
15643
  const tick = Math.floor(value / tickSpacing) * tickSpacing;
15643
15644
  return this.tickToi129(tick);
15644
15645
  }
15645
- async getPoolKey(blockIdentifier = "pending") {
15646
+ async getPoolKey(blockIdentifier = "pre_confirmed") {
15646
15647
  if (this.poolKey) {
15647
15648
  return this.poolKey;
15648
15649
  }
@@ -16140,7 +16141,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
16140
16141
  static tickToPrice(tick) {
16141
16142
  return Math.pow(1.000001, Number(tick));
16142
16143
  }
16143
- async getLiquidityToAmounts(liquidity, bounds, blockIdentifier = "pending", _poolKey = null, _currentPrice = null) {
16144
+ async getLiquidityToAmounts(liquidity, bounds, blockIdentifier = "pre_confirmed", _poolKey = null, _currentPrice = null) {
16144
16145
  const currentPrice = _currentPrice || await this.getCurrentPrice(blockIdentifier);
16145
16146
  const lowerPrice = _EkuboCLVault.tickToPrice(bounds.lowerTick);
16146
16147
  const upperPrice = _EkuboCLVault.tickToPrice(bounds.upperTick);
@@ -18302,7 +18303,7 @@ var SenseiVault = class extends BaseStrategy {
18302
18303
  this.address = metadata.address;
18303
18304
  this.pricer = pricer;
18304
18305
  this.metadata = metadata;
18305
- this.contract = new import_starknet11.Contract(sensei_abi_default, this.address.address, this.config.provider);
18306
+ this.contract = new import_starknet11.Contract({ abi: sensei_abi_default, address: this.address.address, providerOrAccount: this.config.provider });
18306
18307
  if (metadata.depositTokens.length === 0) {
18307
18308
  throw new Error("Deposit tokens are not defined in metadata");
18308
18309
  }
@@ -18354,11 +18355,11 @@ var SenseiVault = class extends BaseStrategy {
18354
18355
  }
18355
18356
  }
18356
18357
  async depositCall(amountInfo, receiver) {
18357
- const mainTokenContract = new import_starknet11.Contract(
18358
- erc20_abi_default,
18359
- this.metadata.depositTokens[0].address.address,
18360
- this.config.provider
18361
- );
18358
+ const mainTokenContract = new import_starknet11.Contract({
18359
+ abi: erc20_abi_default,
18360
+ address: this.metadata.depositTokens[0].address.address,
18361
+ providerOrAccount: this.config.provider
18362
+ });
18362
18363
  const call1 = mainTokenContract.populate("approve", [
18363
18364
  this.address.address,
18364
18365
  import_starknet11.uint256.bnToUint256(amountInfo.amount.toWei())
@@ -18569,7 +18570,9 @@ var SenseiStrategies = [
18569
18570
  var import_starknet12 = require("starknet");
18570
18571
 
18571
18572
  // src/strategies/universal-adapters/adapter-utils.ts
18572
- var SIMPLE_SANITIZER = ContractAddr.from("0x3798dc4f83fdfad199e5236e3656cf2fb79bc50c00504d0dd41522e0f042072");
18573
+ var SIMPLE_SANITIZER = ContractAddr.from("0x5a2e3ceb3da368b983a8717898427ab7b6daf04014b70f321e777f9aad940b4");
18574
+ var PRICE_ROUTER = ContractAddr.from("0x05e83Fa38D791d2dba8E6f487758A9687FfEe191A6Cf8a6c5761ab0a110DB837");
18575
+ var AVNU_MIDDLEWARE = ContractAddr.from("0x4a7972ed3f5d1e74a6d6c4a8f467666953d081c8f2270390cc169d50d17cb0d");
18573
18576
  function toBigInt(value) {
18574
18577
  if (typeof value === "string") {
18575
18578
  return BigInt(value);
@@ -18713,6 +18716,66 @@ var CommonAdapter = class extends BaseAdapter {
18713
18716
  };
18714
18717
  };
18715
18718
  }
18719
+ getAvnuAdapter(fromToken, toToken, id) {
18720
+ return () => ({
18721
+ leaf: this.constructSimpleLeafData({
18722
+ id,
18723
+ target: AVNU_MIDDLEWARE,
18724
+ method: "multi_route_swap",
18725
+ packedArguments: [
18726
+ fromToken.toBigInt(),
18727
+ toToken.toBigInt(),
18728
+ this.config.vaultAllocator.toBigInt()
18729
+ ]
18730
+ }),
18731
+ callConstructor: this.getAvnuCall(fromToken, toToken).bind(this)
18732
+ });
18733
+ }
18734
+ getAvnuCall(fromToken, toToken) {
18735
+ return (params) => {
18736
+ return {
18737
+ sanitizer: SIMPLE_SANITIZER,
18738
+ call: {
18739
+ contractAddress: AVNU_MIDDLEWARE,
18740
+ selector: import_starknet13.hash.getSelectorFromName("multi_route_swap"),
18741
+ calldata: [
18742
+ fromToken.toBigInt(),
18743
+ // sell_token_address
18744
+ toBigInt(params.props.token_from_amount.low.toString()),
18745
+ // sell_token_amount low
18746
+ toBigInt(params.props.token_from_amount.high.toString()),
18747
+ // sell_token_amount high
18748
+ toToken.toBigInt(),
18749
+ // buy_token_address
18750
+ toBigInt(params.props.token_to_amount.low.toString()),
18751
+ // buy_token_amount low
18752
+ toBigInt(params.props.token_to_amount.high.toString()),
18753
+ // buy_token_amount high
18754
+ toBigInt(params.props.token_to_min_amount.low.toString()),
18755
+ // buy_token_min_amount low
18756
+ toBigInt(params.props.token_to_min_amount.high.toString()),
18757
+ // buy_token_min_amount high
18758
+ this.config.vaultAllocator.toBigInt(),
18759
+ // beneficiary
18760
+ toBigInt(0),
18761
+ // integrator_fee_amount_bps
18762
+ this.config.vaultAllocator.toBigInt(),
18763
+ // integrator_fee_recipient
18764
+ // unpack routes
18765
+ BigInt(params.props.routes.length),
18766
+ ...params.props.routes.map((r) => [
18767
+ BigInt(import_starknet13.num.hexToDecimalString(r.token_from)),
18768
+ BigInt(import_starknet13.num.hexToDecimalString(r.token_to)),
18769
+ BigInt(import_starknet13.num.hexToDecimalString(r.exchange_address)),
18770
+ BigInt(r.percent),
18771
+ BigInt(r.additional_swap_params.length),
18772
+ ...r.additional_swap_params.map((p) => BigInt(import_starknet13.num.hexToDecimalString(p)))
18773
+ ]).flat()
18774
+ ]
18775
+ }
18776
+ };
18777
+ };
18778
+ }
18716
18779
  };
18717
18780
 
18718
18781
  // src/strategies/universal-adapters/vesu-adapter.ts
@@ -21026,7 +21089,7 @@ var VesuAdapter = class _VesuAdapter extends BaseAdapter {
21026
21089
  }
21027
21090
  };
21028
21091
  logger.verbose(`VesuAdapter::ConstructingModify::Debt::${JSON.stringify(_debt)}`);
21029
- const singletonContract = new import_starknet14.Contract(vesu_singleton_abi_default, this.VESU_SINGLETON.toString(), new import_starknet14.RpcProvider({ nodeUrl: "" }));
21092
+ const singletonContract = new import_starknet14.Contract({ abi: vesu_singleton_abi_default, address: this.VESU_SINGLETON.toString(), providerOrAccount: new import_starknet14.RpcProvider({ nodeUrl: "" }) });
21030
21093
  const call = singletonContract.populate("modify_position", {
21031
21094
  params: {
21032
21095
  pool_id: this.config.poolId.toBigInt(),
@@ -21049,6 +21112,40 @@ var VesuAdapter = class _VesuAdapter extends BaseAdapter {
21049
21112
  }
21050
21113
  };
21051
21114
  };
21115
+ this.getDefispringRewardsAdapter = (id) => {
21116
+ return () => {
21117
+ const packedArguments = [];
21118
+ const output = {
21119
+ id: BigInt(import_starknet14.num.getDecimalString(import_starknet14.shortString.encodeShortString(id))),
21120
+ readableId: id,
21121
+ data: [
21122
+ SIMPLE_SANITIZER.toBigInt(),
21123
+ // sanitizer address
21124
+ VESU_REWARDS_CONTRACT.toBigInt(),
21125
+ // contract
21126
+ toBigInt(import_starknet14.hash.getSelectorFromName("claim")),
21127
+ // method name
21128
+ BigInt(packedArguments.length),
21129
+ ...packedArguments
21130
+ ]
21131
+ };
21132
+ return { leaf: output, callConstructor: this.getDefiSpringClaimCall().bind(this) };
21133
+ };
21134
+ };
21135
+ this.getDefiSpringClaimCall = () => {
21136
+ return (params) => ({
21137
+ sanitizer: SIMPLE_SANITIZER,
21138
+ call: {
21139
+ contractAddress: VESU_REWARDS_CONTRACT,
21140
+ selector: import_starknet14.hash.getSelectorFromName("claim"),
21141
+ calldata: [
21142
+ BigInt(params.amount.toWei()),
21143
+ BigInt(params.proofs.length),
21144
+ ...params.proofs.map((proof) => BigInt(import_starknet14.num.hexToDecimalString(proof)))
21145
+ ]
21146
+ }
21147
+ });
21148
+ };
21052
21149
  this.config = config;
21053
21150
  }
21054
21151
  static getDefaultModifyPositionCallParams(params) {
@@ -21090,7 +21187,7 @@ var VesuAdapter = class _VesuAdapter extends BaseAdapter {
21090
21187
  throw new Error(`Unknown VesuAmountDenomination: ${denomination}`);
21091
21188
  }
21092
21189
  getVesuSingletonContract(config) {
21093
- return new import_starknet14.Contract(vesu_singleton_abi_default, this.VESU_SINGLETON.address, config.provider);
21190
+ return new import_starknet14.Contract({ abi: vesu_singleton_abi_default, address: this.VESU_SINGLETON.address, providerOrAccount: config.provider });
21094
21191
  }
21095
21192
  async getLTVConfig(config) {
21096
21193
  const CACHE_KEY = "ltv_config";
@@ -23453,16 +23550,16 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
23453
23550
  );
23454
23551
  this.metadata = metadata;
23455
23552
  this.address = metadata.address;
23456
- this.contract = new import_starknet15.Contract(
23457
- universal_vault_abi_default,
23458
- this.address.address,
23459
- this.config.provider
23460
- );
23461
- this.managerContract = new import_starknet15.Contract(
23462
- vault_manager_abi_default,
23463
- this.metadata.additionalInfo.manager.address,
23464
- this.config.provider
23465
- );
23553
+ this.contract = new import_starknet15.Contract({
23554
+ abi: universal_vault_abi_default,
23555
+ address: this.address.address,
23556
+ providerOrAccount: this.config.provider
23557
+ });
23558
+ this.managerContract = new import_starknet15.Contract({
23559
+ abi: vault_manager_abi_default,
23560
+ address: this.metadata.additionalInfo.manager.address,
23561
+ providerOrAccount: this.config.provider
23562
+ });
23466
23563
  }
23467
23564
  getMerkleTree() {
23468
23565
  if (this.merkleTree) return this.merkleTree;
@@ -23512,11 +23609,11 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
23512
23609
  amountInfo.tokenInfo.address.eq(this.asset().address),
23513
23610
  "Deposit token mismatch"
23514
23611
  );
23515
- const assetContract = new import_starknet15.Contract(
23516
- universal_vault_abi_default,
23517
- this.asset().address.address,
23518
- this.config.provider
23519
- );
23612
+ const assetContract = new import_starknet15.Contract({
23613
+ abi: universal_vault_abi_default,
23614
+ address: this.asset().address.address,
23615
+ providerOrAccount: this.config.provider
23616
+ });
23520
23617
  const call1 = assetContract.populate("approve", [
23521
23618
  this.address.address,
23522
23619
  import_starknet15.uint256.bnToUint256(amountInfo.amount.toWei())
@@ -23678,7 +23775,7 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
23678
23775
  const aumToken = vesuAum.plus(balance.amount);
23679
23776
  logger.verbose(`${this.getTag()} Actual AUM: ${aumToken}`);
23680
23777
  const netAPY = await this.netAPY();
23681
- const defispringAPY = netAPY.splits.find((s) => s.id === "defispring")?.apy || 0;
23778
+ const defispringAPY = (netAPY.splits.find((s) => s.id === "defispring")?.apy || 0) * 0.8;
23682
23779
  if (!defispringAPY) throw new Error("DefiSpring APY not found");
23683
23780
  const timeDiff = Math.round(Date.now() / 1e3) - Number(lastReportTime);
23684
23781
  const growthRate = timeDiff * defispringAPY / (365 * 24 * 60 * 60);
@@ -23921,6 +24018,51 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
23921
24018
  const manageCall = this.getManageCall(["approve_bring_liquidity" /* APPROVE_BRING_LIQUIDITY */, "bring_liquidity" /* BRING_LIQUIDITY */], [manageCall1, manageCall2]);
23922
24019
  return manageCall;
23923
24020
  }
24021
+ async getHarvestCall() {
24022
+ const vesuHarvest = new VesuHarvests(this.config);
24023
+ const harvestInfo = await vesuHarvest.getUnHarvestedRewards(this.metadata.additionalInfo.vaultAllocator);
24024
+ if (harvestInfo.length != 1) {
24025
+ throw new Error(`Expected 1 harvest info, got ${harvestInfo.length}`);
24026
+ }
24027
+ const amount = harvestInfo[0].claim.amount;
24028
+ const actualReward = harvestInfo[0].actualReward;
24029
+ const proofs = harvestInfo[0].proof;
24030
+ if (actualReward.isZero()) {
24031
+ throw new Error(`Expected non-zero actual reward, got ${harvestInfo[0].actualReward}`);
24032
+ }
24033
+ const manage1Info = this.getProofs("defispring_rewards" /* DEFISPRING_REWARDS */);
24034
+ const manageCall1 = manage1Info.callConstructor({
24035
+ amount,
24036
+ proofs
24037
+ });
24038
+ const proofIds = ["defispring_rewards" /* DEFISPRING_REWARDS */];
24039
+ const manageCalls = [manageCall1];
24040
+ const STRK2 = Global.getDefaultTokens().find((t) => t.symbol === "STRK");
24041
+ if (this.asset().symbol != "STRK") {
24042
+ const manage2Info = this.getProofs("approve_swap_token1" /* APPROVE_SWAP_TOKEN1 */);
24043
+ const manageCall2 = manage2Info.callConstructor({
24044
+ amount: actualReward
24045
+ });
24046
+ const avnuModule = new AvnuWrapper();
24047
+ const quote = await avnuModule.getQuotes(
24048
+ STRK2.address.address,
24049
+ this.asset().address.address,
24050
+ actualReward.toWei(),
24051
+ this.address.address
24052
+ );
24053
+ const swapInfo = await avnuModule.getSwapInfo(quote, this.address.address, 0, this.address.address);
24054
+ const manage3Info = this.getProofs("avnu_swap_rewards" /* AVNU_SWAP_REWARDS */);
24055
+ const manageCall3 = manage3Info.callConstructor({
24056
+ props: swapInfo
24057
+ });
24058
+ proofIds.push("approve_swap_token1" /* APPROVE_SWAP_TOKEN1 */);
24059
+ proofIds.push("avnu_swap_rewards" /* AVNU_SWAP_REWARDS */);
24060
+ manageCalls.push(manageCall2);
24061
+ manageCalls.push(manageCall3);
24062
+ }
24063
+ const manageCall = this.getManageCall(proofIds, manageCalls);
24064
+ return { call: manageCall, reward: actualReward, tokenInfo: STRK2 };
24065
+ }
23924
24066
  async getRebalanceCall(params) {
23925
24067
  let callSet1 = this.getVesuModifyPositionCalls({
23926
24068
  isLeg1: true,
@@ -23957,6 +24099,9 @@ var UNIVERSAL_MANAGE_IDS = /* @__PURE__ */ ((UNIVERSAL_MANAGE_IDS2) => {
23957
24099
  UNIVERSAL_MANAGE_IDS2["APPROVE_TOKEN2"] = "approve_token2";
23958
24100
  UNIVERSAL_MANAGE_IDS2["APPROVE_BRING_LIQUIDITY"] = "approve_bring_liquidity";
23959
24101
  UNIVERSAL_MANAGE_IDS2["BRING_LIQUIDITY"] = "bring_liquidity";
24102
+ UNIVERSAL_MANAGE_IDS2["DEFISPRING_REWARDS"] = "defispring_rewards";
24103
+ UNIVERSAL_MANAGE_IDS2["APPROVE_SWAP_TOKEN1"] = "approve_swap_token1";
24104
+ UNIVERSAL_MANAGE_IDS2["AVNU_SWAP_REWARDS"] = "avnu_swap_rewards";
23960
24105
  return UNIVERSAL_MANAGE_IDS2;
23961
24106
  })(UNIVERSAL_MANAGE_IDS || {});
23962
24107
  var UNIVERSAL_ADAPTERS = /* @__PURE__ */ ((UNIVERSAL_ADAPTERS2) => {
@@ -24006,6 +24151,10 @@ function getLooperSettings(token1Symbol, token2Symbol, vaultSettings, pool1, poo
24006
24151
  vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(ETHToken.address, vesuAdapterETHUSDC.VESU_SINGLETON, "approve_token2" /* APPROVE_TOKEN2 */).bind(commonAdapter));
24007
24152
  vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(USDCToken.address, vaultSettings.vaultAddress, "approve_bring_liquidity" /* APPROVE_BRING_LIQUIDITY */).bind(commonAdapter));
24008
24153
  vaultSettings.leafAdapters.push(commonAdapter.getBringLiquidityAdapter("bring_liquidity" /* BRING_LIQUIDITY */).bind(commonAdapter));
24154
+ vaultSettings.leafAdapters.push(vesuAdapterUSDCETH.getDefispringRewardsAdapter("defispring_rewards" /* DEFISPRING_REWARDS */).bind(vesuAdapterUSDCETH));
24155
+ const STRKToken = Global.getDefaultTokens().find((token) => token.symbol === "STRK");
24156
+ vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(STRKToken.address, AVNU_MIDDLEWARE, "approve_swap_token1" /* APPROVE_SWAP_TOKEN1 */).bind(commonAdapter));
24157
+ vaultSettings.leafAdapters.push(commonAdapter.getAvnuAdapter(STRKToken.address, USDCToken.address, "avnu_swap_rewards" /* AVNU_SWAP_REWARDS */).bind(commonAdapter));
24009
24158
  return vaultSettings;
24010
24159
  }
24011
24160
  var _riskFactor4 = [
@@ -24493,7 +24642,7 @@ var Store = class _Store {
24493
24642
  logger.warn(`This not stored anywhere, please you backup this password for future use`);
24494
24643
  logger.warn(`\u26A0\uFE0F=========================================\u26A0\uFE0F`);
24495
24644
  }
24496
- getAccount(accountKey, txVersion = import_starknet16.constants.TRANSACTION_VERSION.V2) {
24645
+ getAccount(accountKey, txVersion) {
24497
24646
  const accounts = this.loadAccounts();
24498
24647
  logger.verbose(`nAccounts loaded for network: ${Object.keys(accounts).length}`);
24499
24648
  const data = accounts[accountKey];
@@ -24502,7 +24651,13 @@ var Store = class _Store {
24502
24651
  }
24503
24652
  logger.verbose(`Account loaded: ${accountKey} from network: ${this.config.network}`);
24504
24653
  logger.verbose(`Address: ${data.address}`);
24505
- const acc = new import_starknet16.Account(this.config.provider, data.address, data.pk, void 0, txVersion);
24654
+ const acc = new import_starknet16.Account({
24655
+ provider: this.config.provider,
24656
+ address: data.address,
24657
+ signer: data.pk,
24658
+ cairoVersion: void 0,
24659
+ transactionVersion: txVersion
24660
+ });
24506
24661
  return acc;
24507
24662
  }
24508
24663
  addAccount(accountKey, address, pk) {
@@ -24661,7 +24816,7 @@ async function prepareMultiDeployContracts(contracts, config, acc) {
24661
24816
  for (const { contract_name, package_name, constructorData } of contracts) {
24662
24817
  const declaredInfo = await myDeclare(contract_name, package_name, config, acc);
24663
24818
  const classHash = declaredInfo.class_hash;
24664
- const { calls, addresses } = import_starknet17.transaction.buildUDCCall({
24819
+ const { calls, addresses } = new import_starknet17.Deployer().buildDeployerCall({
24665
24820
  classHash,
24666
24821
  constructorCalldata: constructorData
24667
24822
  }, acc.address);