@strkfarm/sdk 2.0.0-dev.5 → 2.0.0-dev.6

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
@@ -28207,8 +28207,7 @@ var calculateAmountDistribution = async (amount, client, marketName, collateralP
28207
28207
  vesu_leverage: 0
28208
28208
  };
28209
28209
  }
28210
- const extendedBTCExposure = extendedPosition.length > 0 ? new Web3Number(extendedPosition[0].size, WBTC_TOKEN_DECIMALS) : new Web3Number(0, WBTC_TOKEN_DECIMALS);
28211
- const extendedExposureUSD = extendedBTCExposure.multipliedBy(collateralPrice);
28210
+ const extendedExposureUSD = extendedPosition.length > 0 ? new Web3Number(extendedPosition[0].value, WBTC_TOKEN_DECIMALS) : new Web3Number(0, WBTC_TOKEN_DECIMALS);
28212
28211
  const vesuBTCExposureUSD = collateralUnits.multipliedBy(collateralPrice);
28213
28212
  const numerator1 = vesu_leverage * amount + vesuBTCExposureUSD.toNumber();
28214
28213
  const numerator2 = extendedExposureUSD.toNumber();
@@ -29777,7 +29776,10 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29777
29776
  //abstract means the method has no implementation in this class; instead, child classes must implement it.
29778
29777
  async getAPY(supportedPosition) {
29779
29778
  const side = supportedPosition.isDebt ? "LONG" : "SHORT";
29780
- const fundingRates = await this.client.getFundingRates(this.config.extendedMarketName, side);
29779
+ const fundingRates = await this.client.getFundingRates(
29780
+ this.config.extendedMarketName,
29781
+ side
29782
+ );
29781
29783
  if (fundingRates.status !== "OK") {
29782
29784
  logger.error("error getting funding rates", fundingRates);
29783
29785
  return { apy: 0, type: "base" /* BASE */ };
@@ -29821,14 +29823,14 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29821
29823
  });
29822
29824
  }
