@defisaver/positions-sdk 2.1.137 → 2.1.139

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.
Files changed (94) hide show
  1. package/cjs/aaveV4/index.js +26 -10
  2. package/cjs/aaveV4/merkl.d.ts +2 -1
  3. package/cjs/aaveV4/merkl.js +42 -35
  4. package/cjs/config/contracts.d.ts +0 -938
  5. package/cjs/config/contracts.js +1 -8
  6. package/cjs/contracts.d.ts +0 -23433
  7. package/cjs/contracts.js +2 -3
  8. package/cjs/helpers/aaveV4Helpers/index.d.ts +7 -1
  9. package/cjs/helpers/aaveV4Helpers/index.js +22 -10
  10. package/cjs/helpers/index.d.ts +0 -1
  11. package/cjs/helpers/index.js +1 -2
  12. package/cjs/index.d.ts +1 -2
  13. package/cjs/index.js +1 -3
  14. package/cjs/markets/index.d.ts +0 -1
  15. package/cjs/markets/index.js +1 -3
  16. package/cjs/portfolio/discovery.d.ts +1 -1
  17. package/cjs/portfolio/discovery.js +1 -1
  18. package/cjs/portfolio/index.js +0 -32
  19. package/cjs/services/utils.d.ts +1 -0
  20. package/cjs/services/utils.js +3 -1
  21. package/cjs/staking/staking.js +1 -2
  22. package/cjs/types/aaveV4.d.ts +5 -0
  23. package/cjs/types/common.d.ts +4 -0
  24. package/cjs/types/common.js +6 -1
  25. package/cjs/types/index.d.ts +0 -1
  26. package/cjs/types/index.js +0 -1
  27. package/cjs/types/merkl.d.ts +3 -4
  28. package/cjs/types/portfolio.d.ts +0 -4
  29. package/esm/aaveV4/index.js +27 -11
  30. package/esm/aaveV4/merkl.d.ts +2 -1
  31. package/esm/aaveV4/merkl.js +41 -35
  32. package/esm/config/contracts.d.ts +0 -938
  33. package/esm/config/contracts.js +0 -6
  34. package/esm/contracts.d.ts +0 -23433
  35. package/esm/contracts.js +0 -1
  36. package/esm/helpers/aaveV4Helpers/index.d.ts +7 -1
  37. package/esm/helpers/aaveV4Helpers/index.js +21 -10
  38. package/esm/helpers/index.d.ts +0 -1
  39. package/esm/helpers/index.js +0 -1
  40. package/esm/index.d.ts +1 -2
  41. package/esm/index.js +1 -2
  42. package/esm/markets/index.d.ts +0 -1
  43. package/esm/markets/index.js +0 -1
  44. package/esm/portfolio/discovery.d.ts +1 -1
  45. package/esm/portfolio/discovery.js +1 -1
  46. package/esm/portfolio/index.js +1 -33
  47. package/esm/services/utils.d.ts +1 -0
  48. package/esm/services/utils.js +1 -0
  49. package/esm/staking/staking.js +1 -2
  50. package/esm/types/aaveV4.d.ts +5 -0
  51. package/esm/types/common.d.ts +4 -0
  52. package/esm/types/common.js +5 -0
  53. package/esm/types/index.d.ts +0 -1
  54. package/esm/types/index.js +0 -1
  55. package/esm/types/merkl.d.ts +3 -4
  56. package/esm/types/portfolio.d.ts +0 -4
  57. package/package.json +1 -1
  58. package/src/aaveV4/index.ts +29 -11
  59. package/src/aaveV4/merkl.ts +41 -32
  60. package/src/config/contracts.ts +0 -6
  61. package/src/contracts.ts +0 -1
  62. package/src/helpers/aaveV4Helpers/index.ts +22 -9
  63. package/src/helpers/index.ts +0 -1
  64. package/src/index.ts +0 -2
  65. package/src/markets/index.ts +0 -1
  66. package/src/portfolio/discovery.ts +1 -1
  67. package/src/portfolio/index.ts +0 -33
  68. package/src/services/utils.ts +2 -0
  69. package/src/staking/staking.ts +1 -2
  70. package/src/types/aaveV4.ts +5 -0
  71. package/src/types/common.ts +5 -0
  72. package/src/types/index.ts +0 -1
  73. package/src/types/merkl.ts +3 -3
  74. package/src/types/portfolio.ts +0 -4
  75. package/cjs/eulerV2/index.d.ts +0 -47
  76. package/cjs/eulerV2/index.js +0 -225
  77. package/cjs/helpers/eulerHelpers/index.d.ts +0 -22
  78. package/cjs/helpers/eulerHelpers/index.js +0 -231
  79. package/cjs/markets/euler/index.d.ts +0 -8
  80. package/cjs/markets/euler/index.js +0 -30
  81. package/cjs/types/euler.d.ts +0 -153
  82. package/cjs/types/euler.js +0 -14
  83. package/esm/eulerV2/index.d.ts +0 -47
  84. package/esm/eulerV2/index.js +0 -215
  85. package/esm/helpers/eulerHelpers/index.d.ts +0 -22
  86. package/esm/helpers/eulerHelpers/index.js +0 -218
  87. package/esm/markets/euler/index.d.ts +0 -8
  88. package/esm/markets/euler/index.js +0 -24
  89. package/esm/types/euler.d.ts +0 -153
  90. package/esm/types/euler.js +0 -11
  91. package/src/eulerV2/index.ts +0 -331
  92. package/src/helpers/eulerHelpers/index.ts +0 -232
  93. package/src/markets/euler/index.ts +0 -27
  94. package/src/types/euler.ts +0 -178
