@sodax/sdk 1.0.0-rc.2 → 1.0.0-rc.4

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.cjs CHANGED
@@ -6820,12 +6820,12 @@ function getEvmViemChain(id) {
6820
6820
  return chains.bsc;
6821
6821
  case types.POLYGON_MAINNET_CHAIN_ID:
6822
6822
  return chains.polygon;
6823
- case types.NIBIRU_MAINNET_CHAIN_ID:
6824
- return chains.nibiru;
6825
6823
  case types.HYPEREVM_MAINNET_CHAIN_ID:
6826
6824
  return hyper;
6827
6825
  case types.LIGHTLINK_MAINNET_CHAIN_ID:
6828
6826
  return chains.lightlinkPhoenix;
6827
+ case types.ETHEREUM_MAINNET_CHAIN_ID:
6828
+ return chains.mainnet;
6829
6829
  default:
6830
6830
  throw new Error(`Unsupported EVM chain ID: ${id}`);
6831
6831
  }
@@ -7997,6 +7997,29 @@ var EvmVaultTokenService = class {
7997
7997
  var Erc20Service = class {
7998
7998
  constructor() {
7999
7999
  }
8000
+ static async getErc20Token(token, publicClient) {
8001
+ const [name, symbol, decimals] = await publicClient.multicall({
8002
+ contracts: [
8003
+ {
8004
+ address: token,
8005
+ abi: viem.erc20Abi,
8006
+ functionName: "name"
8007
+ },
8008
+ {
8009
+ address: token,
8010
+ abi: viem.erc20Abi,
8011
+ functionName: "symbol"
8012
+ },
8013
+ {
8014
+ address: token,
8015
+ abi: viem.erc20Abi,
8016
+ functionName: "decimals"
8017
+ }
8018
+ ],
8019
+ allowFailure: false
8020
+ });
8021
+ return { name, symbol, decimals, address: token };
8022
+ }
8000
8023
  /**
8001
8024
  * Check if spender has enough ERC20 allowance for given amount
8002
8025
  * @param token - ERC20 token address
@@ -9644,6 +9667,370 @@ function formatUserSummaryAndIncentives({
9644
9667
  calculatedUserIncentives
9645
9668
  };
9646
9669
  }
9670
+
9671
+ // src/shared/abis/erc20-bnusd.abi.ts
9672
+ var erc20BnusdAbi = [
9673
+ {
9674
+ inputs: [{ internalType: "address", name: "admin", type: "address" }],
9675
+ stateMutability: "nonpayable",
9676
+ type: "constructor"
9677
+ },
9678
+ {
9679
+ anonymous: false,
9680
+ inputs: [
9681
+ { indexed: true, internalType: "address", name: "owner", type: "address" },
9682
+ { indexed: true, internalType: "address", name: "spender", type: "address" },
9683
+ { indexed: false, internalType: "uint256", name: "value", type: "uint256" }
9684
+ ],
9685
+ name: "Approval",
9686
+ type: "event"
9687
+ },
9688
+ {
9689
+ anonymous: false,
9690
+ inputs: [
9691
+ { indexed: true, internalType: "address", name: "facilitatorAddress", type: "address" },
9692
+ { indexed: true, internalType: "bytes32", name: "label", type: "bytes32" },
9693
+ { indexed: false, internalType: "uint256", name: "bucketCapacity", type: "uint256" }
9694
+ ],
9695
+ name: "FacilitatorAdded",
9696
+ type: "event"
9697
+ },
9698
+ {
9699
+ anonymous: false,
9700
+ inputs: [
9701
+ { indexed: true, internalType: "address", name: "facilitatorAddress", type: "address" },
9702
+ { indexed: false, internalType: "uint256", name: "oldCapacity", type: "uint256" },
9703
+ { indexed: false, internalType: "uint256", name: "newCapacity", type: "uint256" }
9704
+ ],
9705
+ name: "FacilitatorBucketCapacityUpdated",
9706
+ type: "event"
9707
+ },
9708
+ {
9709
+ anonymous: false,
9710
+ inputs: [
9711
+ { indexed: true, internalType: "address", name: "facilitatorAddress", type: "address" },
9712
+ { indexed: false, internalType: "uint256", name: "oldLevel", type: "uint256" },
9713
+ { indexed: false, internalType: "uint256", name: "newLevel", type: "uint256" }
9714
+ ],
9715
+ name: "FacilitatorBucketLevelUpdated",
9716
+ type: "event"
9717
+ },
9718
+ {
9719
+ anonymous: false,
9720
+ inputs: [{ indexed: true, internalType: "address", name: "facilitatorAddress", type: "address" }],
9721
+ name: "FacilitatorRemoved",
9722
+ type: "event"
9723
+ },
9724
+ {
9725
+ anonymous: false,
9726
+ inputs: [
9727
+ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32" },
9728
+ { indexed: true, internalType: "bytes32", name: "previousAdminRole", type: "bytes32" },
9729
+ { indexed: true, internalType: "bytes32", name: "newAdminRole", type: "bytes32" }
9730
+ ],
9731
+ name: "RoleAdminChanged",
9732
+ type: "event"
9733
+ },
9734
+ {
9735
+ anonymous: false,
9736
+ inputs: [
9737
+ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32" },
9738
+ { indexed: true, internalType: "address", name: "account", type: "address" },
9739
+ { indexed: true, internalType: "address", name: "sender", type: "address" }
9740
+ ],
9741
+ name: "RoleGranted",
9742
+ type: "event"
9743
+ },
9744
+ {
9745
+ anonymous: false,
9746
+ inputs: [
9747
+ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32" },
9748
+ { indexed: true, internalType: "address", name: "account", type: "address" },
9749
+ { indexed: true, internalType: "address", name: "sender", type: "address" }
9750
+ ],
9751
+ name: "RoleRevoked",
9752
+ type: "event"
9753
+ },
9754
+ {
9755
+ anonymous: false,
9756
+ inputs: [
9757
+ { indexed: true, internalType: "address", name: "from", type: "address" },
9758
+ { indexed: true, internalType: "address", name: "to", type: "address" },
9759
+ { indexed: false, internalType: "uint256", name: "value", type: "uint256" }
9760
+ ],
9761
+ name: "Transfer",
9762
+ type: "event"
9763
+ },
9764
+ {
9765
+ inputs: [],
9766
+ name: "BUCKET_MANAGER_ROLE",
9767
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
9768
+ stateMutability: "view",
9769
+ type: "function"
9770
+ },
9771
+ {
9772
+ inputs: [],
9773
+ name: "DEFAULT_ADMIN_ROLE",
9774
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
9775
+ stateMutability: "view",
9776
+ type: "function"
9777
+ },
9778
+ {
9779
+ inputs: [],
9780
+ name: "DOMAIN_SEPARATOR",
9781
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
9782
+ stateMutability: "view",
9783
+ type: "function"
9784
+ },
9785
+ {
9786
+ inputs: [],
9787
+ name: "FACILITATOR_MANAGER_ROLE",
9788
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
9789
+ stateMutability: "view",
9790
+ type: "function"
9791
+ },
9792
+ {
9793
+ inputs: [],
9794
+ name: "PERMIT_TYPEHASH",
9795
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
9796
+ stateMutability: "view",
9797
+ type: "function"
9798
+ },
9799
+ {
9800
+ inputs: [
9801
+ { internalType: "address", name: "facilitatorAddress", type: "address" },
9802
+ { internalType: "string", name: "facilitatorLabel", type: "string" },
9803
+ { internalType: "uint128", name: "bucketCapacity", type: "uint128" }
9804
+ ],
9805
+ name: "addFacilitator",
9806
+ outputs: [],
9807
+ stateMutability: "nonpayable",
9808
+ type: "function"
9809
+ },
9810
+ {
9811
+ inputs: [
9812
+ { internalType: "address", name: "", type: "address" },
9813
+ { internalType: "address", name: "", type: "address" }
9814
+ ],
9815
+ name: "allowance",
9816
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
9817
+ stateMutability: "view",
9818
+ type: "function"
9819
+ },
9820
+ {
9821
+ inputs: [
9822
+ { internalType: "address", name: "spender", type: "address" },
9823
+ { internalType: "uint256", name: "amount", type: "uint256" }
9824
+ ],
9825
+ name: "approve",
9826
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
9827
+ stateMutability: "nonpayable",
9828
+ type: "function"
9829
+ },
9830
+ {
9831
+ inputs: [{ internalType: "address", name: "", type: "address" }],
9832
+ name: "balanceOf",
9833
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
9834
+ stateMutability: "view",
9835
+ type: "function"
9836
+ },
9837
+ {
9838
+ inputs: [{ internalType: "uint256", name: "amount", type: "uint256" }],
9839
+ name: "burn",
9840
+ outputs: [],
9841
+ stateMutability: "nonpayable",
9842
+ type: "function"
9843
+ },
9844
+ {
9845
+ inputs: [],
9846
+ name: "decimals",
9847
+ outputs: [{ internalType: "uint8", name: "", type: "uint8" }],
9848
+ stateMutability: "view",
9849
+ type: "function"
9850
+ },
9851
+ {
9852
+ inputs: [{ internalType: "address", name: "facilitator", type: "address" }],
9853
+ name: "getFacilitator",
9854
+ outputs: [
9855
+ {
9856
+ components: [
9857
+ { internalType: "uint128", name: "bucketCapacity", type: "uint128" },
9858
+ { internalType: "uint128", name: "bucketLevel", type: "uint128" },
9859
+ { internalType: "string", name: "label", type: "string" }
9860
+ ],
9861
+ internalType: "struct IGhoToken.Facilitator",
9862
+ name: "",
9863
+ type: "tuple"
9864
+ }
9865
+ ],
9866
+ stateMutability: "view",
9867
+ type: "function"
9868
+ },
9869
+ {
9870
+ inputs: [{ internalType: "address", name: "facilitator", type: "address" }],
9871
+ name: "getFacilitatorBucket",
9872
+ outputs: [
9873
+ { internalType: "uint256", name: "", type: "uint256" },
9874
+ { internalType: "uint256", name: "", type: "uint256" }
9875
+ ],
9876
+ stateMutability: "view",
9877
+ type: "function"
9878
+ },
9879
+ {
9880
+ inputs: [],
9881
+ name: "getFacilitatorsList",
9882
+ outputs: [{ internalType: "address[]", name: "", type: "address[]" }],
9883
+ stateMutability: "view",
9884
+ type: "function"
9885
+ },
9886
+ {
9887
+ inputs: [{ internalType: "bytes32", name: "role", type: "bytes32" }],
9888
+ name: "getRoleAdmin",
9889
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
9890
+ stateMutability: "view",
9891
+ type: "function"
9892
+ },
9893
+ {
9894
+ inputs: [
9895
+ { internalType: "bytes32", name: "role", type: "bytes32" },
9896
+ { internalType: "address", name: "account", type: "address" }
9897
+ ],
9898
+ name: "grantRole",
9899
+ outputs: [],
9900
+ stateMutability: "nonpayable",
9901
+ type: "function"
9902
+ },
9903
+ {
9904
+ inputs: [
9905
+ { internalType: "bytes32", name: "role", type: "bytes32" },
9906
+ { internalType: "address", name: "account", type: "address" }
9907
+ ],
9908
+ name: "hasRole",
9909
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
9910
+ stateMutability: "view",
9911
+ type: "function"
9912
+ },
9913
+ {
9914
+ inputs: [
9915
+ { internalType: "address", name: "account", type: "address" },
9916
+ { internalType: "uint256", name: "amount", type: "uint256" }
9917
+ ],
9918
+ name: "mint",
9919
+ outputs: [],
9920
+ stateMutability: "nonpayable",
9921
+ type: "function"
9922
+ },
9923
+ {
9924
+ inputs: [],
9925
+ name: "name",
9926
+ outputs: [{ internalType: "string", name: "", type: "string" }],
9927
+ stateMutability: "view",
9928
+ type: "function"
9929
+ },
9930
+ {
9931
+ inputs: [{ internalType: "address", name: "", type: "address" }],
9932
+ name: "nonces",
9933
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
9934
+ stateMutability: "view",
9935
+ type: "function"
9936
+ },
9937
+ {
9938
+ inputs: [
9939
+ { internalType: "address", name: "owner", type: "address" },
9940
+ { internalType: "address", name: "spender", type: "address" },
9941
+ { internalType: "uint256", name: "value", type: "uint256" },
9942
+ { internalType: "uint256", name: "deadline", type: "uint256" },
9943
+ { internalType: "uint8", name: "v", type: "uint8" },
9944
+ { internalType: "bytes32", name: "r", type: "bytes32" },
9945
+ { internalType: "bytes32", name: "s", type: "bytes32" }
9946
+ ],
9947
+ name: "permit",
9948
+ outputs: [],
9949
+ stateMutability: "nonpayable",
9950
+ type: "function"
9951
+ },
9952
+ {
9953
+ inputs: [{ internalType: "address", name: "facilitatorAddress", type: "address" }],
9954
+ name: "removeFacilitator",
9955
+ outputs: [],
9956
+ stateMutability: "nonpayable",
9957
+ type: "function"
9958
+ },
9959
+ {
9960
+ inputs: [
9961
+ { internalType: "bytes32", name: "role", type: "bytes32" },
9962
+ { internalType: "address", name: "account", type: "address" }
9963
+ ],
9964
+ name: "renounceRole",
9965
+ outputs: [],
9966
+ stateMutability: "nonpayable",
9967
+ type: "function"
9968
+ },
9969
+ {
9970
+ inputs: [
9971
+ { internalType: "bytes32", name: "role", type: "bytes32" },
9972
+ { internalType: "address", name: "account", type: "address" }
9973
+ ],
9974
+ name: "revokeRole",
9975
+ outputs: [],
9976
+ stateMutability: "nonpayable",
9977
+ type: "function"
9978
+ },
9979
+ {
9980
+ inputs: [
9981
+ { internalType: "address", name: "facilitator", type: "address" },
9982
+ { internalType: "uint128", name: "newCapacity", type: "uint128" }
9983
+ ],
9984
+ name: "setFacilitatorBucketCapacity",
9985
+ outputs: [],
9986
+ stateMutability: "nonpayable",
9987
+ type: "function"
9988
+ },
9989
+ {
9990
+ inputs: [{ internalType: "bytes4", name: "interfaceId", type: "bytes4" }],
9991
+ name: "supportsInterface",
9992
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
9993
+ stateMutability: "view",
9994
+ type: "function"
9995
+ },
9996
+ {
9997
+ inputs: [],
9998
+ name: "symbol",
9999
+ outputs: [{ internalType: "string", name: "", type: "string" }],
10000
+ stateMutability: "view",
10001
+ type: "function"
10002
+ },
10003
+ {
10004
+ inputs: [],
10005
+ name: "totalSupply",
10006
+ outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
10007
+ stateMutability: "view",
10008
+ type: "function"
10009
+ },
10010
+ {
10011
+ inputs: [
10012
+ { internalType: "address", name: "to", type: "address" },
10013
+ { internalType: "uint256", name: "amount", type: "uint256" }
10014
+ ],
10015
+ name: "transfer",
10016
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
10017
+ stateMutability: "nonpayable",
10018
+ type: "function"
10019
+ },
10020
+ {
10021
+ inputs: [
10022
+ { internalType: "address", name: "from", type: "address" },
10023
+ { internalType: "address", name: "to", type: "address" },
10024
+ { internalType: "uint256", name: "amount", type: "uint256" }
10025
+ ],
10026
+ name: "transferFrom",
10027
+ outputs: [{ internalType: "bool", name: "", type: "bool" }],
10028
+ stateMutability: "nonpayable",
10029
+ type: "function"
10030
+ }
10031
+ ];
10032
+
10033
+ // src/moneyMarket/UiPoolDataProviderService.ts
9647
10034
  var UiPoolDataProviderService = class {
9648
10035
  hubProvider;
9649
10036
  uiPoolDataProvider;
@@ -9698,29 +10085,76 @@ var UiPoolDataProviderService = class {
9698
10085
  }
9699
10086
  /**
9700
10087
  * Get the list of all reserves in the pool
9701
- * @param uiPoolDataProvider - The address of the UI Pool Data Provider
9702
- * @param poolAddressesProvider - The address of the Pool Addresses Provider
10088
+ * @param unfiltered - If true, returns all reserves in the pool (including bnUSD (debt) reserve); if false (default), filters out bnUSD.
9703
10089
  * @returns {Promise<readonly Address[]>} - Array of reserve addresses
9704
10090
  */
9705
- async getReservesList() {
9706
- return this.hubProvider.publicClient.readContract({
10091
+ async getReservesList(unfiltered = false) {
10092
+ const reservesList = await this.hubProvider.publicClient.readContract({
9707
10093
  address: this.uiPoolDataProvider,
9708
10094
  abi: uiPoolDataAbi,
9709
10095
  functionName: "getReservesList",
9710
10096
  args: [this.poolAddressesProvider]
9711
10097
  });
10098
+ if (unfiltered) {
10099
+ return reservesList;
10100
+ }
10101
+ return reservesList.filter(
10102
+ (reserve) => reserve.toLowerCase() !== types.getMoneyMarketConfig(this.hubProvider.chainConfig.chain.id).bnUSD.toLowerCase()
10103
+ );
10104
+ }
10105
+ /**
10106
+ * @description Get the bnUSD facilitator bucket
10107
+ * @returns {Promise<readonly [bigint, bigint]>} - The bnUSD [cap, current borrowed]
10108
+ */
10109
+ async getBnusdFacilitatorBucket() {
10110
+ return this.hubProvider.publicClient.readContract({
10111
+ address: types.getMoneyMarketConfig(this.hubProvider.chainConfig.chain.id).bnUSD,
10112
+ abi: erc20BnusdAbi,
10113
+ functionName: "getFacilitatorBucket",
10114
+ args: [types.getMoneyMarketConfig(this.hubProvider.chainConfig.chain.id).bnUSDAToken]
10115
+ });
9712
10116
  }
9713
10117
  /**
9714
10118
  * Get detailed data for all reserves in the pool
9715
10119
  * @returns {Promise<readonly [readonly AggregatedReserveData[], BaseCurrencyInfo]>} - Tuple containing array of reserve data and base currency info
9716
10120
  */
9717
10121
  async getReservesData() {
9718
- return this.hubProvider.publicClient.readContract({
9719
- address: this.uiPoolDataProvider,
9720
- abi: uiPoolDataAbi,
9721
- functionName: "getReservesData",
9722
- args: [this.poolAddressesProvider]
9723
- });
10122
+ const [reserveData, bnUSDFacilitatorBucket] = await Promise.all([
10123
+ this.hubProvider.publicClient.readContract({
10124
+ address: this.uiPoolDataProvider,
10125
+ abi: uiPoolDataAbi,
10126
+ functionName: "getReservesData",
10127
+ args: [this.poolAddressesProvider]
10128
+ }),
10129
+ this.getBnusdFacilitatorBucket()
10130
+ ]);
10131
+ const [cap, currentBorrowed] = bnUSDFacilitatorBucket;
10132
+ const reserves = reserveData[0];
10133
+ const baseCurrencyInfo = reserveData[1];
10134
+ const bnUSD = types.getMoneyMarketConfig(this.hubProvider.chainConfig.chain.id).bnUSD.toLowerCase();
10135
+ const bnUSDVault = types.getMoneyMarketConfig(this.hubProvider.chainConfig.chain.id).bnUSDVault.toLowerCase();
10136
+ const bnUSDReserve = reserves.find((r) => bnUSD === r.underlyingAsset.toLowerCase());
10137
+ const bnUSDVaultReserve = reserves.find((r) => bnUSDVault === r.underlyingAsset.toLowerCase());
10138
+ if (!bnUSDReserve || !bnUSDVaultReserve) {
10139
+ return reserveData;
10140
+ }
10141
+ const mergedBNUSDReserve = {
10142
+ ...bnUSDVaultReserve,
10143
+ borrowCap: cap,
10144
+ availableLiquidity: cap - currentBorrowed,
10145
+ totalScaledVariableDebt: bnUSDReserve.totalScaledVariableDebt + bnUSDVaultReserve.totalScaledVariableDebt,
10146
+ virtualUnderlyingBalance: bnUSDReserve.virtualUnderlyingBalance + bnUSDVaultReserve.virtualUnderlyingBalance,
10147
+ accruedToTreasury: bnUSDReserve.accruedToTreasury + bnUSDVaultReserve.accruedToTreasury
10148
+ };
10149
+ return [
10150
+ [
10151
+ mergedBNUSDReserve,
10152
+ ...reserves.filter(
10153
+ (r) => r.underlyingAsset.toLowerCase() !== bnUSD && r.underlyingAsset.toLowerCase() !== bnUSDVault
10154
+ )
10155
+ ],
10156
+ baseCurrencyInfo
10157
+ ];
9724
10158
  }
9725
10159
  /**
9726
10160
  * Get user-specific reserve data
@@ -9730,12 +10164,35 @@ var UiPoolDataProviderService = class {
9730
10164
  * @returns {Promise<readonly [readonly UserReserveData[], number]>} - Tuple containing array of user reserve data and eMode category ID
9731
10165
  */
9732
10166
  async getUserReservesData(userAddress) {
9733
- return this.hubProvider.publicClient.readContract({
10167
+ const userReserves = await this.hubProvider.publicClient.readContract({
9734
10168
  address: this.uiPoolDataProvider,
9735
10169
  abi: uiPoolDataAbi,
9736
10170
  functionName: "getUserReservesData",
9737
10171
  args: [this.poolAddressesProvider, userAddress]
9738
10172
  });
10173
+ const userReservesData = userReserves[0];
10174
+ const eModeCategoryId = userReserves[1];
10175
+ const bnUSD = types.getMoneyMarketConfig(this.hubProvider.chainConfig.chain.id).bnUSD.toLowerCase();
10176
+ const bnUSDVault = types.getMoneyMarketConfig(this.hubProvider.chainConfig.chain.id).bnUSDVault.toLowerCase();
10177
+ const bnUSDReserve = userReservesData.find((r) => bnUSD === r.underlyingAsset.toLowerCase());
10178
+ const bnUSDVaultReserve = userReservesData.find((r) => bnUSDVault === r.underlyingAsset.toLowerCase());
10179
+ if (!bnUSDReserve || !bnUSDVaultReserve) {
10180
+ return userReserves;
10181
+ }
10182
+ const mergedBNUSDReserve = {
10183
+ ...bnUSDVaultReserve,
10184
+ scaledATokenBalance: bnUSDReserve.scaledATokenBalance + bnUSDVaultReserve.scaledATokenBalance,
10185
+ scaledVariableDebt: bnUSDReserve.scaledVariableDebt + bnUSDVaultReserve.scaledVariableDebt
10186
+ };
10187
+ return [
10188
+ [
10189
+ mergedBNUSDReserve,
10190
+ ...userReservesData.filter(
10191
+ (r) => r.underlyingAsset.toLowerCase() !== bnUSD && r.underlyingAsset.toLowerCase() !== bnUSDVault
10192
+ )
10193
+ ],
10194
+ eModeCategoryId
10195
+ ];
9739
10196
  }
9740
10197
  /**
9741
10198
  * Get the reserves data humanized
@@ -9863,6 +10320,9 @@ var MoneyMarketDataService = class {
9863
10320
  this.uiPoolDataProviderService = new UiPoolDataProviderService(hubProvider);
9864
10321
  this.lendingPoolService = new LendingPoolService(hubProvider);
9865
10322
  }
10323
+ async getATokenData(aToken) {
10324
+ return Erc20Service.getErc20Token(aToken, this.hubProvider.publicClient);
10325
+ }
9866
10326
  /**
9867
10327
  * LendingPool
9868
10328
  */
@@ -9887,10 +10347,11 @@ var MoneyMarketDataService = class {
9887
10347
  */
9888
10348
  /**
9889
10349
  * Get the reserves list
10350
+ * @param unfiltered - If true, return the list of all reserves in the pool (including bnUSD (debt) reserve)
9890
10351
  * @returns {Promise<readonly Address[]>} - List of reserve asset addresses
9891
10352
  */
9892
- async getReservesList() {
9893
- return this.uiPoolDataProviderService.getReservesList();
10353
+ async getReservesList(unfiltered = false) {
10354
+ return this.uiPoolDataProviderService.getReservesList(unfiltered);
9894
10355
  }
9895
10356
  /**
9896
10357
  * Get the reserves data
@@ -10659,7 +11120,7 @@ var SwapService = class {
10659
11120
  * "token_dst_blockchain_id":"0xa4b1.arbitrum",
10660
11121
  * "amount":1000000000000000n,
10661
11122
  * "quote_type": "exact_input"
10662
- * } satisfies SolverIntentQuoteRequest
11123
+ * } satisfies SolverIntentQuoteRequest & OptionalFee
10663
11124
  *
10664
11125
  * const response = await swapService.getQuote(payload);
10665
11126
  *
@@ -10673,7 +11134,7 @@ var SwapService = class {
10673
11134
  async getQuote(payload) {
10674
11135
  payload = {
10675
11136
  ...payload,
10676
- amount: adjustAmountByFee(payload.amount, this.config.partnerFee, payload.quote_type)
11137
+ amount: adjustAmountByFee(payload.amount, payload.fee ?? this.config.partnerFee, payload.quote_type)
10677
11138
  };
10678
11139
  return SolverApiService.getQuote(payload, this.config, this.configService);
10679
11140
  }
@@ -14094,26 +14555,30 @@ var SolanaSpokeService = class _SolanaSpokeService {
14094
14555
  }
14095
14556
  return spokeProvider.walletProvider.sendTransaction(serializedTransaction);
14096
14557
  }
14097
- static async waitForConfirmation(spokeProvider, signature, commitment = "finalized", timeoutMs = 6e4) {
14098
- const connection = new web3_js.Connection(spokeProvider.chainConfig.rpcUrl, commitment);
14099
- const deadline = Date.now() + timeoutMs;
14100
- while (Date.now() < deadline) {
14101
- try {
14102
- const tx = await connection.getTransaction(signature, { commitment, maxSupportedTransactionVersion: 0 });
14103
- if (tx) {
14104
- if (tx.meta?.err) {
14105
- return { ok: false, error: new Error(JSON.stringify(tx.meta.err)) };
14558
+ static async waitForConfirmation(spokeProvider, signature, commitment = "finalized", timeoutMs = 12e4) {
14559
+ try {
14560
+ const connection = new web3_js.Connection(spokeProvider.chainConfig.rpcUrl, commitment);
14561
+ const deadline = Date.now() + timeoutMs;
14562
+ while (Date.now() < deadline) {
14563
+ try {
14564
+ const tx = await connection.getTransaction(signature, { commitment, maxSupportedTransactionVersion: 0 });
14565
+ if (tx) {
14566
+ if (tx.meta?.err) {
14567
+ return { ok: false, error: new Error(JSON.stringify(tx.meta.err)) };
14568
+ }
14569
+ return { ok: true, value: true };
14106
14570
  }
14107
- return { ok: true, value: true };
14571
+ } catch {
14108
14572
  }
14109
- } catch {
14573
+ await new Promise((r) => setTimeout(r, 750));
14110
14574
  }
14111
- await new Promise((r) => setTimeout(r, 750));
14575
+ return {
14576
+ ok: false,
14577
+ error: new Error(`Timed out after ${timeoutMs}ms waiting for ${commitment} confirmation for ${signature}`)
14578
+ };
14579
+ } catch (error) {
14580
+ return { ok: false, error: new Error(`Failed to get transaction confirmation: ${JSON.stringify(error)}`) };
14112
14581
  }
14113
- return {
14114
- ok: false,
14115
- error: new Error(`Timed out after ${timeoutMs}ms waiting for ${commitment} confirmation for ${signature}`)
14116
- };
14117
14582
  }
14118
14583
  };
14119
14584
  function isEvmHubChainConfig(value) {
@@ -14630,7 +15095,16 @@ var SpokeService = class _SpokeService {
14630
15095
  */
14631
15096
  static async verifyTxHash(txHash, spokeProvider) {
14632
15097
  if (isSolanaSpokeProvider(spokeProvider)) {
14633
- return SolanaSpokeService.waitForConfirmation(spokeProvider, txHash);
15098
+ const result = await SolanaSpokeService.waitForConfirmation(spokeProvider, txHash);
15099
+ if (!result.ok) {
15100
+ console.warn(`Solana verifyTxHash failed: ${result.error}`);
15101
+ console.warn("Returning true to assume transaction exists on chain in future ");
15102
+ return {
15103
+ ok: true,
15104
+ value: true
15105
+ };
15106
+ }
15107
+ return result;
14634
15108
  }
14635
15109
  if (isStellarSpokeProvider(spokeProvider)) {
14636
15110
  return StellarSpokeService.waitForTransaction(spokeProvider, txHash);