@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.mjs CHANGED
@@ -417,7 +417,7 @@ var Pricer = class extends PricerBase {
417
417
  }
418
418
  async _getPrice(token, defaultMethod = "all") {
419
419
  const methodToUse = this.methodToUse[token.symbol] || defaultMethod;
420
- logger.info(`Fetching price of ${token.symbol} using ${methodToUse}`);
420
+ logger.verbose(`Fetching price of ${token.symbol} using ${methodToUse}`);
421
421
  switch (methodToUse) {
422
422
  case "Coinbase":
423
423
  try {
@@ -582,7 +582,7 @@ var pragma_abi_default = [
582
582
  var Pragma = class {
583
583
  constructor(provider2) {
584
584
  this.contractAddr = "0x023fb3afbff2c0e3399f896dcf7400acf1a161941cfb386e34a123f228c62832";
585
- this.contract = new Contract(pragma_abi_default, this.contractAddr, provider2);
585
+ this.contract = new Contract({ abi: pragma_abi_default, address: this.contractAddr, providerOrAccount: provider2 });
586
586
  }
587
587
  async getPrice(tokenAddr) {
588
588
  if (!tokenAddr) {
@@ -1958,7 +1958,7 @@ var ERC20 = class {
1958
1958
  }
1959
1959
  contract(addr) {
1960
1960
  const _addr = typeof addr === "string" ? addr : addr.address;
1961
- return new Contract2(erc20_abi_default, _addr, this.config.provider);
1961
+ return new Contract2({ abi: erc20_abi_default, address: _addr, providerOrAccount: this.config.provider });
1962
1962
  }
1963
1963
  async balanceOf(token, address, tokenDecimals) {
1964
1964
  const contract = this.contract(token);
@@ -2121,7 +2121,7 @@ var AvnuWrapper = class _AvnuWrapper {
2121
2121
  };
2122
2122
 
2123
2123
  // src/interfaces/common.tsx
2124
- import { RpcProvider as RpcProvider2 } from "starknet";
2124
+ import { BlockTag, RpcProvider as RpcProvider2 } from "starknet";
2125
2125
  import { Fragment, jsx } from "react/jsx-runtime";
2126
2126
  var RiskType = /* @__PURE__ */ ((RiskType2) => {
2127
2127
  RiskType2["MARKET_RISK"] = "Market Risk";
@@ -2147,7 +2147,7 @@ var FlowChartColors = /* @__PURE__ */ ((FlowChartColors2) => {
2147
2147
  FlowChartColors2["Purple"] = "#6e53dc";
2148
2148
  return FlowChartColors2;
2149
2149
  })(FlowChartColors || {});
2150
- function getMainnetConfig(rpcUrl = "https://starknet-mainnet.public.blastapi.io", blockIdentifier = "pending") {
2150
+ function getMainnetConfig(rpcUrl = "https://starknet-mainnet.public.blastapi.io", blockIdentifier = BlockTag.LATEST) {
2151
2151
  return {
2152
2152
  provider: new RpcProvider2({
2153
2153
  nodeUrl: rpcUrl,
@@ -2266,7 +2266,7 @@ var AutoCompounderSTRK = class {
2266
2266
  async init() {
2267
2267
  const provider2 = this.config.provider;
2268
2268
  const cls = await provider2.getClassAt(this.addr.address);
2269
- this.contract = new Contract3(cls.abi, this.addr.address, provider2);
2269
+ this.contract = new Contract3({ abi: cls.abi, address: this.addr.address, providerOrAccount: provider2 });
2270
2270
  this.initialized = true;
2271
2271
  }
2272
2272
  async waitForInitilisation() {
@@ -3847,7 +3847,7 @@ var Harvests = class _Harvests {
3847
3847
  const unClaimed = [];
3848
3848
  const cls = await this.config.provider.getClassAt(rewards[0].rewardsContract.address);
3849
3849
  for (let reward of rewards) {
3850
- const contract = new Contract4(cls.abi, reward.rewardsContract.address, this.config.provider);
3850
+ const contract = new Contract4({ abi: cls.abi, address: reward.rewardsContract.address, providerOrAccount: this.config.provider });
3851
3851
  const isClaimed = await contract.call("is_claimed", [reward.claim.id]);
3852
3852
  logger.verbose(`${_Harvests.name}: isClaimed: ${isClaimed}`);
3853
3853
  if (isClaimed) {
@@ -3890,13 +3890,14 @@ var EkuboHarvests = class extends Harvests {
3890
3890
  return rewards.sort((a, b) => b.endDate.getTime() - a.endDate.getTime());
3891
3891
  }
3892
3892
  };
3893
+ var VESU_REWARDS_CONTRACT = ContractAddr.from("0x0387f3eb1d98632fbe3440a9f1385Aec9d87b6172491d3Dd81f1c35A7c61048F");
3893
3894
  var VesuHarvests = class _VesuHarvests extends Harvests {
3894
3895
  async getHarvests(addr) {
3895
3896
  const result = await fetch(`https://api.vesu.xyz/users/${addr.address}/strk-rewards/calldata`);
3896
3897
  const data = await result.json();
3897
- const rewardsContract = ContractAddr.from("0x0387f3eb1d98632fbe3440a9f1385Aec9d87b6172491d3Dd81f1c35A7c61048F");
3898
+ const rewardsContract = VESU_REWARDS_CONTRACT;
3898
3899
  const cls = await this.config.provider.getClassAt(rewardsContract.address);
3899
- const contract = new Contract4(cls.abi, rewardsContract.address, this.config.provider);
3900
+ const contract = new Contract4({ abi: cls.abi, address: rewardsContract.address, providerOrAccount: this.config.provider });
3900
3901
  const _claimed_amount = await contract.call("amount_already_claimed", [addr.address]);
3901
3902
  const claimed_amount = Web3Number.fromWei(_claimed_amount.toString(), 18);
3902
3903
  logger.verbose(`${_VesuHarvests.name}: claimed_amount: ${claimed_amount.toString()}`);
@@ -9398,11 +9399,11 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
9398
9399
  );
9399
9400
  this.metadata = metadata;
9400
9401
  this.address = metadata.address;
9401
- this.contract = new Contract5(
9402
- vesu_rebalance_abi_default,
9403
- this.address.address,
9404
- this.config.provider
9405
- );
9402
+ this.contract = new Contract5({
9403
+ abi: vesu_rebalance_abi_default,
9404
+ address: this.address.address,
9405
+ providerOrAccount: this.config.provider
9406
+ });
9406
9407
  }
9407
9408
  /**
9408
9409
  * Creates a deposit call to the strategy contract.
@@ -9415,11 +9416,11 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
9415
9416
  amountInfo.tokenInfo.address.eq(this.asset().address),
9416
9417
  "Deposit token mismatch"
9417
9418
  );
9418
- const assetContract = new Contract5(
9419
- vesu_rebalance_abi_default,
9420
- this.asset().address.address,
9421
- this.config.provider
9422
- );
9419
+ const assetContract = new Contract5({
9420
+ abi: vesu_rebalance_abi_default,
9421
+ address: this.asset().address.address,
9422
+ providerOrAccount: this.config.provider
9423
+ });
9423
9424
  const call1 = assetContract.populate("approve", [
9424
9425
  this.address.address,
9425
9426
  uint2563.bnToUint256(amountInfo.amount.toWei())
@@ -9552,11 +9553,11 @@ var VesuRebalance = class _VesuRebalance extends BaseStrategy {
9552
9553
  `Asset ${this.asset().address.toString()} not found in pool ${p.pool_id.address.toString()}`
9553
9554
  );
9554
9555
  }
9555
- let vTokenContract = new Contract5(
9556
- vesu_rebalance_abi_default,
9557
- p.v_token.address,
9558
- this.config.provider
9559
- );
9556
+ let vTokenContract = new Contract5({
9557
+ abi: vesu_rebalance_abi_default,
9558
+ address: p.v_token.address,
9559
+ providerOrAccount: this.config.provider
9560
+ });
9560
9561
  const bal = await vTokenContract.balanceOf(this.address.address);
9561
9562
  const assets = await vTokenContract.convert_to_assets(
9562
9563
  uint2563.bnToUint256(bal.toString())
@@ -15141,32 +15142,32 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15141
15142
  );
15142
15143
  this.metadata = metadata;
15143
15144
  this.address = metadata.address;
15144
- this.contract = new Contract6(
15145
- cl_vault_abi_default,
15146
- this.address.address,
15147
- this.config.provider
15148
- );
15145
+ this.contract = new Contract6({
15146
+ abi: cl_vault_abi_default,
15147
+ address: this.address.address,
15148
+ providerOrAccount: this.config.provider
15149
+ });
15149
15150
  if (this.metadata.additionalInfo.lstContract) {
15150
- this.lstContract = new Contract6(
15151
- erc4626_abi_default,
15152
- this.metadata.additionalInfo.lstContract.address,
15153
- this.config.provider
15154
- );
15151
+ this.lstContract = new Contract6({
15152
+ abi: erc4626_abi_default,
15153
+ address: this.metadata.additionalInfo.lstContract.address,
15154
+ providerOrAccount: this.config.provider
15155
+ });
15155
15156
  } else {
15156
15157
  this.lstContract = null;
15157
15158
  }
15158
15159
  const EKUBO_POSITION = "0x02e0af29598b407c8716b17f6d2795eca1b471413fa03fb145a5e33722184067";
15159
- this.ekuboPositionsContract = new Contract6(
15160
- ekubo_positions_abi_default,
15161
- EKUBO_POSITION,
15162
- this.config.provider
15163
- );
15160
+ this.ekuboPositionsContract = new Contract6({
15161
+ abi: ekubo_positions_abi_default,
15162
+ address: EKUBO_POSITION,
15163
+ providerOrAccount: this.config.provider
15164
+ });
15164
15165
  const EKUBO_MATH = "0x04a72e9e166f6c0e9d800af4dc40f6b6fb4404b735d3f528d9250808b2481995";
15165
- this.ekuboMathContract = new Contract6(
15166
- ekubo_math_abi_default,
15167
- EKUBO_MATH,
15168
- this.config.provider
15169
- );
15166
+ this.ekuboMathContract = new Contract6({
15167
+ abi: ekubo_math_abi_default,
15168
+ address: EKUBO_MATH,
15169
+ providerOrAccount: this.config.provider
15170
+ });
15170
15171
  this.avnu = new AvnuWrapper();
15171
15172
  }
15172
15173
  async matchInputAmounts(amountInfo) {
@@ -15214,16 +15215,16 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15214
15215
  }
15215
15216
  async depositCall(amountInfo, receiver) {
15216
15217
  const updateAmountInfo = await this.getMinDepositAmounts(amountInfo);
15217
- const token0Contract = new Contract6(
15218
- erc4626_abi_default,
15219
- amountInfo.token0.tokenInfo.address.address,
15220
- this.config.provider
15221
- );
15222
- const token1Contract = new Contract6(
15223
- erc4626_abi_default,
15224
- amountInfo.token1.tokenInfo.address.address,
15225
- this.config.provider
15226
- );
15218
+ const token0Contract = new Contract6({
15219
+ abi: erc4626_abi_default,
15220
+ address: amountInfo.token0.tokenInfo.address.address,
15221
+ providerOrAccount: this.config.provider
15222
+ });
15223
+ const token1Contract = new Contract6({
15224
+ abi: erc4626_abi_default,
15225
+ address: amountInfo.token1.tokenInfo.address.address,
15226
+ providerOrAccount: this.config.provider
15227
+ });
15227
15228
  const call1 = token0Contract.populate("approve", [
15228
15229
  this.address.address,
15229
15230
  uint2564.bnToUint256(updateAmountInfo.token0.amount.toWei())
@@ -15282,7 +15283,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15282
15283
  * Calculates assets before and now in a given token of TVL per share to observe growth
15283
15284
  * @returns {Promise<number>} The weighted average APY across all pools
15284
15285
  */
15285
- async netAPY(blockIdentifier = "pending", sinceBlocks = 2e4) {
15286
+ async netAPY(blockIdentifier = "pre_confirmed", sinceBlocks = 2e4) {
15286
15287
  const tvlNow = await this._getTVL(blockIdentifier);
15287
15288
  const supplyNow = await this.totalSupply(blockIdentifier);
15288
15289
  const priceNow = await this.getCurrentPrice(blockIdentifier);
@@ -15341,13 +15342,13 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15341
15342
  }
15342
15343
  return shares;
15343
15344
  }
15344
- async balanceOf(user, blockIdentifier = "pending") {
15345
+ async balanceOf(user, blockIdentifier = "pre_confirmed") {
15345
15346
  let bal = await this.contract.call("balance_of", [user.address], {
15346
15347
  blockIdentifier
15347
15348
  });
15348
15349
  return Web3Number.fromWei(bal.toString(), 18);
15349
15350
  }
15350
- async getUserTVL(user, blockIdentifier = "pending") {
15351
+ async getUserTVL(user, blockIdentifier = "pre_confirmed") {
15351
15352
  let bal = await this.balanceOf(user, blockIdentifier);
15352
15353
  const assets = await this.contract.call(
15353
15354
  "convert_to_assets",
@@ -15386,7 +15387,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15386
15387
  }
15387
15388
  };
15388
15389
  }
15389
- async _getTVL(blockIdentifier = "pending") {
15390
+ async _getTVL(blockIdentifier = "pre_confirmed") {
15390
15391
  const result = await this.contract.call("total_liquidity", [], {
15391
15392
  blockIdentifier
15392
15393
  });
@@ -15398,7 +15399,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15398
15399
  );
15399
15400
  return { amount0, amount1 };
15400
15401
  }
15401
- async totalSupply(blockIdentifier = "pending") {
15402
+ async totalSupply(blockIdentifier = "pre_confirmed") {
15402
15403
  const res = await this.contract.call("total_supply", [], {
15403
15404
  blockIdentifier
15404
15405
  });
@@ -15414,7 +15415,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15414
15415
  "Expected token1 in depositTokens[1]"
15415
15416
  );
15416
15417
  }
15417
- async getTVL(blockIdentifier = "pending") {
15418
+ async getTVL(blockIdentifier = "pre_confirmed") {
15418
15419
  const { amount0, amount1 } = await this._getTVL(blockIdentifier);
15419
15420
  const poolKey = await this.getPoolKey(blockIdentifier);
15420
15421
  this.assertValidDepositTokens(poolKey);
@@ -15503,11 +15504,11 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15503
15504
  }
15504
15505
  throw new Error("No true price available");
15505
15506
  }
15506
- async getCurrentPrice(blockIdentifier = "pending") {
15507
+ async getCurrentPrice(blockIdentifier = "pre_confirmed") {
15507
15508
  const poolKey = await this.getPoolKey(blockIdentifier);
15508
15509
  return this._getCurrentPrice(poolKey, blockIdentifier);
15509
15510
  }
15510
- async _getCurrentPrice(poolKey, blockIdentifier = "pending") {
15511
+ async _getCurrentPrice(poolKey, blockIdentifier = "pre_confirmed") {
15511
15512
  const priceInfo = await this.ekuboPositionsContract.call(
15512
15513
  "get_pool_price",
15513
15514
  [
@@ -15542,7 +15543,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15542
15543
  sqrtRatio: priceInfo.sqrt_ratio.toString()
15543
15544
  };
15544
15545
  }
15545
- async getCurrentBounds(blockIdentifier = "pending") {
15546
+ async getCurrentBounds(blockIdentifier = "pre_confirmed") {
15546
15547
  const result = await this.contract.call("get_position_key", [], {
15547
15548
  blockIdentifier
15548
15549
  });
@@ -15559,7 +15560,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
15559
15560
  const tick = Math.floor(value / tickSpacing) * tickSpacing;
15560
15561
  return this.tickToi129(tick);
15561
15562
  }
15562
- async getPoolKey(blockIdentifier = "pending") {
15563
+ async getPoolKey(blockIdentifier = "pre_confirmed") {
15563
15564
  if (this.poolKey) {
15564
15565
  return this.poolKey;
15565
15566
  }
@@ -16057,7 +16058,7 @@ var EkuboCLVault = class _EkuboCLVault extends BaseStrategy {
16057
16058
  static tickToPrice(tick) {
16058
16059
  return Math.pow(1.000001, Number(tick));
16059
16060
  }
16060
- async getLiquidityToAmounts(liquidity, bounds, blockIdentifier = "pending", _poolKey = null, _currentPrice = null) {
16061
+ async getLiquidityToAmounts(liquidity, bounds, blockIdentifier = "pre_confirmed", _poolKey = null, _currentPrice = null) {
16061
16062
  const currentPrice = _currentPrice || await this.getCurrentPrice(blockIdentifier);
16062
16063
  const lowerPrice = _EkuboCLVault.tickToPrice(bounds.lowerTick);
16063
16064
  const upperPrice = _EkuboCLVault.tickToPrice(bounds.upperTick);
@@ -18219,7 +18220,7 @@ var SenseiVault = class extends BaseStrategy {
18219
18220
  this.address = metadata.address;
18220
18221
  this.pricer = pricer;
18221
18222
  this.metadata = metadata;
18222
- this.contract = new Contract7(sensei_abi_default, this.address.address, this.config.provider);
18223
+ this.contract = new Contract7({ abi: sensei_abi_default, address: this.address.address, providerOrAccount: this.config.provider });
18223
18224
  if (metadata.depositTokens.length === 0) {
18224
18225
  throw new Error("Deposit tokens are not defined in metadata");
18225
18226
  }
@@ -18271,11 +18272,11 @@ var SenseiVault = class extends BaseStrategy {
18271
18272
  }
18272
18273
  }
18273
18274
  async depositCall(amountInfo, receiver) {
18274
- const mainTokenContract = new Contract7(
18275
- erc20_abi_default,
18276
- this.metadata.depositTokens[0].address.address,
18277
- this.config.provider
18278
- );
18275
+ const mainTokenContract = new Contract7({
18276
+ abi: erc20_abi_default,
18277
+ address: this.metadata.depositTokens[0].address.address,
18278
+ providerOrAccount: this.config.provider
18279
+ });
18279
18280
  const call1 = mainTokenContract.populate("approve", [
18280
18281
  this.address.address,
18281
18282
  uint2565.bnToUint256(amountInfo.amount.toWei())
@@ -18486,7 +18487,9 @@ var SenseiStrategies = [
18486
18487
  import { hash, num as num6, shortString } from "starknet";
18487
18488
 
18488
18489
  // src/strategies/universal-adapters/adapter-utils.ts
18489
- var SIMPLE_SANITIZER = ContractAddr.from("0x3798dc4f83fdfad199e5236e3656cf2fb79bc50c00504d0dd41522e0f042072");
18490
+ var SIMPLE_SANITIZER = ContractAddr.from("0x5a2e3ceb3da368b983a8717898427ab7b6daf04014b70f321e777f9aad940b4");
18491
+ var PRICE_ROUTER = ContractAddr.from("0x05e83Fa38D791d2dba8E6f487758A9687FfEe191A6Cf8a6c5761ab0a110DB837");
18492
+ var AVNU_MIDDLEWARE = ContractAddr.from("0x4a7972ed3f5d1e74a6d6c4a8f467666953d081c8f2270390cc169d50d17cb0d");
18490
18493
  function toBigInt(value) {
18491
18494
  if (typeof value === "string") {
18492
18495
  return BigInt(value);
@@ -18519,7 +18522,7 @@ var BaseAdapter = class extends CacheClass {
18519
18522
  };
18520
18523
 
18521
18524
  // src/strategies/universal-adapters/common-adapter.ts
18522
- import { hash as hash2, uint256 as uint2566 } from "starknet";
18525
+ import { hash as hash2, num as num7, uint256 as uint2566 } from "starknet";
18523
18526
  var CommonAdapter = class extends BaseAdapter {
18524
18527
  constructor(config) {
18525
18528
  super();
@@ -18630,10 +18633,70 @@ var CommonAdapter = class extends BaseAdapter {
18630
18633
  };
18631
18634
  };
18632
18635
  }
18636
+ getAvnuAdapter(fromToken, toToken, id) {
18637
+ return () => ({
18638
+ leaf: this.constructSimpleLeafData({
18639
+ id,
18640
+ target: AVNU_MIDDLEWARE,
18641
+ method: "multi_route_swap",
18642
+ packedArguments: [
18643
+ fromToken.toBigInt(),
18644
+ toToken.toBigInt(),
18645
+ this.config.vaultAllocator.toBigInt()
18646
+ ]
18647
+ }),
18648
+ callConstructor: this.getAvnuCall(fromToken, toToken).bind(this)
18649
+ });
18650
+ }
18651
+ getAvnuCall(fromToken, toToken) {
18652
+ return (params) => {
18653
+ return {
18654
+ sanitizer: SIMPLE_SANITIZER,
18655
+ call: {
18656
+ contractAddress: AVNU_MIDDLEWARE,
18657
+ selector: hash2.getSelectorFromName("multi_route_swap"),
18658
+ calldata: [
18659
+ fromToken.toBigInt(),
18660
+ // sell_token_address
18661
+ toBigInt(params.props.token_from_amount.low.toString()),
18662
+ // sell_token_amount low
18663
+ toBigInt(params.props.token_from_amount.high.toString()),
18664
+ // sell_token_amount high
18665
+ toToken.toBigInt(),
18666
+ // buy_token_address
18667
+ toBigInt(params.props.token_to_amount.low.toString()),
18668
+ // buy_token_amount low
18669
+ toBigInt(params.props.token_to_amount.high.toString()),
18670
+ // buy_token_amount high
18671
+ toBigInt(params.props.token_to_min_amount.low.toString()),
18672
+ // buy_token_min_amount low
18673
+ toBigInt(params.props.token_to_min_amount.high.toString()),
18674
+ // buy_token_min_amount high
18675
+ this.config.vaultAllocator.toBigInt(),
18676
+ // beneficiary
18677
+ toBigInt(0),
18678
+ // integrator_fee_amount_bps
18679
+ this.config.vaultAllocator.toBigInt(),
18680
+ // integrator_fee_recipient
18681
+ // unpack routes
18682
+ BigInt(params.props.routes.length),
18683
+ ...params.props.routes.map((r) => [
18684
+ BigInt(num7.hexToDecimalString(r.token_from)),
18685
+ BigInt(num7.hexToDecimalString(r.token_to)),
18686
+ BigInt(num7.hexToDecimalString(r.exchange_address)),
18687
+ BigInt(r.percent),
18688
+ BigInt(r.additional_swap_params.length),
18689
+ ...r.additional_swap_params.map((p) => BigInt(num7.hexToDecimalString(p)))
18690
+ ]).flat()
18691
+ ]
18692
+ }
18693
+ };
18694
+ };
18695
+ }
18633
18696
  };
18634
18697
 
18635
18698
  // src/strategies/universal-adapters/vesu-adapter.ts
18636
- import { CairoCustomEnum as CairoCustomEnum2, Contract as Contract8, hash as hash3, RpcProvider as RpcProvider4, uint256 as uint2567 } from "starknet";
18699
+ import { CairoCustomEnum as CairoCustomEnum2, Contract as Contract8, hash as hash3, num as num8, RpcProvider as RpcProvider4, shortString as shortString3, uint256 as uint2567 } from "starknet";
18637
18700
 
18638
18701
  // src/data/vesu-singleton.abi.json
18639
18702
  var vesu_singleton_abi_default = [
@@ -20943,7 +21006,7 @@ var VesuAdapter = class _VesuAdapter extends BaseAdapter {
20943
21006
  }
20944
21007
  };
20945
21008
  logger.verbose(`VesuAdapter::ConstructingModify::Debt::${JSON.stringify(_debt)}`);
20946
- const singletonContract = new Contract8(vesu_singleton_abi_default, this.VESU_SINGLETON.toString(), new RpcProvider4({ nodeUrl: "" }));
21009
+ const singletonContract = new Contract8({ abi: vesu_singleton_abi_default, address: this.VESU_SINGLETON.toString(), providerOrAccount: new RpcProvider4({ nodeUrl: "" }) });
20947
21010
  const call = singletonContract.populate("modify_position", {
20948
21011
  params: {
20949
21012
  pool_id: this.config.poolId.toBigInt(),
@@ -20966,6 +21029,40 @@ var VesuAdapter = class _VesuAdapter extends BaseAdapter {
20966
21029
  }
20967
21030
  };
20968
21031
  };
21032
+ this.getDefispringRewardsAdapter = (id) => {
21033
+ return () => {
21034
+ const packedArguments = [];
21035
+ const output = {
21036
+ id: BigInt(num8.getDecimalString(shortString3.encodeShortString(id))),
21037
+ readableId: id,
21038
+ data: [
21039
+ SIMPLE_SANITIZER.toBigInt(),
21040
+ // sanitizer address
21041
+ VESU_REWARDS_CONTRACT.toBigInt(),
21042
+ // contract
21043
+ toBigInt(hash3.getSelectorFromName("claim")),
21044
+ // method name
21045
+ BigInt(packedArguments.length),
21046
+ ...packedArguments
21047
+ ]
21048
+ };
21049
+ return { leaf: output, callConstructor: this.getDefiSpringClaimCall().bind(this) };
21050
+ };
21051
+ };
21052
+ this.getDefiSpringClaimCall = () => {
21053
+ return (params) => ({
21054
+ sanitizer: SIMPLE_SANITIZER,
21055
+ call: {
21056
+ contractAddress: VESU_REWARDS_CONTRACT,
21057
+ selector: hash3.getSelectorFromName("claim"),
21058
+ calldata: [
21059
+ BigInt(params.amount.toWei()),
21060
+ BigInt(params.proofs.length),
21061
+ ...params.proofs.map((proof) => BigInt(num8.hexToDecimalString(proof)))
21062
+ ]
21063
+ }
21064
+ });
21065
+ };
20969
21066
  this.config = config;
20970
21067
  }
20971
21068
  static getDefaultModifyPositionCallParams(params) {
@@ -21007,7 +21104,7 @@ var VesuAdapter = class _VesuAdapter extends BaseAdapter {
21007
21104
  throw new Error(`Unknown VesuAmountDenomination: ${denomination}`);
21008
21105
  }
21009
21106
  getVesuSingletonContract(config) {
21010
- return new Contract8(vesu_singleton_abi_default, this.VESU_SINGLETON.address, config.provider);
21107
+ return new Contract8({ abi: vesu_singleton_abi_default, address: this.VESU_SINGLETON.address, providerOrAccount: config.provider });
21011
21108
  }
21012
21109
  async getLTVConfig(config) {
21013
21110
  const CACHE_KEY = "ltv_config";
@@ -23370,16 +23467,16 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
23370
23467
  );
23371
23468
  this.metadata = metadata;
23372
23469
  this.address = metadata.address;
23373
- this.contract = new Contract9(
23374
- universal_vault_abi_default,
23375
- this.address.address,
23376
- this.config.provider
23377
- );
23378
- this.managerContract = new Contract9(
23379
- vault_manager_abi_default,
23380
- this.metadata.additionalInfo.manager.address,
23381
- this.config.provider
23382
- );
23470
+ this.contract = new Contract9({
23471
+ abi: universal_vault_abi_default,
23472
+ address: this.address.address,
23473
+ providerOrAccount: this.config.provider
23474
+ });
23475
+ this.managerContract = new Contract9({
23476
+ abi: vault_manager_abi_default,
23477
+ address: this.metadata.additionalInfo.manager.address,
23478
+ providerOrAccount: this.config.provider
23479
+ });
23383
23480
  }
23384
23481
  getMerkleTree() {
23385
23482
  if (this.merkleTree) return this.merkleTree;
@@ -23429,11 +23526,11 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
23429
23526
  amountInfo.tokenInfo.address.eq(this.asset().address),
23430
23527
  "Deposit token mismatch"
23431
23528
  );
23432
- const assetContract = new Contract9(
23433
- universal_vault_abi_default,
23434
- this.asset().address.address,
23435
- this.config.provider
23436
- );
23529
+ const assetContract = new Contract9({
23530
+ abi: universal_vault_abi_default,
23531
+ address: this.asset().address.address,
23532
+ providerOrAccount: this.config.provider
23533
+ });
23437
23534
  const call1 = assetContract.populate("approve", [
23438
23535
  this.address.address,
23439
23536
  uint2568.bnToUint256(amountInfo.amount.toWei())
@@ -23595,7 +23692,7 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
23595
23692
  const aumToken = vesuAum.plus(balance.amount);
23596
23693
  logger.verbose(`${this.getTag()} Actual AUM: ${aumToken}`);
23597
23694
  const netAPY = await this.netAPY();
23598
- const defispringAPY = netAPY.splits.find((s) => s.id === "defispring")?.apy || 0;
23695
+ const defispringAPY = (netAPY.splits.find((s) => s.id === "defispring")?.apy || 0) * 0.8;
23599
23696
  if (!defispringAPY) throw new Error("DefiSpring APY not found");
23600
23697
  const timeDiff = Math.round(Date.now() / 1e3) - Number(lastReportTime);
23601
23698
  const growthRate = timeDiff * defispringAPY / (365 * 24 * 60 * 60);
@@ -23838,6 +23935,51 @@ var UniversalStrategy = class _UniversalStrategy extends BaseStrategy {
23838
23935
  const manageCall = this.getManageCall(["approve_bring_liquidity" /* APPROVE_BRING_LIQUIDITY */, "bring_liquidity" /* BRING_LIQUIDITY */], [manageCall1, manageCall2]);
23839
23936
  return manageCall;
23840
23937
  }
23938
+ async getHarvestCall() {
23939
+ const vesuHarvest = new VesuHarvests(this.config);
23940
+ const harvestInfo = await vesuHarvest.getUnHarvestedRewards(this.metadata.additionalInfo.vaultAllocator);
23941
+ if (harvestInfo.length != 1) {
23942
+ throw new Error(`Expected 1 harvest info, got ${harvestInfo.length}`);
23943
+ }
23944
+ const amount = harvestInfo[0].claim.amount;
23945
+ const actualReward = harvestInfo[0].actualReward;
23946
+ const proofs = harvestInfo[0].proof;
23947
+ if (actualReward.isZero()) {
23948
+ throw new Error(`Expected non-zero actual reward, got ${harvestInfo[0].actualReward}`);
23949
+ }
23950
+ const manage1Info = this.getProofs("defispring_rewards" /* DEFISPRING_REWARDS */);
23951
+ const manageCall1 = manage1Info.callConstructor({
23952
+ amount,
23953
+ proofs
23954
+ });
23955
+ const proofIds = ["defispring_rewards" /* DEFISPRING_REWARDS */];
23956
+ const manageCalls = [manageCall1];
23957
+ const STRK2 = Global.getDefaultTokens().find((t) => t.symbol === "STRK");
23958
+ if (this.asset().symbol != "STRK") {
23959
+ const manage2Info = this.getProofs("approve_swap_token1" /* APPROVE_SWAP_TOKEN1 */);
23960
+ const manageCall2 = manage2Info.callConstructor({
23961
+ amount: actualReward
23962
+ });
23963
+ const avnuModule = new AvnuWrapper();
23964
+ const quote = await avnuModule.getQuotes(
23965
+ STRK2.address.address,
23966
+ this.asset().address.address,
23967
+ actualReward.toWei(),
23968
+ this.address.address
23969
+ );
23970
+ const swapInfo = await avnuModule.getSwapInfo(quote, this.address.address, 0, this.address.address);
23971
+ const manage3Info = this.getProofs("avnu_swap_rewards" /* AVNU_SWAP_REWARDS */);
23972
+ const manageCall3 = manage3Info.callConstructor({
23973
+ props: swapInfo
23974
+ });
23975
+ proofIds.push("approve_swap_token1" /* APPROVE_SWAP_TOKEN1 */);
23976
+ proofIds.push("avnu_swap_rewards" /* AVNU_SWAP_REWARDS */);
23977
+ manageCalls.push(manageCall2);
23978
+ manageCalls.push(manageCall3);
23979
+ }
23980
+ const manageCall = this.getManageCall(proofIds, manageCalls);
23981
+ return { call: manageCall, reward: actualReward, tokenInfo: STRK2 };
23982
+ }
23841
23983
  async getRebalanceCall(params) {
23842
23984
  let callSet1 = this.getVesuModifyPositionCalls({
23843
23985
  isLeg1: true,
@@ -23874,6 +24016,9 @@ var UNIVERSAL_MANAGE_IDS = /* @__PURE__ */ ((UNIVERSAL_MANAGE_IDS2) => {
23874
24016
  UNIVERSAL_MANAGE_IDS2["APPROVE_TOKEN2"] = "approve_token2";
23875
24017
  UNIVERSAL_MANAGE_IDS2["APPROVE_BRING_LIQUIDITY"] = "approve_bring_liquidity";
23876
24018
  UNIVERSAL_MANAGE_IDS2["BRING_LIQUIDITY"] = "bring_liquidity";
24019
+ UNIVERSAL_MANAGE_IDS2["DEFISPRING_REWARDS"] = "defispring_rewards";
24020
+ UNIVERSAL_MANAGE_IDS2["APPROVE_SWAP_TOKEN1"] = "approve_swap_token1";
24021
+ UNIVERSAL_MANAGE_IDS2["AVNU_SWAP_REWARDS"] = "avnu_swap_rewards";
23877
24022
  return UNIVERSAL_MANAGE_IDS2;
23878
24023
  })(UNIVERSAL_MANAGE_IDS || {});
23879
24024
  var UNIVERSAL_ADAPTERS = /* @__PURE__ */ ((UNIVERSAL_ADAPTERS2) => {
@@ -23923,6 +24068,10 @@ function getLooperSettings(token1Symbol, token2Symbol, vaultSettings, pool1, poo
23923
24068
  vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(ETHToken.address, vesuAdapterETHUSDC.VESU_SINGLETON, "approve_token2" /* APPROVE_TOKEN2 */).bind(commonAdapter));
23924
24069
  vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(USDCToken.address, vaultSettings.vaultAddress, "approve_bring_liquidity" /* APPROVE_BRING_LIQUIDITY */).bind(commonAdapter));
23925
24070
  vaultSettings.leafAdapters.push(commonAdapter.getBringLiquidityAdapter("bring_liquidity" /* BRING_LIQUIDITY */).bind(commonAdapter));
24071
+ vaultSettings.leafAdapters.push(vesuAdapterUSDCETH.getDefispringRewardsAdapter("defispring_rewards" /* DEFISPRING_REWARDS */).bind(vesuAdapterUSDCETH));
24072
+ const STRKToken = Global.getDefaultTokens().find((token) => token.symbol === "STRK");
24073
+ vaultSettings.leafAdapters.push(commonAdapter.getApproveAdapter(STRKToken.address, AVNU_MIDDLEWARE, "approve_swap_token1" /* APPROVE_SWAP_TOKEN1 */).bind(commonAdapter));
24074
+ vaultSettings.leafAdapters.push(commonAdapter.getAvnuAdapter(STRKToken.address, USDCToken.address, "avnu_swap_rewards" /* AVNU_SWAP_REWARDS */).bind(commonAdapter));
23926
24075
  return vaultSettings;
23927
24076
  }
23928
24077
  var _riskFactor4 = [
@@ -24320,12 +24469,12 @@ var PricerRedis = class extends Pricer {
24320
24469
 
24321
24470
  // src/node/deployer.ts
24322
24471
  import assert2 from "assert";
24323
- import { TransactionExecutionStatus, constants as constants3, extractContractHashes, json, num as num10, transaction } from "starknet";
24472
+ import { Deployer as SnDeployer, TransactionExecutionStatus, constants as constants3, extractContractHashes, json, num as num10 } from "starknet";
24324
24473
  import { readFileSync as readFileSync2, existsSync, writeFileSync as writeFileSync2 } from "fs";
24325
24474
 
24326
24475
  // src/utils/store.ts
24327
24476
  import fs, { readFileSync, writeFileSync } from "fs";
24328
- import { Account as Account3, constants as constants2 } from "starknet";
24477
+ import { Account as Account3 } from "starknet";
24329
24478
  import * as crypto2 from "crypto";
24330
24479
 
24331
24480
  // src/utils/encrypt.ts
@@ -24410,7 +24559,7 @@ var Store = class _Store {
24410
24559
  logger.warn(`This not stored anywhere, please you backup this password for future use`);
24411
24560
  logger.warn(`\u26A0\uFE0F=========================================\u26A0\uFE0F`);
24412
24561
  }
24413
- getAccount(accountKey, txVersion = constants2.TRANSACTION_VERSION.V2) {
24562
+ getAccount(accountKey, txVersion) {
24414
24563
  const accounts = this.loadAccounts();
24415
24564
  logger.verbose(`nAccounts loaded for network: ${Object.keys(accounts).length}`);
24416
24565
  const data = accounts[accountKey];
@@ -24419,7 +24568,13 @@ var Store = class _Store {
24419
24568
  }
24420
24569
  logger.verbose(`Account loaded: ${accountKey} from network: ${this.config.network}`);
24421
24570
  logger.verbose(`Address: ${data.address}`);
24422
- const acc = new Account3(this.config.provider, data.address, data.pk, void 0, txVersion);
24571
+ const acc = new Account3({
24572
+ provider: this.config.provider,
24573
+ address: data.address,
24574
+ signer: data.pk,
24575
+ cairoVersion: void 0,
24576
+ transactionVersion: txVersion
24577
+ });
24423
24578
  return acc;
24424
24579
  }
24425
24580
  addAccount(accountKey, address, pk) {
@@ -24578,7 +24733,7 @@ async function prepareMultiDeployContracts(contracts, config, acc) {
24578
24733
  for (const { contract_name, package_name, constructorData } of contracts) {
24579
24734
  const declaredInfo = await myDeclare(contract_name, package_name, config, acc);
24580
24735
  const classHash = declaredInfo.class_hash;
24581
- const { calls, addresses } = transaction.buildUDCCall({
24736
+ const { calls, addresses } = new SnDeployer().buildDeployerCall({
24582
24737
  classHash,
24583
24738
  constructorCalldata: constructorData
24584
24739
  }, acc.address);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strkfarm/sdk",
3
- "version": "1.0.62",
3
+ "version": "1.1.0",
4
4
  "description": "STRKFarm TS SDK (Meant for our internal use, but feel free to use it)",
5
5
  "typings": "dist/index.d.ts",
6
6
  "types": "dist/index.d.ts",
@@ -54,7 +54,7 @@
54
54
  "@types/react": "^19.1.2",
55
55
  "axios": "^1.7.2",
56
56
  "react": "19.1.0",
57
- "starknet": "7.6.4"
57
+ "starknet": "8.5.2"
58
58
  },
59
59
  "dependencies": {
60
60
  "@avnu/avnu-sdk": "3.0.2",