@@ -1169,12 +1169,6 @@ export const LiquityV2TroveNFT = {
1169
1169
  "abi": [{"inputs":[{"internalType":"contract IAddressesRegistry","name":"_addressesRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_troveId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadataNFT","outputs":[{"internalType":"contract IMetadataNFT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_troveId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"troveManager","outputs":[{"internalType":"contract ITroveManager","name":"","type":"address"}],"stateMutability":"view","type":"function"}],
1170
1170
  "networks": {}
1171
1171
  } as const;
1172
- export const EulerV2View = {
1173
- "abi": [{"inputs":[],"name":"USD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feedRegistry","outputs":[{"internalType":"contract IFeedRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_page","type":"uint256"},{"internalType":"uint256","name":"_perPage","type":"uint256"}],"name":"fetchUsedAccounts","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getAaveTokenPriceInETH","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getAaveTokenPriceInUSD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getAaveV3TokenPriceInETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getAaveV3TokenPriceInUSD","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"}],"name":"getAddrForChainlinkOracle","outputs":[{"internalType":"address","name":"tokenAddrForChainlinkUsage","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"bool","name":"isBorrowOperation","type":"bool"},{"internalType":"uint256","name":"liquidityAdded","type":"uint256"},{"internalType":"uint256","name":"liquidityRemoved","type":"uint256"}],"internalType":"struct EulerV2View.LiquidityChangeParams[]","name":"params","type":"tuple[]"}],"name":"getApyAfterValuesEstimation","outputs":[{"internalType":"uint256[]","name":"estimatedBorrowRates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"}],"name":"getChainlinkPriceInETH","outputs":[{"internalType":"int256","name":"chainlinkPriceInETH","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"},{"internalType":"bool","name":"_useFallback","type":"bool"}],"name":"getChainlinkPriceInUSD","outputs":[{"internalType":"int256","name":"chainlinkPriceInUSD","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"}],"name":"getPriceInETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"}],"name":"getPriceInUSD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"},{"internalType":"uint80","name":"_roundId","type":"uint80"},{"internalType":"contract IAggregatorV3","name":"aggregator","type":"address"}],"name":"getRoundInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"updateTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"},{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"updateTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getSparkTokenPriceInETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getSparkTokenPriceInUSD","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserData","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bool","name":"inLockDownMode","type":"bool"},{"internalType":"bool","name":"inPermitDisabledMode","type":"bool"},{"internalType":"address","name":"borrowVault","type":"address"},{"internalType":"uint256","name":"borrowAmountInUnit","type":"uint256"},{"internalType":"uint256","name":"borrowAmountInAsset","type":"uint256"},{"components":[{"internalType":"address","name":"collateralVault","type":"address"},{"internalType":"bool","name":"usedInBorrow","type":"bool"},{"internalType":"uint256","name":"collateralAmountInUnit","type":"uint256"},{"internalType":"uint256","name":"collateralAmountInAsset","type":"uint256"},{"internalType":"uint256","name":"collateralAmountInUSD","type":"uint256"}],"internalType":"struct EulerV2View.UserCollateralInfo[]","name":"collaterals","type":"tuple[]"}],"internalType":"struct EulerV2View.UserData","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"getUsersData","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bool","name":"inLockDownMode","type":"bool"},{"internalType":"bool","name":"inPermitDisabledMode","type":"bool"},{"internalType":"address","name":"borrowVault","type":"address"},{"internalType":"uint256","name":"borrowAmountInUnit","type":"uint256"},{"internalType":"uint256","name":"borrowAmountInAsset","type":"uint256"},{"components":[{"internalType":"address","name":"collateralVault","type":"address"},{"internalType":"bool","name":"usedInBorrow","type":"bool"},{"internalType":"uint256","name":"collateralAmountInUnit","type":"uint256"},{"internalType":"uint256","name":"collateralAmountInAsset","type":"uint256"},{"internalType":"uint256","name":"collateralAmountInUSD","type":"uint256"}],"internalType":"struct EulerV2View.UserCollateralInfo[]","name":"collaterals","type":"tuple[]"}],"internalType":"struct EulerV2View.UserData[]","name":"data","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"getVaultCollaterals","outputs":[{"components":[{"internalType":"address","name":"vaultAddr","type":"address"},{"internalType":"address","name":"assetAddr","type":"address"},{"internalType":"string","name":"vaultSymbol","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"governorAdmin","type":"address"},{"internalType":"bool","name":"isEscrowed","type":"bool"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"sharePriceInUnit","type":"uint256"},{"internalType":"uint256","name":"assetPriceInUnit","type":"uint256"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint16","name":"borrowLTV","type":"uint16"},{"internalType":"uint16","name":"liquidationLTV","type":"uint16"},{"internalType":"uint16","name":"initialLiquidationLTV","type":"uint16"},{"internalType":"uint48","name":"targetTimestamp","type":"uint48"},{"internalType":"uint32","name":"rampDuration","type":"uint32"},{"internalType":"uint256","name":"interestFee","type":"uint256"},{"internalType":"uint256","name":"interestRate","type":"uint256"}],"internalType":"struct EulerV2View.CollateralInfo[]","name":"collateralsInfo","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"getVaultInfoFull","outputs":[{"components":[{"internalType":"address","name":"vaultAddr","type":"address"},{"internalType":"address","name":"assetAddr","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"totalSupplyShares","type":"uint256"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"totalAssets","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint256","name":"borrowCap","type":"uint256"},{"components":[{"internalType":"address","name":"vaultAddr","type":"address"},{"internalType":"address","name":"assetAddr","type":"address"},{"internalType":"string","name":"vaultSymbol","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"governorAdmin","type":"address"},{"internalType":"bool","name":"isEscrowed","type":"bool"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"sharePriceInUnit","type":"uint256"},{"internalType":"uint256","name":"assetPriceInUnit","type":"uint256"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint16","name":"borrowLTV","type":"uint16"},{"internalType":"uint16","name":"liquidationLTV","type":"uint16"},{"internalType":"uint16","name":"initialLiquidationLTV","type":"uint16"},{"internalType":"uint48","name":"targetTimestamp","type":"uint48"},{"internalType":"uint32","name":"rampDuration","type":"uint32"},{"internalType":"uint256","name":"interestFee","type":"uint256"},{"internalType":"uint256","name":"interestRate","type":"uint256"}],"internalType":"struct EulerV2View.CollateralInfo[]","name":"collaterals","type":"tuple[]"},{"internalType":"uint16","name":"maxLiquidationDiscount","type":"uint16"},{"internalType":"uint256","name":"liquidationCoolOffTime","type":"uint256"},{"internalType":"bool","name":"badDebtSocializationEnabled","type":"bool"},{"internalType":"address","name":"unitOfAccount","type":"address"},{"internalType":"uint256","name":"unitOfAccountInUsd","type":"uint256"},{"internalType":"address","name":"oracle","type":"address"},{"internalType":"uint256","name":"assetPriceInUnit","type":"uint256"},{"internalType":"uint256","name":"sharePriceInUnit","type":"uint256"},{"internalType":"uint256","name":"interestRate","type":"uint256"},{"internalType":"address","name":"irm","type":"address"},{"internalType":"address","name":"balanceTrackerAddress","type":"address"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"address","name":"governorAdmin","type":"address"},{"internalType":"uint256","name":"interestFee","type":"uint256"}],"internalType":"struct EulerV2View.VaultInfoFull","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_vaults","type":"address[]"}],"name":"getVaultsInfosFull","outputs":[{"components":[{"internalType":"address","name":"vaultAddr","type":"address"},{"internalType":"address","name":"assetAddr","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"totalSupplyShares","type":"uint256"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"totalAssets","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint256","name":"borrowCap","type":"uint256"},{"components":[{"internalType":"address","name":"vaultAddr","type":"address"},{"internalType":"address","name":"assetAddr","type":"address"},{"internalType":"string","name":"vaultSymbol","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"governorAdmin","type":"address"},{"internalType":"bool","name":"isEscrowed","type":"bool"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"sharePriceInUnit","type":"uint256"},{"internalType":"uint256","name":"assetPriceInUnit","type":"uint256"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint16","name":"borrowLTV","type":"uint16"},{"internalType":"uint16","name":"liquidationLTV","type":"uint16"},{"internalType":"uint16","name":"initialLiquidationLTV","type":"uint16"},{"internalType":"uint48","name":"targetTimestamp","type":"uint48"},{"internalType":"uint32","name":"rampDuration","type":"uint32"},{"internalType":"uint256","name":"interestFee","type":"uint256"},{"internalType":"uint256","name":"interestRate","type":"uint256"}],"internalType":"struct EulerV2View.CollateralInfo[]","name":"collaterals","type":"tuple[]"},{"internalType":"uint16","name":"maxLiquidationDiscount","type":"uint16"},{"internalType":"uint256","name":"liquidationCoolOffTime","type":"uint256"},{"internalType":"bool","name":"badDebtSocializationEnabled","type":"bool"},{"internalType":"address","name":"unitOfAccount","type":"address"},{"internalType":"uint256","name":"unitOfAccountInUsd","type":"uint256"},{"internalType":"address","name":"oracle","type":"address"},{"internalType":"uint256","name":"assetPriceInUnit","type":"uint256"},{"internalType":"uint256","name":"sharePriceInUnit","type":"uint256"},{"internalType":"uint256","name":"interestRate","type":"uint256"},{"internalType":"address","name":"irm","type":"address"},{"internalType":"address","name":"balanceTrackerAddress","type":"address"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"address","name":"governorAdmin","type":"address"},{"internalType":"uint256","name":"interestFee","type":"uint256"}],"internalType":"struct EulerV2View.VaultInfoFull[]","name":"data","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"_btcPrice","type":"int256"}],"name":"getWBtcPrice","outputs":[{"internalType":"int256","name":"wBtcPrice","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"_stEthPrice","type":"int256"}],"name":"getWStEthPrice","outputs":[{"internalType":"int256","name":"wStEthPrice","type":"int256"}],"stateMutability":"view","type":"function"}],
1174
- "networks": {
1175
- "1": { "address": "0x8932E46Ecf96b5Fe033F5e27Ab6dC755Cb668967" }
1176
- }
1177
- } as const;
1178
1172
  export const LiquityV2StabilityPool = {
1179
1173
  "abi": [{"inputs":[{"internalType":"contract IAddressesRegistry","name":"_addressesRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newActivePoolAddress","type":"address"}],"name":"ActivePoolAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_B","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"_epoch","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"_scale","type":"uint128"}],"name":"B_Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newBoldTokenAddress","type":"address"}],"name":"BoldTokenAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newDefaultPoolAddress","type":"address"}],"name":"DefaultPoolAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_depositor","type":"address"},{"indexed":false,"internalType":"enum IStabilityPoolEvents.Operation","name":"_operation","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"_depositLossSinceLastOperation","type":"uint256"},{"indexed":false,"internalType":"int256","name":"_depositChange","type":"int256"},{"indexed":false,"internalType":"uint256","name":"_yieldGainSinceLastOperation","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_yieldGainClaimed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_ethGainSinceLastOperation","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_ethGainClaimed","type":"uint256"}],"name":"DepositOperation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_depositor","type":"address"},{"indexed":false,"internalType":"uint256","name":"_newDeposit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_stashedColl","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_snapshotP","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_snapshotS","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_snapshotB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_snapshotScale","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_snapshotEpoch","type":"uint256"}],"name":"DepositUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"_currentEpoch","type":"uint128"}],"name":"EpochUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"EtherSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_P","type":"uint256"}],"name":"P_Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newPriceFeedAddress","type":"address"}],"name":"PriceFeedAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_S","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"_epoch","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"_scale","type":"uint128"}],"name":"S_Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"_currentScale","type":"uint128"}],"name":"ScaleUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newBalance","type":"uint256"}],"name":"StabilityPoolBoldBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newBalance","type":"uint256"}],"name":"StabilityPoolCollBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newTroveManagerAddress","type":"address"}],"name":"TroveManagerAddressChanged","type":"event"},{"inputs":[],"name":"NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"P","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SCALE_FACTOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activePool","outputs":[{"internalType":"contract IActivePool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"boldToken","outputs":[{"internalType":"contract IBoldToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAllCollGains","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentEpoch","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentScale","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositSnapshots","outputs":[{"internalType":"uint256","name":"S","type":"uint256"},{"internalType":"uint256","name":"P","type":"uint256"},{"internalType":"uint256","name":"B","type":"uint256"},{"internalType":"uint128","name":"scale","type":"uint128"},{"internalType":"uint128","name":"epoch","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deposits","outputs":[{"internalType":"uint256","name":"initialValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"","type":"uint128"},{"internalType":"uint128","name":"","type":"uint128"}],"name":"epochToScaleToB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"","type":"uint128"},{"internalType":"uint128","name":"","type":"uint128"}],"name":"epochToScaleToS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCollBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_depositor","type":"address"}],"name":"getCompoundedBoldDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_depositor","type":"address"}],"name":"getDepositorCollGain","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_depositor","type":"address"}],"name":"getDepositorYieldGain","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_depositor","type":"address"}],"name":"getDepositorYieldGainWithPending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntireSystemColl","outputs":[{"internalType":"uint256","name":"entireSystemColl","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntireSystemDebt","outputs":[{"internalType":"uint256","name":"entireSystemDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBoldDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getYieldGainsOwed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getYieldGainsPending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBoldLossError_Offset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBoldLossError_TotalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastCollError_Offset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastYieldError","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_debtToOffset","type":"uint256"},{"internalType":"uint256","name":"_collToAdd","type":"uint256"}],"name":"offset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_topUp","type":"uint256"},{"internalType":"bool","name":"_doClaim","type":"bool"}],"name":"provideToSP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stashedColl","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_boldYield","type":"uint256"}],"name":"triggerBoldRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"troveManager","outputs":[{"internalType":"contract ITroveManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_doClaim","type":"bool"}],"name":"withdrawFromSP","outputs":[],"stateMutability":"nonpayable","type":"function"}],
