@strkfarm/sdk 2.0.0-dev.14 → 2.0.0-dev.15

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.
@@ -93981,26 +93981,38 @@ spurious results.`);
93981
93981
  try {
93982
93982
  if (!this.client) {
93983
93983
  logger2.error("Client not initialized");
93984
- return false;
93984
+ return {
93985
+ status: false,
93986
+ receivedTxnHash: false
93987
+ };
93985
93988
  }
93986
93989
  if (amount.lessThanOrEqualTo(0)) {
93987
93990
  logger2.error(
93988
93991
  `Invalid withdrawal amount: ${amount.toNumber()}. Amount must be positive.`
93989
93992
  );
93990
- return false;
93993
+ return {
93994
+ status: false,
93995
+ receivedTxnHash: false
93996
+ };
93991
93997
  }
93992
93998
  if (amount.lessThanOrEqualTo(this.minimumExtendedMovementAmount)) {
93993
93999
  logger2.warn(
93994
94000
  `Withdrawal amount ${amount.toNumber()} is below minimum Extended movement amount ${this.minimumExtendedMovementAmount}. Skipping withdrawal.`
93995
94001
  );
93996
- return false;
94002
+ return {
94003
+ status: false,
94004
+ receivedTxnHash: false
94005
+ };
93997
94006
  }
93998
94007
  const holdings = await this.getExtendedDepositAmount();
93999
94008
  if (!holdings) {
94000
94009
  logger2.error(
94001
94010
  "Cannot get holdings - unable to validate withdrawal amount"
94002
94011
  );
94003
- return false;
94012
+ return {
94013
+ status: false,
94014
+ receivedTxnHash: false
94015
+ };
94004
94016
  }
94005
94017
  const availableForWithdrawal = parseFloat(
94006
94018
  holdings.availableForWithdrawal
@@ -94009,14 +94021,20 @@ spurious results.`);
94009
94021
  logger2.error(
94010
94022
  `Invalid availableForWithdrawal: ${holdings.availableForWithdrawal}. Expected a finite, non-negative number.`
94011
94023
  );
94012
- return false;
94024
+ return {
94025
+ status: false,
94026
+ receivedTxnHash: false
94027
+ };
94013
94028
  }
94014
94029
  const withdrawalAmount = amount.toNumber();
94015
94030
  if (withdrawalAmount > availableForWithdrawal) {
94016
94031
  logger2.error(
94017
94032
  `Withdrawal amount ${withdrawalAmount} exceeds available balance ${availableForWithdrawal}`
94018
94033
  );
94019
- return false;
94034
+ return {
94035
+ status: false,
94036
+ receivedTxnHash: false
94037
+ };
94020
94038
  }
94021
94039
  logger2.info(
94022
94040
  `Withdrawing ${withdrawalAmount} from Extended. Available balance: ${availableForWithdrawal}`
@@ -94029,15 +94047,24 @@ spurious results.`);
94029
94047
  withdrawalRequest.data,
94030
94048
  "WITHDRAWAL" /* WITHDRAWAL */
94031
94049
  );
94032
- return withdrawalStatus;
94050
+ return {
94051
+ status: true,
94052
+ receivedTxnHash: withdrawalStatus
94053
+ };
94033
94054
  }
94034
94055
  logger2.error(
94035
94056
  `Withdrawal request failed with status: ${withdrawalRequest.status}`
94036
94057
  );
94037
- return false;
94058
+ return {
94059
+ status: false,
94060
+ receivedTxnHash: false
94061
+ };
94038
94062
  } catch (error2) {
94039
94063
  logger2.error(`Error creating Withdraw Call: ${error2}`);
94040
- return false;
94064
+ return {
94065
+ status: false,
94066
+ receivedTxnHash: false
94067
+ };
94041
94068
  }
94042
94069
  }
94043
94070
  async getHealthFactor() {
@@ -98385,10 +98412,16 @@ spurious results.`);
98385
98412
  proofGroups,
98386
98413
  await proofsInfo.callConstructor({ amount })
98387
98414
  );
98388
- return [approveCall, transferCall, call];
98415
+ return {
98416
+ calls: [approveCall, transferCall, call],
98417
+ status: true
98418
+ };
98389
98419
  } catch (err2) {
98390
98420
  logger2.error(`error moving assets to vault allocator: ${err2}`);
98391
- return [];
98421
+ return {
98422
+ calls: [],
98423
+ status: false
98424
+ };
98392
98425
  }
98393
98426
  }
