@defisaver/positions-sdk 2.1.1 → 2.1.3

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 (129) hide show
  1. package/cjs/aaveV2/index.js +1 -0
  2. package/cjs/aaveV3/index.d.ts +12 -0
  3. package/cjs/aaveV3/index.js +93 -1
  4. package/cjs/claiming/aaveV3.d.ts +5 -0
  5. package/cjs/claiming/aaveV3.js +139 -0
  6. package/cjs/claiming/compV3.d.ts +15 -0
  7. package/cjs/claiming/compV3.js +34 -0
  8. package/cjs/claiming/index.d.ts +6 -0
  9. package/cjs/claiming/index.js +46 -0
  10. package/cjs/claiming/king.d.ts +4 -0
  11. package/cjs/claiming/king.js +72 -0
  12. package/cjs/claiming/morphoBlue.d.ts +5 -0
  13. package/cjs/claiming/morphoBlue.js +113 -0
  14. package/cjs/claiming/spark.d.ts +6 -0
  15. package/cjs/claiming/spark.js +188 -0
  16. package/cjs/config/contracts.d.ts +2681 -0
  17. package/cjs/config/contracts.js +103 -2
  18. package/cjs/constants/index.d.ts +4 -0
  19. package/cjs/constants/index.js +6 -2
  20. package/cjs/contracts.d.ts +3027 -23
  21. package/cjs/contracts.js +10 -1
  22. package/cjs/helpers/aaveHelpers/index.d.ts +4 -0
  23. package/cjs/helpers/aaveHelpers/index.js +25 -8
  24. package/cjs/helpers/morphoBlueHelpers/index.d.ts +1 -0
  25. package/cjs/helpers/morphoBlueHelpers/index.js +7 -1
  26. package/cjs/index.d.ts +2 -1
  27. package/cjs/index.js +3 -1
  28. package/cjs/liquity/index.d.ts +11 -0
  29. package/cjs/liquity/index.js +39 -1
  30. package/cjs/liquityV2/index.d.ts +35 -0
  31. package/cjs/liquityV2/index.js +142 -1
  32. package/cjs/morphoBlue/index.d.ts +5 -0
  33. package/cjs/morphoBlue/index.js +35 -0
  34. package/cjs/portfolio/index.d.ts +6 -1
  35. package/cjs/portfolio/index.js +293 -10
  36. package/cjs/services/utils.d.ts +5 -0
  37. package/cjs/services/utils.js +33 -1
  38. package/cjs/services/viem.d.ts +12 -12
  39. package/cjs/spark/index.js +1 -0
  40. package/cjs/staking/eligibility.d.ts +4 -2
  41. package/cjs/staking/eligibility.js +3 -4
  42. package/cjs/staking/staking.d.ts +2 -1
  43. package/cjs/staking/staking.js +3 -3
  44. package/cjs/types/claiming.d.ts +93 -0
  45. package/cjs/types/claiming.js +27 -0
  46. package/cjs/types/common.d.ts +1 -1
  47. package/cjs/types/common.js +1 -1
  48. package/cjs/umbrella/index.d.ts +5 -0
  49. package/cjs/umbrella/index.js +50 -0
  50. package/cjs/umbrella/umbrellaUtils.d.ts +22 -0
  51. package/cjs/umbrella/umbrellaUtils.js +34 -0
  52. package/esm/aaveV2/index.js +1 -0
  53. package/esm/aaveV3/index.d.ts +12 -0
  54. package/esm/aaveV3/index.js +91 -1
  55. package/esm/claiming/aaveV3.d.ts +5 -0
  56. package/esm/claiming/aaveV3.js +132 -0
  57. package/esm/claiming/compV3.d.ts +15 -0
  58. package/esm/claiming/compV3.js +30 -0
  59. package/esm/claiming/index.d.ts +6 -0
  60. package/esm/claiming/index.js +6 -0
  61. package/esm/claiming/king.d.ts +4 -0
  62. package/esm/claiming/king.js +64 -0
  63. package/esm/claiming/morphoBlue.d.ts +5 -0
  64. package/esm/claiming/morphoBlue.js +105 -0
  65. package/esm/claiming/spark.d.ts +6 -0
  66. package/esm/claiming/spark.js +179 -0
  67. package/esm/config/contracts.d.ts +2681 -0
  68. package/esm/config/contracts.js +102 -1
  69. package/esm/constants/index.d.ts +4 -0
  70. package/esm/constants/index.js +5 -1
  71. package/esm/contracts.d.ts +3027 -23
  72. package/esm/contracts.js +9 -0
  73. package/esm/helpers/aaveHelpers/index.d.ts +4 -0
  74. package/esm/helpers/aaveHelpers/index.js +23 -7
  75. package/esm/helpers/morphoBlueHelpers/index.d.ts +1 -0
  76. package/esm/helpers/morphoBlueHelpers/index.js +6 -1
  77. package/esm/index.d.ts +2 -1
  78. package/esm/index.js +2 -1
  79. package/esm/liquity/index.d.ts +11 -0
  80. package/esm/liquity/index.js +38 -1
  81. package/esm/liquityV2/index.d.ts +35 -0
  82. package/esm/liquityV2/index.js +142 -3
  83. package/esm/morphoBlue/index.d.ts +5 -0
  84. package/esm/morphoBlue/index.js +35 -1
  85. package/esm/portfolio/index.d.ts +6 -1
  86. package/esm/portfolio/index.js +298 -15
  87. package/esm/services/utils.d.ts +5 -0
  88. package/esm/services/utils.js +31 -0
  89. package/esm/services/viem.d.ts +12 -12
  90. package/esm/spark/index.js +1 -0
  91. package/esm/staking/eligibility.d.ts +4 -2
  92. package/esm/staking/eligibility.js +3 -4
  93. package/esm/staking/staking.d.ts +2 -1
  94. package/esm/staking/staking.js +3 -3
  95. package/esm/types/claiming.d.ts +93 -0
  96. package/esm/types/claiming.js +24 -0
  97. package/esm/types/common.d.ts +1 -1
  98. package/esm/types/common.js +1 -1
  99. package/esm/umbrella/index.d.ts +5 -0
  100. package/esm/umbrella/index.js +46 -0
  101. package/esm/umbrella/umbrellaUtils.d.ts +22 -0
  102. package/esm/umbrella/umbrellaUtils.js +28 -0
  103. package/package.json +1 -1
  104. package/src/aaveV2/index.ts +2 -1
  105. package/src/aaveV3/index.ts +100 -2
  106. package/src/claiming/aaveV3.ts +155 -0
  107. package/src/claiming/compV3.ts +23 -0
  108. package/src/claiming/index.ts +13 -0
  109. package/src/claiming/king.ts +66 -0
  110. package/src/claiming/morphoBlue.ts +119 -0
  111. package/src/claiming/spark.ts +226 -0
  112. package/src/config/contracts.ts +104 -4
  113. package/src/constants/index.ts +5 -1
  114. package/src/contracts.ts +14 -1
  115. package/src/helpers/aaveHelpers/index.ts +24 -7
  116. package/src/helpers/morphoBlueHelpers/index.ts +7 -2
  117. package/src/index.ts +2 -0
  118. package/src/liquity/index.ts +57 -2
  119. package/src/liquityV2/index.ts +244 -4
  120. package/src/morphoBlue/index.ts +40 -2
  121. package/src/portfolio/index.ts +300 -15
  122. package/src/services/utils.ts +37 -1
  123. package/src/spark/index.ts +2 -1
  124. package/src/staking/eligibility.ts +3 -4
  125. package/src/staking/staking.ts +4 -4
  126. package/src/types/claiming.ts +109 -0
  127. package/src/types/common.ts +1 -1
  128. package/src/umbrella/index.ts +70 -0
  129. package/src/umbrella/umbrellaUtils.ts +30 -0