29823
29825
  _getDepositLeaf() {
29824
- const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
29826
+ const usdceToken = Global.getDefaultTokens().find(
29827
+ (token) => token.symbol === "USDCe"
29828
+ );
29825
29829
  return [
29826
29830
  {
29827
29831
  target: this.config.supportedPositions[0].asset.address,
29828
29832
  method: "approve",
29829
- packedArguments: [
29830
- AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
29831
- ],
29833
+ packedArguments: [AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()],
29832
29834
  id: `extended_approve_${this.config.supportedPositions[0].asset.symbol}`,
29833
29835
  sanitizer: AVNU_LEGACY_SANITIZER
29834
29836
  },
@@ -29859,25 +29861,33 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29859
29861
  const leafConfigs = this._getSwapFromLegacyLeaf();
29860
29862
  const leaves = leafConfigs.map((config) => {
29861
29863
  const { target, method, packedArguments, sanitizer, id } = config;
29862
- const leaf = this.constructSimpleLeafData({
29863
- id,
29864
- target,
29865
- method,
29866
- packedArguments
29867
- }, sanitizer);
29864
+ const leaf = this.constructSimpleLeafData(
29865
+ {
29866
+ id,
29867
+ target,
29868
+ method,
29869
+ packedArguments
29870
+ },
29871
+ sanitizer
29872
+ );
29868
29873
  return leaf;
29869
29874
  });
29870
- return { leaves, callConstructor: this.getSwapFromLegacyCall.bind(this) };
29875
+ return {
29876
+ leaves,
29877
+ callConstructor: this.getSwapFromLegacyCall.bind(
29878
+ this
29879
+ )
29880
+ };
29871
29881
  }
29872
29882
  _getSwapFromLegacyLeaf() {
29873
- const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
29883
+ const usdceToken = Global.getDefaultTokens().find(
29884
+ (token) => token.symbol === "USDCe"
29885
+ );
29874
29886
  return [
29875
29887
  {
29876
29888
  target: usdceToken.address,
29877
29889
  method: "approve",
29878
- packedArguments: [
29879
- AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
29880
- ],
29890
+ packedArguments: [AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()],
29881
29891
  id: `extendedswaplegacyapprove_${usdceToken.symbol}`,
29882
29892
  sanitizer: AVNU_LEGACY_SANITIZER
29883
29893
  },
@@ -29896,11 +29906,13 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29896
29906
  async getDepositCall(params) {
29897
29907
  try {
29898
29908
  const usdcToken = this.config.supportedPositions[0].asset;
29899
- const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
29900
- const salt = Math.floor(
29901
- Math.random() * 10 ** usdcToken.decimals
29909
+ const usdceToken = Global.getDefaultTokens().find(
29910
+ (token) => token.symbol === "USDCe"
29911
+ );
29912
+ const salt = Math.floor(Math.random() * 10 ** usdcToken.decimals);
29913
+ const amount = import_starknet22.uint256.bnToUint256(
29914
+ params.amount.multipliedBy(10).toWei()
29902
29915
  );
29903
- const amount = import_starknet22.uint256.bnToUint256(params.amount.multipliedBy(10).toWei());
29904
29916
  const quotes = await this.config.avnuAdapter.getQuotesAvnu(
29905
29917
  usdcToken.address.toString(),
29906
29918
  usdceToken.address.toString(),
@@ -29913,7 +29925,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29913
29925
  logger.error("error getting quotes from avnu");
29914
29926
  return [];
29915
29927
  }
29916
- const getCalldata = await this.config.avnuAdapter.getSwapCallData(quotes);
29928
+ const getCalldata = await this.config.avnuAdapter.getSwapCallData(
29929
+ quotes
29930
+ );
29917
29931
  const swapCallData = getCalldata[0];
29918
29932
  return [
29919
29933
  {
@@ -29989,8 +30003,12 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29989
30003
  async getSwapFromLegacyCall(params) {
29990
30004
  try {
29991
30005
  const usdcToken = this.config.supportedPositions[0].asset;
29992
- const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
29993
- const amount = import_starknet22.uint256.bnToUint256(params.amount.multipliedBy(10).toWei());
30006
+ const usdceToken = Global.getDefaultTokens().find(
30007
+ (token) => token.symbol === "USDCe"
30008
+ );
30009
+ const amount = import_starknet22.uint256.bnToUint256(
30010
+ params.amount.multipliedBy(10).toWei()
30011
+ );
29994
30012
  const quotes = await this.config.avnuAdapter.getQuotesAvnu(
29995
30013
  usdceToken.address.toString(),
29996
30014
  usdcToken.address.toString(),
@@ -30003,7 +30021,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
30003
30021
  logger.error("error getting quotes from avnu");
30004
30022
  return [];
30005
30023
  }
30006
- const getCalldata = await this.config.avnuAdapter.getSwapCallData(quotes);
30024
+ const getCalldata = await this.config.avnuAdapter.getSwapCallData(
30025
+ quotes
30026
+ );
30007
30027
  const swapCallData = getCalldata[0];
30008
30028
  return [
30009
30029
  {
@@ -30051,9 +30071,14 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
30051
30071
  if (!this.client) {
30052
30072
  throw new Error("Client not initialized");
30053
30073
  }
30054
- const withdrawalRequest = await this.client.withdrawUSDC(amount.toFixed(2));
30074
+ const withdrawalRequest = await this.client.withdrawUSDC(
30075
+ amount.toFixed(2)
30076
+ );
30055
30077
  if (withdrawalRequest.status === "OK") {
30056
- const withdrawalStatus = await this.getDepositOrWithdrawalStatus(withdrawalRequest.data, "WITHDRAWAL" /* WITHDRAWAL */);
30078
+ const withdrawalStatus = await this.getDepositOrWithdrawalStatus(
30079
+ withdrawalRequest.data,
30080
+ "WITHDRAWAL" /* WITHDRAWAL */
30081
+ );
30057
30082
  return withdrawalStatus;
30058
30083
  }
30059
30084
  return false;
@@ -30126,18 +30151,34 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
30126
30151
  logger.error("error initializing client");
30127
30152
  return null;
30128
30153
  }
30129
- await new Promise((resolve) => setTimeout(resolve, 5e3));
30130
- const orderhistory = await this.getOrderHistory(marketName);
30154
+ let orderhistory = await this.getOrderHistory(marketName);
30131
30155
  if (!orderhistory || orderhistory.length === 0) {
30132
- logger.error(`error getting order: ${orderId}`);
30133
- return null;
30156
+ logger.error(`error getting order history: ${orderId}`);
30157
+ } else {
30158
+ const order = orderhistory.slice(0, 5).find((order2) => order2.id.toString() === orderId);
30159
+ if (order) {
30160
+ return order;
30161
+ }
30134
30162
  }
30135
- const order = orderhistory.slice(0, 3).find((order2) => order2.id.toString() === orderId);
30136
- if (!order) {
30137
- logger.error(`error getting order: ${order}`);
30138
- return null;
30163
+ for (let attempt = 1; attempt <= 3; attempt++) {
30164
+ await new Promise((resolve) => setTimeout(resolve, 3e3));
30165
+ orderhistory = await this.getOrderHistory(marketName);
30166
+ if (!orderhistory || orderhistory.length === 0) {
30167
+ logger.error(
30168
+ `error getting order history on retry ${attempt}: ${orderId}`
30169
+ );
30170
+ continue;
30171
+ }
30172
+ const order = orderhistory.slice(0, 5).find((order2) => order2.id.toString() === orderId);
30173
+ if (order) {
30174
+ return order;
30175
+ }
30176
+ logger.error(
30177
+ `order not found in top 5 entries on retry ${attempt}: ${orderId}`
30178
+ );
30139
30179
  }
30140
- return order;
30180
+ logger.error(`error getting order after all retries: ${orderId}`);
30181
+ return null;
30141
30182
  }
30142
30183
  async fetchOrderBookBTCUSDC() {
30143
30184
  try {
@@ -30210,7 +30251,10 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
30210
30251
  return null;
30211
30252
  }
30212
30253
  await new Promise((resolve) => setTimeout(resolve, 5e3));
30213
- const openOrder = await this.getOrderStatus(result.position_id, this.config.extendedMarketName);
30254
+ const openOrder = await this.getOrderStatus(
30255
+ result.position_id,
30256
+ this.config.extendedMarketName
30257
+ );
30214
30258
  if (!openOrder || openOrder.status !== "FILLED" /* FILLED */) {
30215
30259
  if (attempt >= maxAttempts) {
30216
30260
  logger.error("Max retries reached \u2014 could not verify open position");
@@ -30233,7 +30277,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
30233
30277
  };
30234
30278
  }
30235
30279
  } catch (err) {
30236
- logger.error(`createShortOrder failed on attempt ${attempt}: ${err.message}`);
30280
+ logger.error(
30281
+ `createShortOrder failed on attempt ${attempt}: ${err.message}`
30282
+ );
30237
30283
  if (attempt < maxAttempts) {
30238
30284
  const backoff = 1200 * attempt;
30239
30285
  logger.info(`Retrying after ${backoff}ms...`);
@@ -30278,13 +30324,17 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
30278
30324
  operationsStatus: ["COMPLETED" /* COMPLETED */]
30279
30325
  });
30280
30326
  if (operationsType === "DEPOSIT" /* DEPOSIT */) {
30281
- const myTransferStatus = transferHistory.data.find((operation) => operation.transactionHash === orderId);
30327
+ const myTransferStatus = transferHistory.data.find(
30328
+ (operation) => operation.transactionHash === orderId
30329
+ );
30282
30330
  if (!myTransferStatus) {
30283
30331
  return true;
30284
30332
  }
30285
30333
  return true;
30286
30334
  } else {
30287
- const myTransferStatus = transferHistory.data.find((operation) => operation.id.toString() === orderId.toString());
30335
+ const myTransferStatus = transferHistory.data.find(
30336
+ (operation) => operation.id.toString() === orderId.toString()
30337
+ );
30288
30338
  if (!myTransferStatus) {
30289
30339
  return true;
30290
30340
  }
@@ -33902,6 +33952,7 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
33902
33952
  toToken.decimals,
33903
33953
  true
33904
33954
  );
33955
+ console.log(`${_AvnuAdapter.name}::getDepositCall quote: ${quote?.sellAmountInUsd}`);
33905
33956
  if (!quote) {
33906
33957
  logger.error("error getting quote from avnu");
33907
33958
  return [];
@@ -34020,7 +34071,7 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
34020
34071
  }
34021
34072
  throw new Error("Failed to fetch quote after retries");
34022
34073
  }
34023
- async getQuotesAvnu(from_token_address, to_token_address, amount, takerAddress, toTokenDecimals, usdcToBtc, maxIterations = 5, tolerance = 1e3) {
34074
+ async getQuotesAvnu(from_token_address, to_token_address, amount, takerAddress, toTokenDecimals, usdcToBtc, maxIterations = 5, tolerance = 5e3) {
34024
34075
  try {
34025
34076
  const fromToken = this.config.supportedPositions[0].asset;
34026
34077
  const toToken = this.config.supportedPositions[1].asset;
@@ -34260,7 +34311,8 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34260
34311
  }
34261
34312
  const balance = await this.getUnusedBalance();
34262
34313
  const usdcBalanceOnExtended = await extendedAdapter.getExtendedDepositAmount();
34263
- const amountToInvest = balance.amount.plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).minus(LIMIT_BALANCE);
34314
+ const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).minus(LIMIT_BALANCE);
34315
+ logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldInvest amountToInvest: ${amountToInvest.toNumber()}`);
34264
34316
  if (amountToInvest.lessThan(0)) {
34265
34317
  return {
34266
34318
  shouldInvest: false,
@@ -34313,6 +34365,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34313
34365
  vesuLeverage: 0
34314
34366
  };
34315
34367
  }
34368
+ logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldInvest vesu_amount: ${vesu_amount.toNumber()}, extended_amount: ${extended_amount.toNumber()}`);
34316
34369
  return {
34317
34370
  shouldInvest: true,
34318
34371
  vesuAmount: vesu_amount,
@@ -34392,15 +34445,15 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34392
34445
  }
34393
34446
  const usdcAmountInWallet = (await this.getUnusedBalance()).amount;
34394
34447
  const usdcAmountOnExtended = parseFloat(
34395
- extendedHoldings.availableForTrade
34448
+ extendedHoldings.availableForWithdrawal
34396
34449
  );
34397
- if (extendedAmount.plus(BUFFER_USDC_IN_WITHDRAWAL).minus(usdcAmountOnExtended).greaterThan(0)) {
34450
+ if (extendedAmount.minus(usdcAmountOnExtended).greaterThan(0)) {
34398
34451
  try {
34399
34452
  const { calls: extendedCalls } = await this.moveAssets(
34400
34453
  {
34401
34454
  to: Protocols.EXTENDED.name,
34402
34455
  from: Protocols.VAULT.name,
34403
- amount: extendedAmount.plus(BUFFER_USDC_IN_WITHDRAWAL).minus(usdcAmountOnExtended)
34456
+ amount: extendedAmount.minus(usdcAmountOnExtended)
34404
34457
  },
34405
34458
  extendedAdapter,
34406
34459
  vesuAdapter
@@ -34638,7 +34691,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34638
34691
  };
34639
34692
  }
34640
34693
  const extendedHoldingAmount = new Web3Number(
34641
- extendedHoldings.availableForTrade,
34694
+ extendedHoldings.availableForWithdrawal,
34642
34695
  USDC_TOKEN_DECIMALS
34643
34696
  );
34644
34697
  const {
@@ -34698,7 +34751,6 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34698
34751
  extendedAmountInBTC: new Web3Number(0, 0),
34699
34752
  calls: []
34700
34753
  };
34701
- ;
34702
34754
  }
34703
34755
  }
34704
34756
  async checkPriceDifferenceBetweenAvnuAndExtended(extendedAdapter, vesuAdapter, avnuAdapter) {
package/dist/index.mjs CHANGED
@@ -28065,8 +28065,7 @@ var calculateAmountDistribution = async (amount, client, marketName, collateralP
28065
28065
  vesu_leverage: 0
28066
28066
  };
28067
28067
  }
28068
- const extendedBTCExposure = extendedPosition.length > 0 ? new Web3Number(extendedPosition[0].size, WBTC_TOKEN_DECIMALS) : new Web3Number(0, WBTC_TOKEN_DECIMALS);
28069
- const extendedExposureUSD = extendedBTCExposure.multipliedBy(collateralPrice);
28068
+ const extendedExposureUSD = extendedPosition.length > 0 ? new Web3Number(extendedPosition[0].value, WBTC_TOKEN_DECIMALS) : new Web3Number(0, WBTC_TOKEN_DECIMALS);
28070
28069
  const vesuBTCExposureUSD = collateralUnits.multipliedBy(collateralPrice);
28071
28070
  const numerator1 = vesu_leverage * amount + vesuBTCExposureUSD.toNumber();
28072
28071
  const numerator2 = extendedExposureUSD.toNumber();
@@ -29635,7 +29634,10 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29635
29634
  //abstract means the method has no implementation in this class; instead, child classes must implement it.
29636
29635
  async getAPY(supportedPosition) {
29637
29636
  const side = supportedPosition.isDebt ? "LONG" : "SHORT";
29638
- const fundingRates = await this.client.getFundingRates(this.config.extendedMarketName, side);
29637
+ const fundingRates = await this.client.getFundingRates(
29638
+ this.config.extendedMarketName,
29639
+ side
29640
+ );
29639
29641
  if (fundingRates.status !== "OK") {
29640
29642
  logger.error("error getting funding rates", fundingRates);
29641
29643
  return { apy: 0, type: "base" /* BASE */ };
@@ -29679,14 +29681,14 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29679
29681
  });
29680
29682
  }
29681
29683
  _getDepositLeaf() {
29682
- const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
29684
+ const usdceToken = Global.getDefaultTokens().find(
29685
+ (token) => token.symbol === "USDCe"
29686
+ );
29683
29687
  return [
29684
29688
  {
29685
29689
  target: this.config.supportedPositions[0].asset.address,
29686
29690
  method: "approve",
29687
- packedArguments: [
29688
- AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
29689
- ],
29691
+ packedArguments: [AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()],
29690
29692
  id: `extended_approve_${this.config.supportedPositions[0].asset.symbol}`,
29691
29693
  sanitizer: AVNU_LEGACY_SANITIZER
29692
29694
  },
@@ -29717,25 +29719,33 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29717
29719
  const leafConfigs = this._getSwapFromLegacyLeaf();
29718
29720
  const leaves = leafConfigs.map((config) => {
29719
29721
  const { target, method, packedArguments, sanitizer, id } = config;
29720
- const leaf = this.constructSimpleLeafData({
29721
- id,
29722
- target,
29723
- method,
29724
- packedArguments
29725
- }, sanitizer);
29722
+ const leaf = this.constructSimpleLeafData(
29723
+ {
29724
+ id,
29725
+ target,
29726
+ method,
29727
+ packedArguments
29728
+ },
29729
+ sanitizer
29730
+ );
29726
29731
  return leaf;
29727
29732
  });
29728
- return { leaves, callConstructor: this.getSwapFromLegacyCall.bind(this) };
29733
+ return {
29734
+ leaves,
29735
+ callConstructor: this.getSwapFromLegacyCall.bind(
29736
+ this
29737
+ )
29738
+ };
29729
29739
  }
29730
29740
  _getSwapFromLegacyLeaf() {
29731
- const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
29741
+ const usdceToken = Global.getDefaultTokens().find(
29742
+ (token) => token.symbol === "USDCe"
29743
+ );
29732
29744
  return [
29733
29745
  {
29734
29746
  target: usdceToken.address,
29735
29747
  method: "approve",
29736
- packedArguments: [
29737
- AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()
29738
- ],
29748
+ packedArguments: [AVNU_EXCHANGE_FOR_LEGACY_USDC.toBigInt()],
29739
29749
  id: `extendedswaplegacyapprove_${usdceToken.symbol}`,
29740
29750
  sanitizer: AVNU_LEGACY_SANITIZER
29741
29751
  },
@@ -29754,11 +29764,13 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29754
29764
  async getDepositCall(params) {
29755
29765
  try {
29756
29766
  const usdcToken = this.config.supportedPositions[0].asset;
29757
- const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
29758
- const salt = Math.floor(
29759
- Math.random() * 10 ** usdcToken.decimals
29767
+ const usdceToken = Global.getDefaultTokens().find(
29768
+ (token) => token.symbol === "USDCe"
29769
+ );
29770
+ const salt = Math.floor(Math.random() * 10 ** usdcToken.decimals);
29771
+ const amount = uint25613.bnToUint256(
29772
+ params.amount.multipliedBy(10).toWei()
29760
29773
  );
29761
- const amount = uint25613.bnToUint256(params.amount.multipliedBy(10).toWei());
29762
29774
  const quotes = await this.config.avnuAdapter.getQuotesAvnu(
29763
29775
  usdcToken.address.toString(),
29764
29776
  usdceToken.address.toString(),
@@ -29771,7 +29783,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29771
29783
  logger.error("error getting quotes from avnu");
29772
29784
  return [];
29773
29785
  }
29774
- const getCalldata = await this.config.avnuAdapter.getSwapCallData(quotes);
29786
+ const getCalldata = await this.config.avnuAdapter.getSwapCallData(
29787
+ quotes
29788
+ );
29775
29789
  const swapCallData = getCalldata[0];
29776
29790
  return [
29777
29791
  {
@@ -29847,8 +29861,12 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29847
29861
  async getSwapFromLegacyCall(params) {
29848
29862
  try {
29849
29863
  const usdcToken = this.config.supportedPositions[0].asset;
29850
- const usdceToken = Global.getDefaultTokens().find((token) => token.symbol === "USDCe");
29851
- const amount = uint25613.bnToUint256(params.amount.multipliedBy(10).toWei());
29864
+ const usdceToken = Global.getDefaultTokens().find(
29865
+ (token) => token.symbol === "USDCe"
29866
+ );
29867
+ const amount = uint25613.bnToUint256(
29868
+ params.amount.multipliedBy(10).toWei()
29869
+ );
29852
29870
  const quotes = await this.config.avnuAdapter.getQuotesAvnu(
29853
29871
  usdceToken.address.toString(),
29854
29872
  usdcToken.address.toString(),
@@ -29861,7 +29879,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29861
29879
  logger.error("error getting quotes from avnu");
29862
29880
  return [];
29863
29881
  }
29864
- const getCalldata = await this.config.avnuAdapter.getSwapCallData(quotes);
29882
+ const getCalldata = await this.config.avnuAdapter.getSwapCallData(
29883
+ quotes
29884
+ );
29865
29885
  const swapCallData = getCalldata[0];
29866
29886
  return [
29867
29887
  {
@@ -29909,9 +29929,14 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29909
29929
  if (!this.client) {
29910
29930
  throw new Error("Client not initialized");
29911
29931
  }
29912
- const withdrawalRequest = await this.client.withdrawUSDC(amount.toFixed(2));
29932
+ const withdrawalRequest = await this.client.withdrawUSDC(
29933
+ amount.toFixed(2)
29934
+ );
29913
29935
  if (withdrawalRequest.status === "OK") {
29914
- const withdrawalStatus = await this.getDepositOrWithdrawalStatus(withdrawalRequest.data, "WITHDRAWAL" /* WITHDRAWAL */);
29936
+ const withdrawalStatus = await this.getDepositOrWithdrawalStatus(
29937
+ withdrawalRequest.data,
29938
+ "WITHDRAWAL" /* WITHDRAWAL */
29939
+ );
29915
29940
  return withdrawalStatus;
29916
29941
  }
29917
29942
  return false;
@@ -29984,18 +30009,34 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
29984
30009
  logger.error("error initializing client");
29985
30010
  return null;
29986
30011
  }
29987
- await new Promise((resolve) => setTimeout(resolve, 5e3));
29988
- const orderhistory = await this.getOrderHistory(marketName);
30012
+ let orderhistory = await this.getOrderHistory(marketName);
29989
30013
  if (!orderhistory || orderhistory.length === 0) {
29990
- logger.error(`error getting order: ${orderId}`);
29991
- return null;
30014
+ logger.error(`error getting order history: ${orderId}`);
30015
+ } else {
30016
+ const order = orderhistory.slice(0, 5).find((order2) => order2.id.toString() === orderId);
30017
+ if (order) {
30018
+ return order;
30019
+ }
29992
30020
  }
29993
- const order = orderhistory.slice(0, 3).find((order2) => order2.id.toString() === orderId);
29994
- if (!order) {
29995
- logger.error(`error getting order: ${order}`);
29996
- return null;
30021
+ for (let attempt = 1; attempt <= 3; attempt++) {
30022
+ await new Promise((resolve) => setTimeout(resolve, 3e3));
30023
+ orderhistory = await this.getOrderHistory(marketName);
30024
+ if (!orderhistory || orderhistory.length === 0) {
30025
+ logger.error(
30026
+ `error getting order history on retry ${attempt}: ${orderId}`
30027
+ );
30028
+ continue;
30029
+ }
30030
+ const order = orderhistory.slice(0, 5).find((order2) => order2.id.toString() === orderId);
30031
+ if (order) {
30032
+ return order;
30033
+ }
30034
+ logger.error(
30035
+ `order not found in top 5 entries on retry ${attempt}: ${orderId}`
30036
+ );
29997
30037
  }
29998
- return order;
30038
+ logger.error(`error getting order after all retries: ${orderId}`);
30039
+ return null;
29999
30040
  }
30000
30041
  async fetchOrderBookBTCUSDC() {
30001
30042
  try {
@@ -30068,7 +30109,10 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
30068
30109
  return null;
30069
30110
  }
30070
30111
  await new Promise((resolve) => setTimeout(resolve, 5e3));
30071
- const openOrder = await this.getOrderStatus(result.position_id, this.config.extendedMarketName);
30112
+ const openOrder = await this.getOrderStatus(
30113
+ result.position_id,
30114
+ this.config.extendedMarketName
30115
+ );
30072
30116
  if (!openOrder || openOrder.status !== "FILLED" /* FILLED */) {
30073
30117
  if (attempt >= maxAttempts) {
30074
30118
  logger.error("Max retries reached \u2014 could not verify open position");
@@ -30091,7 +30135,9 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
30091
30135
  };
30092
30136
  }
30093
30137
  } catch (err) {
30094
- logger.error(`createShortOrder failed on attempt ${attempt}: ${err.message}`);
30138
+ logger.error(
30139
+ `createShortOrder failed on attempt ${attempt}: ${err.message}`
30140
+ );
30095
30141
  if (attempt < maxAttempts) {
30096
30142
  const backoff = 1200 * attempt;
30097
30143
  logger.info(`Retrying after ${backoff}ms...`);
@@ -30136,13 +30182,17 @@ var ExtendedAdapter = class _ExtendedAdapter extends BaseAdapter {
30136
30182
  operationsStatus: ["COMPLETED" /* COMPLETED */]
30137
30183
  });
30138
30184
  if (operationsType === "DEPOSIT" /* DEPOSIT */) {
30139
- const myTransferStatus = transferHistory.data.find((operation) => operation.transactionHash === orderId);
30185
+ const myTransferStatus = transferHistory.data.find(
30186
+ (operation) => operation.transactionHash === orderId
30187
+ );
30140
30188
  if (!myTransferStatus) {
30141
30189
  return true;
30142
30190
  }
30143
30191
  return true;
30144
30192
  } else {
30145
- const myTransferStatus = transferHistory.data.find((operation) => operation.id.toString() === orderId.toString());
30193
+ const myTransferStatus = transferHistory.data.find(
30194
+ (operation) => operation.id.toString() === orderId.toString()
30195
+ );
30146
30196
  if (!myTransferStatus) {
30147
30197
  return true;
30148
30198
  }
@@ -33760,6 +33810,7 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
33760
33810
  toToken.decimals,
33761
33811
  true
33762
33812
  );
33813
+ console.log(`${_AvnuAdapter.name}::getDepositCall quote: ${quote?.sellAmountInUsd}`);
33763
33814
  if (!quote) {
33764
33815
  logger.error("error getting quote from avnu");
33765
33816
  return [];
@@ -33878,7 +33929,7 @@ var AvnuAdapter = class _AvnuAdapter extends BaseAdapter {
33878
33929
  }
33879
33930
  throw new Error("Failed to fetch quote after retries");
33880
33931
  }
33881
- async getQuotesAvnu(from_token_address, to_token_address, amount, takerAddress, toTokenDecimals, usdcToBtc, maxIterations = 5, tolerance = 1e3) {
33932
+ async getQuotesAvnu(from_token_address, to_token_address, amount, takerAddress, toTokenDecimals, usdcToBtc, maxIterations = 5, tolerance = 5e3) {
33882
33933
  try {
33883
33934
  const fromToken = this.config.supportedPositions[0].asset;
33884
33935
  const toToken = this.config.supportedPositions[1].asset;
@@ -34118,7 +34169,8 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34118
34169
  }
34119
34170
  const balance = await this.getUnusedBalance();
34120
34171
  const usdcBalanceOnExtended = await extendedAdapter.getExtendedDepositAmount();
34121
- const amountToInvest = balance.amount.plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).minus(LIMIT_BALANCE);
34172
+ const amountToInvest = new Web3Number(balance.usdValue, USDC_TOKEN_DECIMALS).plus(usdcBalanceOnExtended?.availableForWithdrawal ?? 0).minus(LIMIT_BALANCE);
34173
+ logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldInvest amountToInvest: ${amountToInvest.toNumber()}`);
34122
34174
  if (amountToInvest.lessThan(0)) {
34123
34175
  return {
34124
34176
  shouldInvest: false,
@@ -34171,6 +34223,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34171
34223
  vesuLeverage: 0
34172
34224
  };
34173
34225
  }
34226
+ logger.info(`${_VesuExtendedMultiplierStrategy.name}::shouldInvest vesu_amount: ${vesu_amount.toNumber()}, extended_amount: ${extended_amount.toNumber()}`);
34174
34227
  return {
34175
34228
  shouldInvest: true,
34176
34229
  vesuAmount: vesu_amount,
@@ -34250,15 +34303,15 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34250
34303
  }
34251
34304
  const usdcAmountInWallet = (await this.getUnusedBalance()).amount;
34252
34305
  const usdcAmountOnExtended = parseFloat(
34253
- extendedHoldings.availableForTrade
34306
+ extendedHoldings.availableForWithdrawal
34254
34307
  );
34255
- if (extendedAmount.plus(BUFFER_USDC_IN_WITHDRAWAL).minus(usdcAmountOnExtended).greaterThan(0)) {
34308
+ if (extendedAmount.minus(usdcAmountOnExtended).greaterThan(0)) {
34256
34309
  try {
34257
34310
  const { calls: extendedCalls } = await this.moveAssets(
34258
34311
  {
34259
34312
  to: Protocols.EXTENDED.name,
34260
34313
  from: Protocols.VAULT.name,
34261
- amount: extendedAmount.plus(BUFFER_USDC_IN_WITHDRAWAL).minus(usdcAmountOnExtended)
34314
+ amount: extendedAmount.minus(usdcAmountOnExtended)
34262
34315
  },
34263
34316
  extendedAdapter,
34264
34317
  vesuAdapter
@@ -34496,7 +34549,7 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34496
34549
  };
34497
34550
  }
34498
34551
  const extendedHoldingAmount = new Web3Number(
34499
- extendedHoldings.availableForTrade,
34552
+ extendedHoldings.availableForWithdrawal,
34500
34553
  USDC_TOKEN_DECIMALS
34501
34554
  );
34502
34555
  const {
@@ -34556,7 +34609,6 @@ var VesuExtendedMultiplierStrategy = class _VesuExtendedMultiplierStrategy exten
34556
34609
  extendedAmountInBTC: new Web3Number(0, 0),
34557
34610
  calls: []
34558
34611
  };
34559
- ;
34560
34612
  }
34561
34613
  }
34562
34614
  async checkPriceDifferenceBetweenAvnuAndExtended(extendedAdapter, vesuAdapter, avnuAdapter) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strkfarm/sdk",
3
- "version": "2.0.0-dev.5",
3
+ "version": "2.0.0-dev.6",
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",
@@ -303,7 +303,7 @@ export class AvnuAdapter extends BaseAdapter<DepositParams, WithdrawParams> {
303
303
  toTokenDecimals: number,
304
304
  usdcToBtc: boolean,
305
305
  maxIterations: number = 5,
306
- tolerance: number = 1000
306
+ tolerance: number = 5000
307
307
  ): Promise<Quote | null>{
308
308
  try {
309
309
  const fromToken = this.config.supportedPositions[0].asset;