98394
98427
  async shouldInvest() {
@@ -98637,9 +98670,10 @@ spurious results.`);
98637
98670
  const vesuAmountDifferenceAbs = vesuAmountDifference.abs();
98638
98671
  logger2.info(`${_VesuExtendedMultiplierStrategy.name}::shouldMoveAssets calculated movements - Extended withdrawal: ${totalExtendedWithdrawal.toNumber()}, Extended deposit: ${totalExtendedDeposit.toNumber()}, Extended diff: ${extendedAmountDifference.toNumber()}, Projected wallet: ${projectedWalletBalance.toNumber()}, Vesu diff: ${vesuAmountDifference.toNumber()}`);
98639
98672
  let calls = [];
98673
+ let transactionResults = [];
98640
98674
  if (extendedAmount.isNegative() && extendedAmount.abs().greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
98641
98675
  try {
98642
- const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
98676
+ const { calls: extendedCalls, status: extendedStatus, transactionMetadata: extendedTransactionMetadata } = await this.moveAssets(
98643
98677
  {
98644
98678
  to: Protocols.VAULT.name,
98645
98679
  from: Protocols.EXTENDED.name,
@@ -98649,17 +98683,25 @@ spurious results.`);
98649
98683
  vesuAdapter
98650
98684
  );
98651
98685
  if (extendedStatus) {
98652
- calls.push(...extendedCalls);
98686
+ transactionResults.push({
98687
+ status: extendedStatus,
98688
+ calls: extendedCalls,
98689
+ transactionMetadata: {
98690
+ ...extendedTransactionMetadata,
98691
+ transactionType: "DEPOSIT"
98692
+ }
98693
+ });
98653
98694
  } else {
98654
- return [];
98695
+ return [this.createTransactionResult([], false, { from: Protocols.EXTENDED.name, to: Protocols.VAULT.name, amount: extendedAmount.abs() }, "NONE")];
98655
98696
  }
98656
98697
  } catch (err2) {
98657
98698
  logger2.error(`Failed moving assets to vault: ${err2}`);
98699
+ return [this.createTransactionResult([], false, { from: Protocols.EXTENDED.name, to: Protocols.VAULT.name, amount: extendedAmount.abs() }, "NONE")];
98658
98700
  }
98659
98701
  }