@@ -0,0 +1,70 @@
1
+ import { Client } from 'viem';
2
+ import { AaveUmbrellaViewViem, AaveV3ViewContractViem } from '../contracts';
3
+ import { EthAddress, NetworkNumber } from '../types/common';
4
+ import { compareAddresses, convertHybridArraysToObjects, getEthAmountForDecimals } from '../services/utils';
5
+ import { findMatching, tokenEntries } from './umbrellaUtils';
6
+
7
+ const umbrella = '0xD400fc38ED4732893174325693a63C30ee3881a8';
8
+ const aaveOracle = '0x54586bE62E3c3580375aE3723C145253060Ca0C2';
9
+
10
+ export const getUmbrellaData = async (provider: Client, network: NetworkNumber, address: EthAddress) => {
11
+ const umbrellaView = AaveUmbrellaViewViem(provider, network);
12
+ const aaveV3View = AaveV3ViewContractViem(provider, network);
13
+ const [tokensAggregatedData, additionalUmbrellaStakingData, userAggregatedData] = await Promise.all([
14
+ umbrellaView.read.getTokensAggregatedData([umbrella, aaveOracle]),
15
+ aaveV3View.read.getAdditionalUmbrellaStakingData([umbrella, address]),
16
+ umbrellaView.read.getUserAggregatedData([umbrella, address]),
17
+ ]);
18
+
19
+ return Object.fromEntries(
20
+ tokenEntries.map(([symbol, tokenAddr]) => {
21
+ // @ts-ignore
22
+ const fromTokens = convertHybridArraysToObjects(findMatching(tokensAggregatedData, tokenAddr));
23
+ // @ts-ignore
24
+ const fromUser = convertHybridArraysToObjects(findMatching(userAggregatedData, tokenAddr));
25
+ // @ts-ignore
26
+ const fromAdditionalData = convertHybridArraysToObjects(findMatching(additionalUmbrellaStakingData, tokenAddr));
27
+ const data = {
28
+ ...fromTokens,
29
+ ...fromUser,
30
+ ...fromAdditionalData,
31
+ account: {
32
+ stakeUserBalance: fromUser?.stakeUserBalance || '0',
33
+ rewardsTokenUserData: convertHybridArraysToObjects(fromUser?.rewardsTokenUserData) || [],
34
+ userCooldownAmount: fromAdditionalData?.userCooldownAmount || '0',
35
+ userEndOfCooldown: fromAdditionalData?.userEndOfCooldown || '0',
36
+ userWithdrawalWindow: fromAdditionalData?.userWithdrawalWindow || '0',
37
+ },
38
+ };
39
+
40
+ const stakeTokenData = data.stakeTokenData;
41
+
42
+ return [symbol, {
43
+ ...data,
44
+ stakeTokenData: { ...stakeTokenData, price: getEthAmountForDecimals(stakeTokenData.price, 8) },
45
+ stkTokenToWaTokenRate: getEthAmountForDecimals(data.stkTokenToWaTokenRate, stakeTokenData.decimals),
46
+ waTokenToATokenRate: getEthAmountForDecimals(data.waTokenToATokenRate, stakeTokenData.decimals),
47
+ totalShares: getEthAmountForDecimals(data.totalShares, stakeTokenData.decimals),
48
+ totalAssets: getEthAmountForDecimals(data.totalAssets, stakeTokenData.decimals),
49
+ targetLiquidity: getEthAmountForDecimals(data.targetLiquidity, stakeTokenData.decimals),
50
+ rewardsTokenData: data.rewardsTokenData.map((tokenData: { rewardTokenData: { price: string | number; }; }) => ({ ...tokenData, rewardTokenData: { ...tokenData.rewardTokenData, price: getEthAmountForDecimals(tokenData.rewardTokenData.price, 8) } })),
51
+ rewardsEmissionRates: data.rewardsEmissionRates.map((rate: string, i: number) => {
52
+ const tokenData = data.rewardsTokenData[i].rewardTokenData;
53
+ return getEthAmountForDecimals(rate, tokenData.decimals);
54
+ }),
55
+ account: {
56
+ ...data.account,
57
+ stakeUserBalance: getEthAmountForDecimals(data.account.stakeUserBalance, stakeTokenData.decimals),
58
+ userCooldownAmount: getEthAmountForDecimals(data.account.userCooldownAmount, stakeTokenData.decimals),
59
+ rewardsTokenUserData: data.account.rewardsTokenUserData.map((reward: any) => {
60
+ const tokenData = data.rewardsTokenData.find((tknData: { rewardTokenData: { token: string | undefined; }; }) => compareAddresses(tknData.rewardTokenData.token, reward.reward));
61
+ return ({
62
+ ...reward,
63
+ currentReward: getEthAmountForDecimals(reward.currentReward, tokenData.rewardTokenData.decimals),
64
+ });
65
+ }),
66
+ },
67
+ }];
68
+ }),
69
+ );
70
+ };
@@ -0,0 +1,30 @@
1
+ export enum UmbrellaStaking {
2
+ UmbrellaGHO = 'UmbrellaGHO',
3
+ UmbrellaUSDC = 'UmbrellaUSDC',
4
+ UmbrellaUSDT = 'UmbrellaUSDT',
5
+ UmbrellaETH = 'UmbrellaETH',
6
+ }
7
+
8
+ export const tokenMapping = {
9
+ [UmbrellaStaking.UmbrellaUSDC]: '0x6bf183243FdD1e306ad2C4450BC7dcf6f0bf8Aa6',
10
+ [UmbrellaStaking.UmbrellaUSDT]: '0xA484Ab92fe32B143AEE7019fC1502b1dAA522D31',
11
+ [UmbrellaStaking.UmbrellaETH]: '0xaAFD07D53A7365D3e9fb6F3a3B09EC19676B73Ce',
12
+ [UmbrellaStaking.UmbrellaGHO]: '0x4f827A63755855cDf3e8f3bcD20265C833f15033',
13
+ } as const;
14
+
15
+ // ----- chat gpt code for result mapping ---------
16
+ export const normalize = (addr?: string) => addr?.toLowerCase?.() ?? '';
17
+
18
+ export const tokenEntries = Object.entries(tokenMapping).map(([symbol, address]) => [
19
+ symbol,
20
+ normalize(address),
21
+ ]);
22
+
23
+ // 👇 Define how to extract the token address from each source type
24
+ export const extractAddress = (item?: { stakeToken?: string, stkToken?: string, stakeTokenData?: { token?: string } }): string => normalize(item?.stakeToken
25
+ || item?.stkToken
26
+ || item?.stakeTokenData?.token,
27
+ );
28
+
29
+ // 👇 Utility to find the matching object in a dataset
30
+ export const findMatching = (dataset: any[], targetAddr: string) => dataset.find((item) => extractAddress(item) === targetAddr);