1180
1174
  "networks": {}
package/src/contracts.ts CHANGED
@@ -134,7 +134,6 @@ export const WstETHPriceFeedContractViem = createViemContractFromConfigFunc('Wst
134
134
  export const CompV3ViewContractViem = createViemContractFromConfigFunc('CompV3View');
135
135
  export const SparkViewContractViem = createViemContractFromConfigFunc('SparkView');
136
136
  export const SparkIncentiveDataProviderContractViem = createViemContractFromConfigFunc('SparkIncentiveDataProvider');
137
- export const EulerV2ViewContractViem = createViemContractFromConfigFunc('EulerV2View');
138
137
  export const CrvUSDViewContractViem = createViemContractFromConfigFunc('crvUSDView');
139
138
  export const CrvUSDFactoryContractViem = createViemContractFromConfigFunc('crvUSDFactory');
140
139
  export const LlamaLendViewContractViem = createViemContractFromConfigFunc('LlamaLendView');
@@ -17,6 +17,7 @@ import {
17
17
  AaveV4UsedReserveAssets,
18
18
  EthereumProvider,
19
19
  IncentiveData,
20
+ IncentiveSide,
20
21
  LeverageType,
21
22
  NetworkNumber,
22
23
  } from '../../types';
@@ -93,14 +94,26 @@ export const calcUserRiskPremiumBps = (usedAssets: AaveV4UsedReserveAssets, asse
93
94
 
94
95
  /**
95
96
  * `spokeXIncentives`/`hubXIncentives` are each the intrinsic `base` list with at most one Merkl
96
- * reward appended (see attachAaveV4MerklIncentives). Both scopes can apply to the same position at
97
- * once (spoke-specific + hub-wide), so the full applicable set is base + whatever each scope appended.
97
+ * reward appended (see attachAaveV4MerklIncentives). Merkl regularly publishes the same reward
98
+ * stream at both scopes (a spoke campaign and a hub campaign covering the same borrows, e.g. USDC
99
+ * borrowed from the Prime Hub via the Bluechip Spoke), so the scopes must never be summed — the
100
+ * more specific spoke reward wins and the hub reward only applies when no spoke campaign exists,
101
+ * which is also what every per-asset APY badge (and Aave's own UI) shows.
98
102
  */
99
- const mergeScopedIncentives = (base: IncentiveData[] = [], spokeScoped?: IncentiveData[], hubScoped?: IncentiveData[]): IncentiveData[] => [
100
- ...base,
101
- ...(spokeScoped ? spokeScoped.slice(base.length) : []),
102
- ...(hubScoped ? hubScoped.slice(base.length) : []),
103
- ];
103
+ const mergeScopedIncentives = (base: IncentiveData[] = [], spokeScoped?: IncentiveData[], hubScoped?: IncentiveData[]): IncentiveData[] => {
104
+ const spokeExtras = spokeScoped ? spokeScoped.slice(base.length) : [];
105
+ const hubExtras = hubScoped ? hubScoped.slice(base.length) : [];
106
+ return [...base, ...(spokeExtras.length ? spokeExtras : hubExtras)];
107
+ };
108
+
109
+ /**
110
+ * The incentives that actually accrue to a position on this reserve for the given side: the
111
+ * intrinsic (staking) incentives plus the single applicable Merkl reward. Display surfaces should
112
+ * use this rather than picking a scoped list directly, so badges always match the net APY math.
113
+ */
114
+ export const getAaveV4ApplicableIncentives = (assetData: AaveV4ReserveAssetData, side: IncentiveSide): IncentiveData[] => (side === IncentiveSide.Supply
115
+ ? mergeScopedIncentives(assetData.supplyIncentives, assetData.spokeSupplyIncentives, assetData.hubSupplyIncentives)
116
+ : mergeScopedIncentives(assetData.borrowIncentives, assetData.spokeBorrowIncentives, assetData.hubBorrowIncentives));
104
117
 
105
118
  export const calculateNetApyAaveV4 = ({
106
119
  usedAssets,
@@ -123,7 +136,7 @@ export const calculateNetApyAaveV4 = ({
123
136
  const supplyInterest = calculateInterestEarned(amount, assetData.supplyRate, 'year', true);
124
137
  acc.supplyInterest = new Dec(acc.supplyInterest).add(supplyInterest.toString()).toString();
125
138
 
126
- const supplyIncentives = mergeScopedIncentives(assetData.supplyIncentives, assetData.spokeSupplyIncentives, assetData.hubSupplyIncentives);
139
+ const supplyIncentives = getAaveV4ApplicableIncentives(assetData, IncentiveSide.Supply);
127
140
  for (const supplyIncentive of supplyIncentives) {
128
141
  const incentiveInterest = calculateInterestEarned(amount, supplyIncentive.apy, 'year', true);
129
142
  acc.incentiveUsd = new Dec(acc.incentiveUsd).add(incentiveInterest).toString();
@@ -141,7 +154,7 @@ export const calculateNetApyAaveV4 = ({
141
154
  const borrowInterest = calculateInterestEarned(amount, userBorrowRate, 'year', true);
142
155
  acc.borrowInterest = new Dec(acc.borrowInterest).sub(borrowInterest.toString()).toString();
143
156
 
144
- const borrowIncentives = mergeScopedIncentives(assetData.borrowIncentives, assetData.spokeBorrowIncentives, assetData.hubBorrowIncentives);
157
+ const borrowIncentives = getAaveV4ApplicableIncentives(assetData, IncentiveSide.Borrow);
145
158
  for (const borrowIncentive of borrowIncentives) {
146
159
  const incentiveInterest = calculateInterestEarned(amount, borrowIncentive.apy, 'year', true);
147
160
  acc.incentiveUsd = new Dec(acc.incentiveUsd).add(incentiveInterest).toString();
@@ -6,6 +6,5 @@ export * as makerHelpers from './makerHelpers';
6
6
  export * as morphoBlueHelpers from './morphoBlueHelpers';
7
7
  export * as llamaLendHelpers from './llamaLendHelpers';
8
8
  export * as liquityV2Helpers from './liquityV2Helpers';
9
- export * as eulerV2Helpers from './eulerHelpers';
10
9
  export * as fluidHelpers from './fluidHelpers';
11
10
  export * as aaveV4Helpers from './aaveV4Helpers';
package/src/index.ts CHANGED
@@ -18,7 +18,6 @@ import * as helpers from './helpers';
18
18
  import * as exchange from './exchange';
19
19
  import * as morphoBlue from './morphoBlue';
20
20
  import * as llamaLend from './llamaLend';
21
- import * as eulerV2 from './eulerV2';
22
21
  import * as portfolio from './portfolio';
23
22
  import * as claiming from './claiming';
24
23
  import * as savings from './savings';
@@ -43,7 +42,6 @@ export {
43
42
  helpers,
44
43
  morphoBlue,
45
44
  llamaLend,
46
- eulerV2,
47
45
  fluid,
48
46
  portfolio,
49
47
  claiming,
@@ -19,7 +19,6 @@ export { CrvUsdMarkets } from './curveUsd';
19
19
  export { MorphoBlueMarkets, findMorphoBlueMarket } from './morphoBlue';
20
20
  export { LlamaLendMarkets } from './llamaLend';
21
21
  export { LiquityV2Markets, findLiquityV2MarketByAddress } from './liquityV2';
22
- export { EulerV2Markets } from './euler';
23
22
  export {
24
23
  FluidMarkets,
25
24
  getFluidVersionsDataForNetwork,
@@ -35,7 +35,7 @@ const hasAnyBalance = (balances: PositionBalances): boolean => (
35
35
  * Uses one shared, multicall-batched viem client (same pattern as getPortfolioData) so all
36
36
  * per-market reads collapse into a handful of RPC round trips.
37
37
  *
38
- * Not covered: Maker, Liquity, Liquity V2, Fluid, Euler V2 — these already expose cheap,
38
+ * Not covered: Maker, Liquity, Liquity V2, Fluid — these already expose cheap,
39
39
  * user-scoped discovery entry points elsewhere in the SDK (e.g. _getUserCdps, _getUserPositionsPortfolio).
40
40
  */
41
41
  export async function getUserPositionsExistence(
@@ -5,7 +5,6 @@ import {
5
5
  AaveV4Spokes,
6
6
  CompoundMarkets,
7
7
  CrvUsdMarkets,
8
- EulerV2Markets,
9
8
  LiquityV2Markets,
10
9
  LlamaLendMarkets,
11
10
  MorphoBlueMarkets,
@@ -22,7 +21,6 @@ import {
22
21
  CompoundV3MarketsData,
23
22
  CompoundVersions,
24
23
  CrvUSDGlobalMarketData,
25
- EulerV2FullMarketData,
26
24
  LiquityV2MarketData,
27
25
  LlamaLendGlobalMarketData,
28
26
  MorphoBlueMarketInfo,
@@ -31,7 +29,6 @@ import {
31
29
  } from '../types';
32
30
  import { _getCompoundV3AccountData, _getCompoundV3MarketsData } from '../compoundV3';
33
31
  import { _getSparkAccountData, _getSparkMarketsData } from '../spark';
34
- import { _getEulerV2AccountData, _getEulerV2MarketsData } from '../eulerV2';
35
32
  import { _getCurveUsdGlobalData, _getCurveUsdUserData } from '../curveUsd';
36
33
  import { _getLlamaLendGlobalData, _getLlamaLendUserData } from '../llamaLend';
37
34
  import { _getAaveV3AccountData, _getAaveV3MarketData, getStakeAaveData } from '../aaveV3';
@@ -43,7 +40,6 @@ import { getViemProvider } from '../services/viem';
43
40
  import { _getLiquityTroveInfo, getLiquityStakingData } from '../liquity';
44
41
  import { _getLiquityV2MarketData, getLiquitySAndYBold, getLiquityV2Staking } from '../liquityV2';
45
42
  import { _getAllUserEarnPositionsWithFTokens, _getUserPositionsPortfolio } from '../fluid';
46
- import { getEulerV2SubAccounts } from '../helpers/eulerHelpers';
47
43
  import { getUmbrellaData } from '../umbrella';
48
44
  import { getMeritUnclaimedRewards, getUnclaimedRewardsForAllMarkets } from '../claiming/aaveV3';
49
45
  import { getCompoundV3Rewards } from '../claiming/compV3';
@@ -65,7 +61,6 @@ export async function getPortfolioData(provider: EthereumProvider, network: Netw
65
61
  const morphoMarkets = Object.values(MorphoBlueMarkets(network)).filter((market) => market.chainIds.includes(network));
66
62
  const compoundV3Markets = Object.values(CompoundMarkets(network)).filter((market) => market.chainIds.includes(network) && market.value !== CompoundVersions.CompoundV2);
67
63
  const sparkMarkets = Object.values(SparkMarkets(network)).filter((market) => market.chainIds.includes(network));
68
- const eulerV2Markets = Object.values(EulerV2Markets(network)).filter((market) => market.chainIds.includes(network));
69
64
  const aaveV3Markets = [AaveVersions.AaveV3, AaveVersions.AaveV3Lido, AaveVersions.AaveV3Etherfi].map((version) => AaveMarkets(network)[version]).filter((market) => market.chainIds.includes(network));
70
65
  const aaveV2Markets = [AaveVersions.AaveV2].map((version) => AaveMarkets(network)[version]).filter((market) => market.chainIds.includes(network));
71
66
  const compoundV2Markets = [CompoundVersions.CompoundV2].map((version) => CompoundMarkets(network)[version]).filter((market) => market.chainIds.includes(network));
@@ -83,7 +78,6 @@ export async function getPortfolioData(provider: EthereumProvider, network: Netw
83
78
  const morphoMarketsData: Record<string, MorphoBlueMarketInfo> = {};
84
79
  const compoundV3MarketsData: Record<string, CompoundV3MarketsData> = {};
85
80
  const sparkMarketsData: Record<string, SparkMarketsData> = {};
86
- const eulerV2MarketsData: Record<string, EulerV2FullMarketData> = {};
87
81
  const aaveV3MarketsData: Record<string, AaveV3MarketData> = {};
88
82
  const makerCdps: Record<string, CdpInfo[]> = {};
89
83
  const aaveV2MarketsData: Record<string, AaveV2MarketData> = {};
@@ -97,7 +91,6 @@ export async function getPortfolioData(provider: EthereumProvider, network: Netw
97
91
  morphoMarketsData,
98
92
  compoundV3MarketsData,
99
93
  sparkMarketsData,
100
- eulerV2MarketsData,
101
94
  aaveV3MarketsData,
102
95
  aaveV2MarketsData,
103
96
  compoundV2MarketsData,
@@ -119,7 +112,6 @@ export async function getPortfolioData(provider: EthereumProvider, network: Netw
119
112
  morphoBlue: {},
120
113
  compoundV3: {},
121
114
  spark: {},
122
- eulerV2: {},
123
115
  maker: {},
124
116
  aaveV2: {},
125
117
  compoundV2: {},
@@ -175,10 +167,6 @@ export async function getPortfolioData(provider: EthereumProvider, network: Netw
175
167
  const marketData = await _getSparkMarketsData(client, network, market);
176
168
  sparkMarketsData[market.value] = marketData;
177
169
  }),
178
- ...eulerV2Markets.map(async (market) => {
179
- const marketData = await _getEulerV2MarketsData(client, network, market);
180
- eulerV2MarketsData[market.value] = marketData;
181
- }),
182
170
  ...aaveV3Markets.map(async (market) => {
183
171
  const marketData = await _getAaveV3MarketData(client, network, market);
184
172
  aaveV3MarketsData[market.value] = marketData;
@@ -503,27 +491,6 @@ export async function getPortfolioData(provider: EthereumProvider, network: Netw
503
491
  positions[address.toLowerCase() as EthAddress].spark[market.value] = { error: `Error fetching Spark account data for address ${address} on market ${market.value}`, data: null };
504
492
  }
505
493
  })).flat(),
506
- ...eulerV2Markets.map((market) => addresses.map((address) => {
507
- const eulerV2SubAccounts = getEulerV2SubAccounts(address);
508
- const eulerV2Addresses = [address, ...eulerV2SubAccounts];
509
- return Promise.all(eulerV2Addresses.map(async (eulerAddress) => {
510
- try {
511
- const accData = await _getEulerV2AccountData(client, network, eulerAddress, eulerAddress, { selectedMarket: market, ...eulerV2MarketsData[market.value] });
512
- if (new Dec(accData.suppliedUsd).gt(0) || new Dec(accData.borrowedUsd).gt(0)) {
513
- if (!positions[address.toLowerCase() as EthAddress].eulerV2[market.value]) {
514
- positions[address.toLowerCase() as EthAddress].eulerV2[market.value] = {};
515
- }
516
- positions[address.toLowerCase() as EthAddress].eulerV2[market.value]![eulerAddress.toLowerCase() as EthAddress] = { error: '', data: accData };
517
- }
518
- } catch (error) {
519
- console.error(`Error fetching EulerV2 account data for address ${eulerAddress} on market ${market.value}:`, error);
520
- if (!positions[address.toLowerCase() as EthAddress].eulerV2[market.value]) {
521
- positions[address.toLowerCase() as EthAddress].eulerV2[market.value] = {};
522
- }
523
- positions[address.toLowerCase() as EthAddress].eulerV2[market.value]![eulerAddress.toLowerCase() as EthAddress] = { error: `Error fetching EulerV2 account data for address ${eulerAddress} on market ${market.value}`, data: null };
524
- }
525
- }));
526
- }).flat()).flat(),
527
494
  ...addresses.map(async (address) => makerCdps[address.toLowerCase() as EthAddress]?.map(async (cdpInfo) => {
528
495
  try {
529
496
  const cdpData = await _getMakerCdpData(client, network, cdpInfo);
@@ -20,6 +20,8 @@ export const isAddress = (address: string) => typeof address === 'string' && (ne
20
20
 
21
21
  export const compareAddresses = (addr1 = '', addr2 = '') => addr1.toLowerCase() === addr2.toLowerCase();
22
22
 
23
+ export const shortenAddress = (address = '', start = 8, end = 4) => `${address.substring(0, start)}...${address.slice(-end)}`;
24
+
23
25
  export const getWeiAmountForDecimals = (amount: string | number, decimals: number) => new Dec(amount).mul(10 ** decimals).floor().toString();
24
26
 
25
27
  export const getEthAmountForDecimals = (amount: string | number, decimals: string | number) => new Dec(amount).div(10 ** +decimals).toString();
@@ -8,7 +8,6 @@ import {
8
8
  import { BLOCKS_IN_A_YEAR } from '../constants';
9
9
  import { DEFAULT_TIMEOUT } from '../services/utils';
10
10
  import { EligibilityMapping } from './eligibility';
11
- import { EulerV2UsedAsset } from '../types';
12
11
 
13
12
  const getSsrApy = async () => {
14
13
  try {
@@ -143,7 +142,7 @@ export const calculateNetApy = ({
143
142
  }: { usedAssets: MMUsedAssets, assetsData: MMAssetsData, optionalData?: any }) => {
144
143
  const sumValues = Object.values(usedAssets).reduce((_acc, usedAsset) => {
145
144
  const acc = { ..._acc };
146
- const assetData = assetsData[usedAsset.symbol] || assetsData[(usedAsset as EulerV2UsedAsset).vaultAddress?.toLowerCase() || ''];
145
+ const assetData = assetsData[usedAsset.symbol];
147
146
 
148
147
  if (usedAsset.isSupplied) {
149
148
  const amount = usedAsset.suppliedUsd;
@@ -52,6 +52,11 @@ export interface AaveV4SpokeInfo {
52
52
  value: AaveV4SpokesType,
53
53
  url: string,
54
54
  address: EthAddress,
55
+ /**
56
+ * Known hub addresses, used only to prefetch hub data in parallel with the spoke data.
57
+ * The on-chain reserves are the source of truth — hubs found there but missing here are
58
+ * fetched dynamically, so this list going stale can't break spoke loading.
59
+ */
55
60
  hubs: EthAddress[],
56
61
  }
57
62
 
@@ -3,6 +3,11 @@ export enum IncentiveKind {
3
3
  Reward = 'reward',
4
4
  }
5
5
 
6
+ export enum IncentiveSide {
7
+ Supply = 'supply',
8
+ Borrow = 'borrow',
9
+ }
10
+
6
11
  export enum IncentiveEligibilityId {
7
12
  AaveV3EthenaLiquidLeverage = '0x0dC599DBB180E64E42b87332FDeC3a551445ea44BORROW_BL',
8
13
  AaveV3ArbitrumEthSupply = '0x5d16261c6715a653248269861bbacf68a9774cde',
@@ -7,7 +7,6 @@ export * from './liquityV2';
7
7
  export * from './maker';
8
8
  export * from './morphoBlue';
9
9
  export * from './llamaLend';
10
- export * from './euler';
11
10
  export * from './fluid';
12
11
  export * from './portfolio';
13
12
  export * from './merit';
@@ -1,4 +1,4 @@
1
- import { EthAddress, IncentiveData } from './common';
1
+ import { EthAddress, IncentiveData, IncentiveSide } from './common';
2
2
 
3
3
  export enum OpportunityAction {
4
4
  LEND = 'LEND',
@@ -70,11 +70,11 @@ export type MerklOpportunity = {
70
70
  export type MerkleRewardInfo = { apy: string; rewardTokenSymbol: string, description: string, identifier: string };
71
71
  export type MerkleRewardMap = Record<EthAddress, { supply?: MerkleRewardInfo; borrow?: MerkleRewardInfo }>;
72
72
 
73
- export type AaveV4MerklScopedReward = { supply?: IncentiveData; borrow?: IncentiveData };
73
+ export type AaveV4MerklScopedReward = { [side in IncentiveSide]?: IncentiveData };
74
74
 
75
75
  /**
76
76
  * Aave V4 Merkl reward campaigns split by scope:
77
- * - `hub`: keyed by underlying token address (lowercase) — rewards for supplying to a hub
77
+ * - `hub`: keyed by `${hubAddress}_${underlyingAddress}` (both lowercase) — rewards for supplying/borrowing via a hub
78
78
  * - `spoke`: keyed by `${spokeAddress}_${underlyingAddress}` (both lowercase) — rewards for supplying/borrowing on a spoke
79
79
  */
80
80
  export type AaveV4MerklRewardMap = {
@@ -3,7 +3,6 @@ import { AaveV4AccountData, AaveV4SpokesType } from './aaveV4';
3
3
  import { EthAddress } from './common';
4
4
  import { CompoundV2PositionData, CompoundV3PositionData, CompoundVersions } from './compound';
5
5
  import { CrvUSDUserData, CrvUSDVersions } from './curveUsd';
6
- import { EulerV2PositionData, EulerV2Versions } from './euler';
7
6
  import { FluidVaultData } from './fluid';
8
7
  import { LiquityTroveInfo } from './liquity';
9
8
  import { LiquityV2TroveData, LiquityV2Versions } from './liquityV2';
@@ -30,9 +29,6 @@ export interface PortfolioPositionsDataForAddress {
30
29
  spark: {
31
30
  [key in SparkVersions]?: PortfolioProtocolData<SparkPositionData>;
32
31
  };
33
- eulerV2: {
34
- [key in EulerV2Versions]?: Record<EthAddress, PortfolioProtocolData<EulerV2PositionData>>;
35
- };
36
32
  maker: {
37
33
  [key: string]: PortfolioProtocolData<CdpData>;
38
34
  };
@@ -1,47 +0,0 @@
1
- import { Client } from 'viem';
2
- import { EulerV2AssetsData, EulerV2FullMarketData, EulerV2Market, EulerV2MarketInfoData, EulerV2PositionData, EthAddress, EthereumProvider, NetworkNumber } from '../types';
3
- export declare const EMPTY_USED_ASSET: {
4
- isSupplied: boolean;
5
- isBorrowed: boolean;
6
- supplied: string;
7
- suppliedUsd: string;
8
- borrowed: string;
9
- borrowedUsd: string;
10
- symbol: string;
11
- collateral: boolean;
12
- vaultAddress: string;
13
- };
14
- export declare const _getEulerV2MarketsData: (provider: Client, network: NetworkNumber, selectedMarket: EulerV2Market) => Promise<EulerV2FullMarketData>;
15
- export declare const getEulerV2MarketsData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: EulerV2Market) => Promise<EulerV2FullMarketData>;
16
- export declare const EMPTY_EULER_V2_DATA: {
17
- usedAssets: {};
18
- suppliedUsd: string;
19
- borrowedUsd: string;
20
- borrowLimitUsd: string;
21
- leftToBorrowUsd: string;
22
- ratio: string;
23
- minRatio: string;
24
- netApy: string;
25
- incentiveUsd: string;
26
- totalInterestUsd: string;
27
- isSubscribedToAutomation: boolean;
28
- automationResubscribeRequired: boolean;
29
- borrowVault: string;
30
- borrowAmountInUnit: string;
31
- inLockDownMode: boolean;
32
- inPermitDisabledMode: boolean;
33
- lastUpdated: number;
34
- hasBorrowInDifferentVault: boolean;
35
- addressSpaceTakenByAnotherAccount: boolean;
36
- exposure: string;
37
- };
38
- export declare const _getEulerV2AccountData: (provider: Client, network: NetworkNumber, addressForPosition: EthAddress, ownerAddress: EthAddress, extractedState: ({
39
- selectedMarket: EulerV2Market;
40
- assetsData: EulerV2AssetsData;
41
- marketData: EulerV2MarketInfoData;
42
- })) => Promise<EulerV2PositionData>;
43
- export declare const getEulerV2AccountData: (provider: EthereumProvider, network: NetworkNumber, addressForPosition: EthAddress, ownerAddress: EthAddress, extractedState: ({
44
- selectedMarket: EulerV2Market;
45
- assetsData: EulerV2AssetsData;
46
- marketData: EulerV2MarketInfoData;
47
- })) => Promise<EulerV2PositionData>;