98660
98702
  if (vesuAmount.isNegative() && vesuAmount.abs().greaterThan(vesuAdapter.minimumVesuMovementAmount)) {
98661
98703
  try {
98662
- const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
98704
+ const { calls: vesuCalls, status: vesuStatus, transactionMetadata: vesuTransactionMetadata } = await this.moveAssets(
98663
98705
  {
98664
98706
  to: Protocols.EXTENDED.name,
98665
98707
  from: Protocols.VESU.name,
@@ -98668,18 +98710,26 @@ spurious results.`);
98668
98710
  extendedAdapter,
98669
98711
  vesuAdapter
98670
98712
  );
98671
- calls.push(...vesuCalls);
98672
98713
  if (!vesuStatus) {
98673
- return [];
98674
- }
98714
+ return [this.createTransactionResult([], false, { from: Protocols.VESU.name, to: Protocols.EXTENDED.name, amount: vesuAmount.abs() }, "NONE")];
98715
+ }
98716
+ transactionResults.push({
98717
+ status: vesuStatus,
98718
+ calls: vesuCalls,
98719
+ transactionMetadata: {
98720
+ ...vesuTransactionMetadata,
98721
+ transactionType: "DEPOSIT"
98722
+ }
98723
+ });
98675
98724
  } catch (err2) {
98676
- logger2.error(`Failed moving assets to vault: ${err2}`);
98725
+ logger2.error(`Failed moving assets to extended via vault allocator: ${err2}`);
98726
+ return [this.createTransactionResult([], false, { from: Protocols.VESU.name, to: Protocols.EXTENDED.name, amount: vesuAmount.abs() }, "NONE")];
98677
98727
  }
98678
98728
  }
98679
98729
  if (extendedAmountDifferenceAbs.greaterThan(extendedAdapter.minimumExtendedMovementAmount)) {
98680
98730
  if (extendedAmountDifference.greaterThan(0)) {
98681
98731
  try {
98682
- const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
98732
+ const { calls: extendedCalls, status: extendedStatus, transactionMetadata: extendedTransactionMetadata } = await this.moveAssets(
98683
98733
  {
98684
98734
  to: Protocols.EXTENDED.name,
98685
98735
  from: Protocols.VAULT.name,
@@ -98689,18 +98739,22 @@ spurious results.`);
98689
98739
  vesuAdapter
98690
98740
  );
98691
98741
  if (extendedStatus) {
98692
- calls.push(...extendedCalls);
98742
+ transactionResults.push({
98743
+ status: extendedStatus,
98744
+ calls: extendedCalls,
98745
+ transactionMetadata: extendedTransactionMetadata
98746
+ });
98693
98747
  } else {
98694
98748
  logger2.error(`Failed to move assets to extended - operation returned false status`);
98695
- return [];
98749
+ return [this.createTransactionResult([], false, { from: Protocols.VAULT.name, to: Protocols.EXTENDED.name, amount: extendedAmountDifference }, "NONE")];
98696
98750
  }
98697
98751
  } catch (err2) {
98698
98752
  logger2.error(`Failed moving assets to extended: ${err2}`);
98699
- return [];
98753
+ return [this.createTransactionResult([], false, { from: Protocols.VAULT.name, to: Protocols.EXTENDED.name, amount: extendedAmountDifference }, "NONE")];
98700
98754
  }
98701
98755
  } else if (extendedAmountDifference.lessThan(0)) {
98702
98756
  try {
98703
- const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
98757
+ const { calls: extendedCalls, status: extendedStatus, transactionMetadata: extendedTransactionMetadata } = await this.moveAssets(
98704
98758
  {
98705
98759
  to: Protocols.VAULT.name,
98706
98760
  from: Protocols.EXTENDED.name,
@@ -98710,14 +98764,21 @@ spurious results.`);
98710
98764
  vesuAdapter
98711
98765
  );
98712
98766
  if (extendedStatus) {
98713
- calls.push(...extendedCalls);
98767
+ transactionResults.push({
98768
+ status: extendedStatus,
98769
+ calls: extendedCalls,
98770
+ transactionMetadata: {
98771
+ ...extendedTransactionMetadata,
98772
+ transactionType: "DEPOSIT"
98773
+ }
98774
+ });
98714
98775
  } else {
98715
98776
  logger2.error(`Failed to withdraw from extended - operation returned false status`);
98716
- return [];
98777
+ return [this.createTransactionResult([], false, { from: Protocols.EXTENDED.name, to: Protocols.VAULT.name, amount: extendedAmountDifferenceAbs }, "NONE")];
98717
98778
  }
98718
98779
  } catch (err2) {
98719
98780
  logger2.error(`Failed moving assets from extended to vault: ${err2}`);
98720
- return [];
98781
+ return [this.createTransactionResult([], false, { from: Protocols.EXTENDED.name, to: Protocols.VAULT.name, amount: extendedAmountDifferenceAbs }, "NONE")];
98721
98782
  }
98722
98783
  }
98723
98784
  }
@@ -98728,7 +98789,7 @@ spurious results.`);
98728
98789
  );
98729
98790
  } else {
98730
98791
  try {
98731
- const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
98792
+ const { calls: vesuCalls, status: vesuStatus, transactionMetadata: vesuTransactionMetadata } = await this.moveAssets(
98732
98793
  {
98733
98794
  to: Protocols.VAULT.name,
98734
98795
  from: Protocols.EXTENDED.name,
@@ -98739,20 +98800,46 @@ spurious results.`);
98739
98800
  );
98740
98801
  if (!vesuStatus) {
98741
98802
  logger2.error(`Failed to move assets to vesu - operation returned false status`);
98742
- return [];
98803
+ return [this.createTransactionResult([], false, { from: Protocols.EXTENDED.name, to: Protocols.VAULT.name, amount: vesuAmountDifference }, "NONE")];
98743
98804
  }
98744
- calls.push(...vesuCalls);
98805
+ transactionResults.push({
98806
+ status: vesuStatus,
98807
+ calls: vesuCalls,
98808
+ transactionMetadata: {
98809
+ ...vesuTransactionMetadata,
98810
+ transactionType: "DEPOSIT"
98811
+ }
98812
+ });
98745
98813
  } catch (err2) {
98746
98814
  logger2.error(`Failed moving assets to vault: ${err2}`);
98747
- return [];
98815
+ return [this.createTransactionResult([], false, { from: Protocols.EXTENDED.name, to: Protocols.VAULT.name, amount: vesuAmountDifference }, "NONE")];
98748
98816
  }
98749
98817
  }
98750
98818
  }
98751
- return calls;
98819
+ return transactionResults;
98752
98820
  } catch (err2) {
98753
98821
  logger2.error(`Failed moving assets to vesu: ${err2}`);
98754
- return [];
98822
+ return [this.createTransactionResult([], false, { from: Protocols.EXTENDED.name, to: Protocols.VAULT.name, amount: new Web3Number(0, USDC_TOKEN_DECIMALS) }, "NONE")];
98823
+ }
98824
+ }
98825
+ /**
98826
+ * Helper method to create transaction result with metadata
98827
+ */
98828
+ createTransactionResult(calls, status, params, transactionType) {
98829
+ if (status) {
98830
+ return {
98831
+ calls,
98832
+ status,
98833
+ transactionMetadata: {
98834
+ protocolFrom: params.from,
98835
+ protocolTo: params.to,
98836
+ transactionType,
98837
+ usdAmount: params.amount.abs().toFixed(),
98838
+ status: "PENDING"
98839
+ }
98840
+ };
98755
98841
  }
98842
+ return { calls: [], status: false, transactionMetadata: { protocolFrom: "", protocolTo: "", transactionType: "DEPOSIT", usdAmount: "0", status: "FAILED" } };
98756
98843
  }
98757
98844
  async moveAssets(params, extendedAdapter, vesuAdapter) {
98758
98845
  try {
@@ -98760,10 +98847,7 @@ spurious results.`);
98760
98847
  logger2.error(
98761
98848
  `Invalid amount for moveAssets: ${params.amount.toNumber()}. Amount must be positive.`
98762
98849
  );
98763
- return {
98764
- calls: [],
98765
- status: false
98766
- };
98850
+ return this.createTransactionResult([], false, params, "NONE");
98767
98851
  }
98768
98852
  const amountAbs = params.amount.abs();
98769
98853
  if (params.from === Protocols.EXTENDED.name || params.to === Protocols.EXTENDED.name) {
@@ -98771,10 +98855,7 @@ spurious results.`);
98771
98855
  logger2.warn(
98772
98856
  `Amount ${amountAbs.toNumber()} is below minimum Extended movement amount ${extendedAdapter.minimumExtendedMovementAmount}. Skipping operation.`
98773
98857
  );
98774
- return {
98775
- calls: [],
98776
- status: false
98777
- };
98858
+ return this.createTransactionResult([], false, params, "NONE");
98778
98859
  }
98779
98860
  }
98780
98861
  if (params.from === Protocols.VESU.name || params.to === Protocols.VESU.name) {
@@ -98782,19 +98863,13 @@ spurious results.`);
98782
98863
  logger2.warn(
98783
98864
  `Amount ${amountAbs.toNumber()} is below minimum Vesu movement amount ${vesuAdapter.minimumVesuMovementAmount}. Skipping operation.`
98784
98865
  );
98785
- return {
98786
- calls: [],
98787
- status: false
98788
- };
98866
+ return this.createTransactionResult([], false, params, "NONE");
98789
98867
  }
98790
98868
  }
98791
98869
  const avnuAdapter = await this.getAvnuAdapter();
98792
98870
  if (!avnuAdapter) {
98793
98871
  logger2.error(`avnu adapter not found: ${avnuAdapter}`);
98794
- return {
98795
- calls: [],
98796
- status: false
98797
- };
98872
+ return this.createTransactionResult([], false, params, "NONE");
98798
98873
  }
98799
98874
  logger2.info(`moveAssets params, ${JSON.stringify(params)}`);
98800
98875
  const collateralToken = vesuAdapter.config.supportedPositions[0].asset;
@@ -98813,19 +98888,13 @@ spurious results.`);
98813
98888
  await proofsInfo.callConstructor({ amount: params.amount })
98814
98889
  );
98815
98890
  calls.push(call);
98816
- return {
98817
- calls: [call],
98818
- status: true
98819
- };
98891
+ return this.createTransactionResult(calls, true, params, "DEPOSIT");
98820
98892
  } else if (params.to === Protocols.VAULT.name && params.from === Protocols.EXTENDED.name) {
98821
98893
  const extendedLeverage = calculateExtendedLevergae();
98822
98894
  const extendedHoldings = await extendedAdapter.getExtendedDepositAmount();
98823
98895
  if (!extendedHoldings) {
98824
98896
  logger2.error(`error getting extended holdings: ${extendedHoldings}`);
98825
- return {
98826
- calls: [],
98827
- status: false
98828
- };
98897
+ return this.createTransactionResult([], false, params, "NONE");
98829
98898
  }
98830
98899
  const extendedHoldingAmount = new Web3Number(
98831
98900
  extendedHoldings.availableForWithdrawal,
@@ -98852,36 +98921,36 @@ spurious results.`);
98852
98921
  const updatedHoldings = await extendedAdapter.getExtendedDepositAmount();
98853
98922
  if (!updatedHoldings || new Web3Number(updatedHoldings.availableForWithdrawal, USDC_TOKEN_DECIMALS).lessThan(params.amount.abs())) {
98854
98923
  logger2.error(`Insufficient balance after opening position. Available: ${updatedHoldings?.availableForWithdrawal}, Needed: ${params.amount.abs()}`);
98855
- return { calls: [], status: false };
98924
+ return this.createTransactionResult([], false, params, "NONE");
98856
98925
  }
98857
98926
  }
98858
- const withdrawalFromExtended = await extendedAdapter.withdrawFromExtended(params.amount);
98859
- if (withdrawalFromExtended) {
98927
+ const {
98928
+ status: withdrawalFromExtendedStatus,
98929
+ receivedTxnHash: withdrawalFromExtendedTxnHash
98930
+ } = await extendedAdapter.withdrawFromExtended(params.amount);
98931
+ logger2.info(`withdrawalFromExtendedStatus: ${withdrawalFromExtendedStatus}, withdrawalFromExtendedTxnHash: ${withdrawalFromExtendedTxnHash}`);
98932
+ if (withdrawalFromExtendedStatus && withdrawalFromExtendedTxnHash) {
98860
98933
  const extendedHoldings2 = await extendedAdapter.getExtendedDepositAmount();
98861
98934
  logger2.info(`extendedHoldings after withdrawal ${extendedHoldings2?.availableForWithdrawal}`);
98862
98935
  await new Promise((resolve) => setTimeout(resolve, 5e3));
98863
- const calls = await this.moveAssetsToVaultAllocator(params.amount, extendedAdapter);
98864
- if (calls.length > 0) {
98865
- return {
98866
- calls,
98867
- status: true
98868
- };
98936
+ const { calls, status } = await this.moveAssetsToVaultAllocator(params.amount, extendedAdapter);
98937
+ if (calls.length > 0 && status) {
98938
+ return this.createTransactionResult(calls, true, params, "WITHDRAWAL");
98939
+ } else {
98940
+ return this.createTransactionResult([], true, params, "WITHDRAWAL");
98869
98941
  }
98942
+ } else if (withdrawalFromExtendedStatus && !withdrawalFromExtendedTxnHash) {
98943
+ logger2.error("withdrawal from extended successful, but funds didn't get transferred to the wallet");
98944
+ return this.createTransactionResult([], true, params, "WITHDRAWAL");
98870
98945
  } else {
98871
98946
  logger2.error("withdrawal from extended failed");
98872
- return {
98873
- calls: [],
98874
- status: false
98875
- };
98947
+ return this.createTransactionResult([], false, params, "NONE");
98876
98948
  }
98877
98949
  } else if (params.to === Protocols.VAULT.name && params.from === Protocols.VESU.name) {
98878
98950
  const isPriceDifferenceBetweenAvnuAndExtended = await this.checkPriceDifferenceBetweenAvnuAndExtended(extendedAdapter, vesuAdapter, avnuAdapter, "close" /* CLOSE */);
98879
98951
  if (!isPriceDifferenceBetweenAvnuAndExtended) {
98880
98952
  logger2.warn(`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`);
98881
- return {
98882
- calls: [],
98883
- status: false
98884
- };
98953
+ return this.createTransactionResult([], false, params, "NONE");
98885
98954
  }
98886
98955
  const vesuAmountInBTC = new Web3Number(
98887
98956
  params.amount.dividedBy(collateralPrice.price).toFixed(WBTC_TOKEN_DECIMALS),
@@ -98902,18 +98971,12 @@ spurious results.`);
98902
98971
  await swapProofsInfo.callConstructor({ amount: vesuAmountInBTC })
98903
98972
  );
98904
98973
  calls.push(swapCall);
98905
- return {
98906
- calls,
98907
- status: true
98908
- };
98974
+ return this.createTransactionResult(calls, true, params, "WITHDRAWAL");
98909
98975
  } else if (params.to === Protocols.EXTENDED.name && params.from === Protocols.VESU.name) {
98910
98976
  const isPriceDifferenceBetweenAvnuAndExtended = await this.checkPriceDifferenceBetweenAvnuAndExtended(extendedAdapter, vesuAdapter, avnuAdapter, "close" /* CLOSE */);
98911
98977
  if (!isPriceDifferenceBetweenAvnuAndExtended) {
98912
98978
  logger2.warn(`price difference between avnu and extended doesn't fit the range for close position, ${avnuAdapter.config.maximumExtendedPriceDifferenceForSwapClosing}`);
98913
- return {
98914
- calls: [],
98915
- status: false
98916
- };
98979
+ return this.createTransactionResult([], false, params, "NONE");
98917
98980
  }
98918
98981
  const vesuAmountInBTC = new Web3Number(
98919
98982
  params.amount.dividedBy(collateralPrice.price).toNumber(),
@@ -98944,127 +99007,21 @@ spurious results.`);
98944
99007
  await proofsInfoDeposit.callConstructor({ amount: params.amount })
98945
99008
  );
98946
99009
  calls.push(callDeposit);
98947
- return {
98948
- calls,
98949
- status: true
98950
- };
99010
+ return this.createTransactionResult(calls, true, params, "DEPOSIT");
98951
99011
  }
98952
- return {
98953
- calls: [],
98954
- status: false
98955
- };
99012
+ logger2.error(`Unsupported assets movement: ${params.from} to ${params.to}`);
99013
+ return this.createTransactionResult([], false, params, "NONE");
98956
99014
  } catch (err2) {
98957
99015
  logger2.error(`error moving assets: ${err2}`);
98958
- return {
98959
- calls: [],
98960
- status: false
98961
- };
99016
+ return this.createTransactionResult([], false, params, "NONE");
98962
99017
  }
98963
99018
  }
98964
99019
  async handleDeposit() {
98965
99020
  try {
98966
- const vesuAdapter = await this.getVesuAdapter();
98967
- const extendedAdapter = await this.getExtendedAdapter();
98968
- const avnuAdapter = await this.getAvnuAdapter();
98969
- if (!vesuAdapter || !extendedAdapter || !extendedAdapter.client || !avnuAdapter) {
98970
- logger2.error(
98971
- "vesu or extended adapter not found",
98972
- vesuAdapter,
98973
- extendedAdapter
98974
- );
98975
- return {
98976
- extendedAmountInBTC: new Web3Number(0, 0),
98977
- calls: []
98978
- };
98979
- }
98980
- const extendedLeverage = calculateExtendedLevergae();
98981
- const isPriceDifferenceBetweenAvnuAndExtended = await this.checkPriceDifferenceBetweenAvnuAndExtended(extendedAdapter, vesuAdapter, avnuAdapter, "open" /* OPEN */);
98982
- if (!isPriceDifferenceBetweenAvnuAndExtended) {
98983
- logger2.error("price difference between avnu and extended doesn't fit the range");
98984
- return {
98985
- extendedAmountInBTC: new Web3Number(0, 0),
98986
- calls: []
98987
- };
98988
- }
98989
- const position = await extendedAdapter.getAllOpenPositions();
98990
- if (!position) {
98991
- logger2.error("error getting extended position", position);
98992
- return {
98993
- extendedAmountInBTC: new Web3Number(0, 0),
98994
- calls: []
98995
- };
98996
- }
98997
- const extendedPositionValue = position.length > 0 ? parseFloat(position[0].value) : 0;
98998
- const BUFFER_AMOUNT_IN_AVAILABLE_FOR_TRADE = BUFFER_USDC_IN_WITHDRAWAL;
98999
- const extendedHoldings = await extendedAdapter.getExtendedDepositAmount();
99000
- if (!extendedHoldings) {
99001
- logger2.error(`error getting extended holdings: ${extendedHoldings}`);
99002
- return {
99003
- extendedAmountInBTC: new Web3Number(0, 0),
99004
- calls: []
99005
- };
99006
- }
99007
- const extendedHoldingAmount = new Web3Number(
99008
- extendedHoldings.availableForWithdrawal,
99009
- USDC_TOKEN_DECIMALS
99010
- );
99011
- const {
99012
- collateralTokenAmount
99013
- } = await vesuAdapter.vesuAdapter.getAssetPrices();
99014
- const { collateralPrice } = await this.getAssetPrices();
99015
- const { vesuAmountInBTC, extendedAmountInBTC } = calculateVesUPositionSizeGivenExtended(
99016
- extendedPositionValue,
99017
- extendedHoldingAmount.minus(BUFFER_AMOUNT_IN_AVAILABLE_FOR_TRADE),
99018
- collateralTokenAmount,
99019
- collateralPrice.price
99020
- );
99021
- logger2.info(`vesuAmountInBTC ${vesuAmountInBTC}, extendedAmountInBTC ${extendedAmountInBTC}`);
99022
- let calls = [];
99023
- if (vesuAmountInBTC.greaterThan(MINIMUM_EXTENDED_POSITION_SIZE)) {
99024
- const proofsInfo = vesuAdapter.getProofs(true, this.getMerkleTree());
99025
- const proofGroups = proofsInfo.proofs;
99026
- const call = this.getManageCall(
99027
- proofGroups,
99028
- await proofsInfo.callConstructor({
99029
- amount: vesuAmountInBTC
99030
- })
99031
- );
99032
- const { amount: wbtcAmountInVaultAllocator } = await this.getUnusedBalanceWBTC();
99033
- if (wbtcAmountInVaultAllocator.lessThan(vesuAmountInBTC)) {
99034
- const swapProofsInfo = avnuAdapter.getProofs(true, this.getMerkleTree());
99035
- const swapProofGroups = swapProofsInfo.proofs;
99036
- const swapCall = this.getManageCall(
99037
- swapProofGroups,
99038
- await swapProofsInfo.callConstructor({
99039
- amount: vesuAmountInBTC
99040
- })
99041
- );
99042
- calls.push(swapCall);
99043
- }
99044
- calls.push(call);
99045
- }
99046
- const shortPosition = extendedAmountInBTC.multipliedBy(3).abs().greaterThan(MINIMUM_EXTENDED_POSITION_SIZE) ? await extendedAdapter.createOrder(
99047
- extendedLeverage.toString(),
99048
- extendedAmountInBTC.toNumber(),
99049
- "SELL" /* SELL */
99050
- ) : null;
99051
- if (!shortPosition && extendedAmountInBTC.multipliedBy(3).abs().greaterThan(MINIMUM_EXTENDED_POSITION_SIZE)) {
99052
- logger2.error(`error creating short position thus no position to be opened on vesu: ${shortPosition}`);
99053
- return {
99054
- extendedAmountInBTC: new Web3Number(0, 0),
99055
- calls: []
99056
- };
99057
- }
99058
- return {
99059
- extendedAmountInBTC,
99060
- calls
99061
- };
99021
+ return this.createTransactionResult([], false, { from: Protocols.VAULT.name, to: Protocols.VAULT.name, amount: new Web3Number(0, 0) }, "NONE");
99062
99022
  } catch (err2) {
99063
99023
  logger2.error(`error handling deposit: ${err2}`);
99064
- return {
99065
- extendedAmountInBTC: new Web3Number(0, 0),
99066
- calls: []
99067
- };
99024
+ return this.createTransactionResult([], false, { from: Protocols.VAULT.name, to: Protocols.VAULT.name, amount: new Web3Number(0, 0) }, "NONE");
99068
99025
  }
99069
99026
  }
99070
99027
  async checkPriceDifferenceBetweenAvnuAndExtended(extendedAdapter, vesuAdapter, avnuAdapter, positionType) {
@@ -99109,12 +99066,8 @@ spurious results.`);
99109
99066
  const withdrawCall2 = await this.getBringLiquidityCall({
99110
99067
  amount: usdcBalanceVaultAllocator.amount
99111
99068
  });
99112
- logger2.info("withdraw call", withdrawCall2);
99113
99069
  calls.push(withdrawCall2);
99114
- return {
99115
- calls,
99116
- status: true
99117
- };
99070
+ return [this.createTransactionResult(calls, true, { from: Protocols.VAULT.name, to: Protocols.NONE.name, amount }, "WITHDRAWAL")];
99118
99071
  }
99119
99072
  const vesuAdapter = await this.getVesuAdapter();
99120
99073
  const extendedAdapter = await this.getExtendedAdapter();
@@ -99123,11 +99076,9 @@ spurious results.`);
99123
99076
  logger2.error(
99124
99077
  `vesu or extended adapter not found: vesuAdapter=${vesuAdapter}, extendedAdapter=${extendedAdapter}`
99125
99078
  );
99126
- return {
99127
- calls,
99128
- status
99129
- };
99079
+ return [this.createTransactionResult(calls, status, { from: Protocols.VAULT.name, to: Protocols.NONE.name, amount }, "NONE")];
99130
99080
  }
99081
+ let transactionResults = [];
99131
99082
  const { collateralTokenAmount } = await vesuAdapter.vesuAdapter.getAssetPrices();
99132
99083
  const {
99133
99084
  collateralPrice
@@ -99136,10 +99087,7 @@ spurious results.`);
99136
99087
  if (!extendedPositon) {
99137
99088
  status = false;
99138
99089
  logger2.error("error getting extended position", extendedPositon);
99139
- return {
99140
- calls,
99141
- status
99142
- };
99090
+ return [this.createTransactionResult(calls, status, { from: Protocols.VAULT.name, to: Protocols.NONE.name, amount }, "NONE")];
99143
99091
  }
99144
99092
  const amountDistributionForWithdrawal = await calculateAmountDistributionForWithdrawal(
99145
99093
  usdcBalanceDifference,
@@ -99152,14 +99100,11 @@ spurious results.`);
99152
99100
  logger2.error(
99153
99101
  `error calculating amount distribution for withdrawal: ${amountDistributionForWithdrawal}`
99154
99102
  );
99155
- return {
99156
- calls,
99157
- status
99158
- };
99103
+ return [this.createTransactionResult(calls, status, { from: Protocols.VAULT.name, to: Protocols.NONE.name, amount }, "NONE")];
99159
99104
  }
99160
99105
  const { vesu_amount, extended_amount } = amountDistributionForWithdrawal;
99161
99106
  if (status && vesu_amount.greaterThan(0)) {
99162
- const { calls: vesuCalls, status: vesuStatus } = await this.moveAssets(
99107
+ const { calls: vesuCalls, status: vesuStatus, transactionMetadata: vesuTransactionMetadata } = await this.moveAssets(
99163
99108
  {
99164
99109
  amount: vesu_amount,
99165
99110
  from: Protocols.VESU.name,
@@ -99169,10 +99114,14 @@ spurious results.`);
99169
99114
  vesuAdapter
99170
99115
  );
99171
99116
  status = vesuStatus;
99172
- calls.push(...vesuCalls);
99117
+ transactionResults.push({
99118
+ status: vesuStatus,
99119
+ calls: vesuCalls,
99120
+ transactionMetadata: vesuTransactionMetadata
99121
+ });
99173
99122
  }
99174
99123
  if (status && extended_amount.greaterThan(0)) {
99175
- const { calls: extendedCalls, status: extendedStatus } = await this.moveAssets(
99124
+ const { calls: extendedCalls, status: extendedStatus, transactionMetadata: extendedTransactionMetadata } = await this.moveAssets(
99176
99125
  {
99177
99126
  amount: extended_amount,
99178
99127
  from: Protocols.EXTENDED.name,
@@ -99183,30 +99132,35 @@ spurious results.`);
99183
99132
  );
99184
99133
  status = extendedStatus;
99185
99134
  if (status) {
99186
- calls.push(...extendedCalls);
99135
+ transactionResults.push({
99136
+ status: extendedStatus,
99137
+ calls: extendedCalls,
99138
+ transactionMetadata: extendedTransactionMetadata
99139
+ });
99187
99140
  } else {
99188
99141
  logger2.error("error moving assets to vault: extendedStatus: ${extendedStatus}");
99189
- return {
99190
- calls: [],
99191
- status
99192
- };
99142
+ return [this.createTransactionResult([], status, { from: Protocols.VAULT.name, to: Protocols.NONE.name, amount }, "NONE")];
99193
99143
  }
99194
99144
  }
99195
99145
  const withdrawCall = await this.getBringLiquidityCall({
99196
99146
  amount
99197
99147
  });
99198
99148
  logger2.info("withdraw call", withdrawCall);
99199
- calls.push(withdrawCall);
99200
- return {
99201
- calls,
99202
- status
99203
- };
99149
+ transactionResults.push({
99150
+ status,
99151
+ calls: [withdrawCall],
99152
+ transactionMetadata: {
99153
+ protocolFrom: Protocols.VAULT.name,
99154
+ protocolTo: Protocols.NONE.name,
99155
+ transactionType: "WITHDRAWAL",
99156
+ usdAmount: amount.toFixed(),
99157
+ status: "PENDING"
99158
+ }
99159
+ });
99160
+ return transactionResults;
99204
99161
  } catch (err2) {
99205
99162
  logger2.error(`error handling withdrawal: ${err2}`);
99206
- return {
99207
- calls: [],
99208
- status: false
99209
- };
99163
+ return [this.createTransactionResult([], false, { from: Protocols.VAULT.name, to: Protocols.NONE.name, amount }, "NONE")];
99210
99164
  }
99211
99165
  }
99212
99166
  async getAUM() {
@@ -99253,6 +99207,36 @@ spurious results.`);
99253
99207
  splits: [realAUM, estimatedAUMDelta]
99254
99208
  };
99255
99209
  }
99210
+ async processTransactionDataFromSDK(txnData) {
99211
+ try {
99212
+ const txnsToBeExecuted = txnData.filter((txn) => {
99213
+ return txn.transactionMetadata.transactionType !== "NONE" && txn.transactionMetadata.protocolFrom !== "" && txn.transactionMetadata.protocolTo !== "";
99214
+ });
99215
+ const callsToBeExecutedFinal = txnsToBeExecuted.flatMap((txn) => txn.calls);
99216
+ const txnMetadata = txnsToBeExecuted.map((txn) => txn.transactionMetadata);
99217
+ return { callsToBeExecutedFinal, txnMetadata };
99218
+ } catch (err2) {
99219
+ logger2.error(`error processing transaction data from SDK: ${err2}`);
99220
+ return null;
99221
+ }
99222
+ }
99223
+ async processTransactionMetadata(txnMetadata, extendedIntentFulfilled) {
99224
+ try {
99225
+ const txnMetadataNew = txnMetadata.map((txn) => {
99226
+ const isExtendedProtocol = txn.protocolFrom === Protocols.EXTENDED.name || txn.protocolTo === Protocols.EXTENDED.name;
99227
+ if (isExtendedProtocol) {
99228
+ txn.status = extendedIntentFulfilled ? "COMPLETED" : "PENDING";
99229
+ } else {
99230
+ txn.status = "COMPLETED";
99231
+ }
99232
+ return txn;
99233
+ });
99234
+ return txnMetadataNew;
99235
+ } catch (err2) {
99236
+ logger2.error(`error processing transaction data from SDK: ${err2}`);
99237
+ return null;
99238
+ }
99239
+ }
99256
99240
  };
99257
99241
  function getLooperSettings2(lstSymbol, underlyingSymbol, vaultSettings, pool1, extendedBackendUrl, extendedApiKey, vaultIdExtended, minimumExtendedMovementAmount, minimumVesuMovementAmount, minimumExtendedRetriesDelayForOrderStatus, minimumExtendedPriceDifferenceForSwapOpen, maximumExtendedPriceDifferenceForSwapClosing) {
99258
99242
  vaultSettings.leafAdapters = [];