@defisaver/positions-sdk 2.1.7 → 2.1.9-dev-spark-1

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 (154) hide show
  1. package/.mocharc.json +4 -4
  2. package/.nvmrc +1 -1
  3. package/README.md +64 -64
  4. package/cjs/aaveV3/index.js +3 -3
  5. package/cjs/aaveV3/merit.js +3 -0
  6. package/cjs/aaveV3/merkl.d.ts +1 -1
  7. package/cjs/config/contracts.d.ts +20 -0
  8. package/cjs/config/contracts.js +20 -0
  9. package/cjs/fluid/index.js +40 -12
  10. package/cjs/helpers/aaveHelpers/index.d.ts +1 -1
  11. package/cjs/helpers/aaveHelpers/index.js +6 -4
  12. package/cjs/helpers/morphoBlueHelpers/index.d.ts +1 -1
  13. package/cjs/helpers/morphoBlueHelpers/index.js +66 -66
  14. package/cjs/helpers/sparkHelpers/index.d.ts +4 -4
  15. package/cjs/helpers/sparkHelpers/index.js +12 -12
  16. package/cjs/markets/aave/index.js +1 -1
  17. package/cjs/markets/aave/marketAssets.d.ts +4 -0
  18. package/cjs/markets/aave/marketAssets.js +5 -1
  19. package/cjs/markets/compound/index.js +11 -0
  20. package/cjs/markets/compound/marketsAssets.d.ts +7 -0
  21. package/cjs/markets/compound/marketsAssets.js +7 -0
  22. package/cjs/markets/fluid/index.d.ts +4 -0
  23. package/cjs/markets/fluid/index.js +4 -0
  24. package/cjs/markets/spark/marketAssets.d.ts +1 -0
  25. package/cjs/markets/spark/marketAssets.js +1 -0
  26. package/cjs/portfolio/index.js +1 -1
  27. package/cjs/services/utils.d.ts +8 -4
  28. package/cjs/services/utils.js +30 -10
  29. package/cjs/services/viem.d.ts +54 -15
  30. package/cjs/services/viem.js +2 -0
  31. package/cjs/spark/index.d.ts +3 -1
  32. package/cjs/spark/index.js +24 -14
  33. package/cjs/staking/eligibility.js +1 -6
  34. package/cjs/types/common.d.ts +4 -2
  35. package/cjs/types/common.js +2 -0
  36. package/cjs/types/fluid.d.ts +7 -3
  37. package/cjs/types/fluid.js +4 -0
  38. package/cjs/types/spark.d.ts +3 -1
  39. package/esm/aaveV3/index.js +4 -4
  40. package/esm/aaveV3/merit.js +3 -0
  41. package/esm/aaveV3/merkl.d.ts +1 -1
  42. package/esm/config/contracts.d.ts +20 -0
  43. package/esm/config/contracts.js +20 -0
  44. package/esm/fluid/index.js +40 -12
  45. package/esm/helpers/aaveHelpers/index.d.ts +1 -1
  46. package/esm/helpers/aaveHelpers/index.js +7 -5
  47. package/esm/helpers/morphoBlueHelpers/index.d.ts +1 -1
  48. package/esm/helpers/morphoBlueHelpers/index.js +66 -66
  49. package/esm/helpers/sparkHelpers/index.d.ts +4 -4
  50. package/esm/helpers/sparkHelpers/index.js +13 -13
  51. package/esm/markets/aave/index.js +1 -1
  52. package/esm/markets/aave/marketAssets.d.ts +4 -0
  53. package/esm/markets/aave/marketAssets.js +4 -0
  54. package/esm/markets/compound/index.js +11 -0
  55. package/esm/markets/compound/marketsAssets.d.ts +7 -0
  56. package/esm/markets/compound/marketsAssets.js +7 -0
  57. package/esm/markets/fluid/index.d.ts +4 -0
  58. package/esm/markets/fluid/index.js +4 -0
  59. package/esm/markets/spark/marketAssets.d.ts +1 -0
  60. package/esm/markets/spark/marketAssets.js +1 -0
  61. package/esm/portfolio/index.js +1 -1
  62. package/esm/services/utils.d.ts +8 -4
  63. package/esm/services/utils.js +21 -5
  64. package/esm/services/viem.d.ts +54 -15
  65. package/esm/services/viem.js +3 -1
  66. package/esm/spark/index.d.ts +3 -1
  67. package/esm/spark/index.js +25 -15
  68. package/esm/staking/eligibility.js +1 -6
  69. package/esm/types/common.d.ts +4 -2
  70. package/esm/types/common.js +2 -0
  71. package/esm/types/fluid.d.ts +7 -3
  72. package/esm/types/fluid.js +4 -0
  73. package/esm/types/spark.d.ts +3 -1
  74. package/package.json +47 -47
  75. package/src/aaveV2/index.ts +240 -240
  76. package/src/aaveV3/index.ts +614 -614
  77. package/src/aaveV3/merit.ts +97 -94
  78. package/src/aaveV3/merkl.ts +74 -74
  79. package/src/claiming/aaveV3.ts +154 -154
  80. package/src/claiming/compV3.ts +22 -22
  81. package/src/claiming/index.ts +12 -12
  82. package/src/claiming/king.ts +66 -66
  83. package/src/claiming/morphoBlue.ts +118 -118
  84. package/src/claiming/spark.ts +225 -225
  85. package/src/compoundV2/index.ts +244 -244
  86. package/src/compoundV3/index.ts +274 -274
  87. package/src/config/contracts.ts +1251 -1231
  88. package/src/constants/index.ts +10 -10
  89. package/src/contracts.ts +120 -120
  90. package/src/curveUsd/index.ts +254 -254
  91. package/src/eulerV2/index.ts +324 -324
  92. package/src/exchange/index.ts +25 -25
  93. package/src/fluid/index.ts +1668 -1638
  94. package/src/helpers/aaveHelpers/index.ts +187 -185
  95. package/src/helpers/compoundHelpers/index.ts +283 -283
  96. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  97. package/src/helpers/eulerHelpers/index.ts +222 -222
  98. package/src/helpers/fluidHelpers/index.ts +326 -326
  99. package/src/helpers/index.ts +10 -10
  100. package/src/helpers/liquityV2Helpers/index.ts +82 -82
  101. package/src/helpers/llamaLendHelpers/index.ts +53 -53
  102. package/src/helpers/makerHelpers/index.ts +52 -52
  103. package/src/helpers/morphoBlueHelpers/index.ts +396 -396
  104. package/src/helpers/sparkHelpers/index.ts +158 -155
  105. package/src/index.ts +47 -47
  106. package/src/liquity/index.ts +159 -159
  107. package/src/liquityV2/index.ts +657 -657
  108. package/src/llamaLend/index.ts +305 -305
  109. package/src/maker/index.ts +223 -223
  110. package/src/markets/aave/index.ts +116 -116
  111. package/src/markets/aave/marketAssets.ts +54 -49
  112. package/src/markets/compound/index.ts +238 -227
  113. package/src/markets/compound/marketsAssets.ts +97 -90
  114. package/src/markets/curveUsd/index.ts +69 -69
  115. package/src/markets/euler/index.ts +26 -26
  116. package/src/markets/fluid/index.ts +2460 -2456
  117. package/src/markets/index.ts +25 -25
  118. package/src/markets/liquityV2/index.ts +102 -102
  119. package/src/markets/llamaLend/contractAddresses.ts +141 -141
  120. package/src/markets/llamaLend/index.ts +235 -235
  121. package/src/markets/morphoBlue/index.ts +895 -895
  122. package/src/markets/spark/index.ts +29 -29
  123. package/src/markets/spark/marketAssets.ts +12 -11
  124. package/src/moneymarket/moneymarketCommonService.ts +80 -80
  125. package/src/morphoBlue/index.ts +274 -274
  126. package/src/portfolio/index.ts +570 -570
  127. package/src/services/priceService.ts +159 -159
  128. package/src/services/utils.ts +115 -99
  129. package/src/services/viem.ts +34 -32
  130. package/src/setup.ts +8 -8
  131. package/src/spark/index.ts +465 -445
  132. package/src/staking/eligibility.ts +53 -59
  133. package/src/staking/index.ts +1 -1
  134. package/src/staking/staking.ts +170 -170
  135. package/src/types/aave.ts +189 -189
  136. package/src/types/claiming.ts +109 -109
  137. package/src/types/common.ts +107 -105
  138. package/src/types/compound.ts +136 -136
  139. package/src/types/curveUsd.ts +123 -123
  140. package/src/types/euler.ts +175 -175
  141. package/src/types/fluid.ts +452 -448
  142. package/src/types/index.ts +13 -13
  143. package/src/types/liquity.ts +30 -30
  144. package/src/types/liquityV2.ts +126 -126
  145. package/src/types/llamaLend.ts +159 -159
  146. package/src/types/maker.ts +63 -63
  147. package/src/types/merit.ts +1 -1
  148. package/src/types/merkl.ts +70 -70
  149. package/src/types/morphoBlue.ts +194 -194
  150. package/src/types/portfolio.ts +60 -60
  151. package/src/types/spark.ts +136 -135
  152. package/src/umbrella/index.ts +69 -69
  153. package/src/umbrella/umbrellaUtils.ts +29 -29
  154. package/CLAUDE.md +0 -32
@@ -1,61 +1,61 @@
1
- import { AaveV2PositionData, AaveV3PositionData, AaveVersions } from './aave';
2
- import { EthAddress } from './common';
3
- import { CompoundV2PositionData, CompoundV3PositionData, CompoundVersions } from './compound';
4
- import { CrvUSDUserData, CrvUSDVersions } from './curveUsd';
5
- import { EulerV2PositionData, EulerV2Versions } from './euler';
6
- import { FluidVaultData } from './fluid';
7
- import { LiquityTroveInfo } from './liquity';
8
- import { LiquityV2TroveData, LiquityV2Versions } from './liquityV2';
9
- import { LlamaLendUserData, LlamaLendVersionsType } from './llamaLend';
10
- import { CdpData } from './maker';
11
- import { MorphoBluePositionData, MorphoBlueVersions } from './morphoBlue';
12
- import { SparkPositionData, SparkVersions } from './spark';
13
-
14
- export interface PortfolioProtocolData<T> {
15
- error: string,
16
- data: T | null,
17
- }
18
-
19
- export interface PortfolioPositionsDataForAddress {
20
- aaveV3: {
21
- [key in AaveVersions]?: PortfolioProtocolData<AaveV3PositionData>;
22
- };
23
- morphoBlue: {
24
- [key in MorphoBlueVersions]?: PortfolioProtocolData<MorphoBluePositionData>;
25
- };
26
- compoundV3: {
27
- [key in CompoundVersions]?: PortfolioProtocolData<CompoundV3PositionData>;
28
- };
29
- spark: {
30
- [key in SparkVersions]?: PortfolioProtocolData<SparkPositionData>;
31
- };
32
- eulerV2: {
33
- [key in EulerV2Versions]?: Record<EthAddress, PortfolioProtocolData<EulerV2PositionData>>;
34
- };
35
- maker: {
36
- [key: string]: PortfolioProtocolData<CdpData>;
37
- };
38
- aaveV2: {
39
- [key in AaveVersions]?: PortfolioProtocolData<AaveV2PositionData>;
40
- };
41
- compoundV2: {
42
- [key in CompoundVersions]?: PortfolioProtocolData<CompoundV2PositionData>;
43
- };
44
- liquity: PortfolioProtocolData<LiquityTroveInfo> | {};
45
- crvUsd: {
46
- [key in CrvUSDVersions]?: PortfolioProtocolData<CrvUSDUserData>;
47
- };
48
- llamaLend: {
49
- [key in LlamaLendVersionsType]?: PortfolioProtocolData<LlamaLendUserData>;
50
- };
51
- fluid: {
52
- error: string;
53
- data: {
54
- [key: string]: FluidVaultData;
55
- };
56
- };
57
- }
58
-
59
- export interface PortfolioPositionsData {
60
- [key: EthAddress]: PortfolioPositionsDataForAddress;
1
+ import { AaveV2PositionData, AaveV3PositionData, AaveVersions } from './aave';
2
+ import { EthAddress } from './common';
3
+ import { CompoundV2PositionData, CompoundV3PositionData, CompoundVersions } from './compound';
4
+ import { CrvUSDUserData, CrvUSDVersions } from './curveUsd';
5
+ import { EulerV2PositionData, EulerV2Versions } from './euler';
6
+ import { FluidVaultData } from './fluid';
7
+ import { LiquityTroveInfo } from './liquity';
8
+ import { LiquityV2TroveData, LiquityV2Versions } from './liquityV2';
9
+ import { LlamaLendUserData, LlamaLendVersionsType } from './llamaLend';
10
+ import { CdpData } from './maker';
11
+ import { MorphoBluePositionData, MorphoBlueVersions } from './morphoBlue';
12
+ import { SparkPositionData, SparkVersions } from './spark';
13
+
14
+ export interface PortfolioProtocolData<T> {
15
+ error: string,
16
+ data: T | null,
17
+ }
18
+
19
+ export interface PortfolioPositionsDataForAddress {
20
+ aaveV3: {
21
+ [key in AaveVersions]?: PortfolioProtocolData<AaveV3PositionData>;
22
+ };
23
+ morphoBlue: {
24
+ [key in MorphoBlueVersions]?: PortfolioProtocolData<MorphoBluePositionData>;
25
+ };
26
+ compoundV3: {
27
+ [key in CompoundVersions]?: PortfolioProtocolData<CompoundV3PositionData>;
28
+ };
29
+ spark: {
30
+ [key in SparkVersions]?: PortfolioProtocolData<SparkPositionData>;
31
+ };
32
+ eulerV2: {
33
+ [key in EulerV2Versions]?: Record<EthAddress, PortfolioProtocolData<EulerV2PositionData>>;
34
+ };
35
+ maker: {
36
+ [key: string]: PortfolioProtocolData<CdpData>;
37
+ };
38
+ aaveV2: {
39
+ [key in AaveVersions]?: PortfolioProtocolData<AaveV2PositionData>;
40
+ };
41
+ compoundV2: {
42
+ [key in CompoundVersions]?: PortfolioProtocolData<CompoundV2PositionData>;
43
+ };
44
+ liquity: PortfolioProtocolData<LiquityTroveInfo> | {};
45
+ crvUsd: {
46
+ [key in CrvUSDVersions]?: PortfolioProtocolData<CrvUSDUserData>;
47
+ };
48
+ llamaLend: {
49
+ [key in LlamaLendVersionsType]?: PortfolioProtocolData<LlamaLendUserData>;
50
+ };
51
+ fluid: {
52
+ error: string;
53
+ data: {
54
+ [key: string]: FluidVaultData;
55
+ };
56
+ };
57
+ }
58
+
59
+ export interface PortfolioPositionsData {
60
+ [key: EthAddress]: PortfolioPositionsDataForAddress;
61
61
  }
@@ -1,135 +1,136 @@
1
- import {
2
- EthAddress,
3
- IncentiveData,
4
- MMAssetData, MMPositionData, MMUsedAsset, NetworkNumber,
5
- } from './common';
6
-
7
- export enum SparkVersions {
8
- SparkV1 = 'v1default',
9
- }
10
-
11
- export interface SparkEModeCategoryData {
12
- label: string,
13
- liquidationBonus: string,
14
- liquidationRatio: string,
15
- collateralFactor: string,
16
- priceSource: string,
17
- }
18
-
19
- export interface SparkEModeCategoryDataMapping {
20
- enteringTerms: boolean[],
21
- canEnterCategory: boolean,
22
- id: number,
23
- data: SparkEModeCategoryData,
24
- assets: string[],
25
- enabledData: {
26
- ratio: string,
27
- liqRatio: string,
28
- liqPercent: string,
29
- collRatio: string,
30
- }
31
- }
32
-
33
- export interface SparkMarketData {
34
- chainIds: NetworkNumber[],
35
- label: string,
36
- shortLabel: string,
37
- url: string,
38
- value: SparkVersions,
39
- assets: readonly string[],
40
- provider: '' | 'SparkPoolAddressesProvider',
41
- providerAddress: EthAddress,
42
- lendingPool: 'SparkLendingPool',
43
- lendingPoolAddress: EthAddress,
44
- protocolData: '' | 'SparkProtocolDataProvider',
45
- protocolDataAddress: EthAddress,
46
- subVersionLabel?: string
47
- // icon: Function,
48
- protocolName: string,
49
- disabled?: boolean,
50
- }
51
-
52
- export interface SparkAssetData extends MMAssetData {
53
- totalBorrowVar: string,
54
- sortIndex?: number,
55
- usageAsCollateralEnabled: boolean,
56
- isIsolated: boolean,
57
- eModeCategory: number,
58
- eModeCategoryData: SparkEModeCategoryData,
59
- liquidationRatio: string,
60
- }
61
-
62
- export interface SparkAssetsData {
63
- [token: string]: SparkAssetData,
64
- }
65
-
66
- export type SparkMarketsData = { assetsData: SparkAssetsData };
67
-
68
- export interface SparkUsedAsset extends MMUsedAsset {
69
- stableBorrowRate: string,
70
- borrowedStable: string,
71
- borrowedVariable: string,
72
- borrowedUsdStable: string,
73
- borrowedUsdVariable: string,
74
- stableLimit: string,
75
- variableLimit: string,
76
- limit: string,
77
- eModeCategory: number,
78
- }
79
-
80
- export interface SparkUsedAssets {
81
- [token: string]: SparkUsedAsset,
82
- }
83
-
84
- export interface SparkHelperCommon {
85
- usedAssets: SparkUsedAssets,
86
- eModeCategory: number,
87
- eModeCategories?: object,
88
- assetsData: SparkAssetsData,
89
- selectedMarket?: SparkMarketData,
90
- network?: NetworkNumber,
91
- }
92
-
93
- export interface SparkAggregatedPositionData {
94
- suppliedUsd: string,
95
- suppliedCollateralUsd: string,
96
- borrowedUsd: string,
97
- borrowLimitUsd: string,
98
- liquidationLimitUsd: string,
99
- leftToBorrowUsd: string,
100
- ratio: string,
101
- collRatio: string,
102
- netApy: string,
103
- incentiveUsd: string,
104
- totalInterestUsd: string,
105
- liqRatio: string,
106
- liqPercent: string,
107
- leveragedType: string,
108
- leveragedAsset?: string,
109
- leveragedLsdAssetRatio?: string,
110
- liquidationPrice?: string,
111
- minCollRatio: string,
112
- collLiquidationRatio: string,
113
- healthRatio: string;
114
- minHealthRatio: string;
115
- }
116
-
117
- export interface SparkPositionData extends MMPositionData {
118
- ratio: string,
119
- minRatio: string,
120
- collRatio: string,
121
- suppliedUsd: string,
122
- borrowedUsd: string,
123
- borrowLimitUsd: string,
124
- suppliedCollateralUsd: string,
125
- incentiveUsd: string,
126
- totalInterestUsd: string,
127
- isSubscribedToAutomation?: boolean,
128
- automationResubscribeRequired?: boolean,
129
- totalSupplied: string,
130
- usedAssets: SparkUsedAssets,
131
- eModeCategory: number,
132
- isInIsolationMode: boolean,
133
- isInSiloedMode: boolean,
134
- eModeCategories: { [key: number]: SparkEModeCategoryDataMapping },
135
- }
1
+ import { EModeCategoriesData } from './aave';
2
+ import {
3
+ EthAddress,
4
+ IncentiveData,
5
+ MMAssetData, MMPositionData, MMUsedAsset, NetworkNumber,
6
+ } from './common';
7
+
8
+ export enum SparkVersions {
9
+ SparkV1 = 'v1default',
10
+ }
11
+
12
+ export interface SparkEModeCategoryData {
13
+ label: string,
14
+ liquidationBonus: string,
15
+ liquidationRatio: string,
16
+ collateralFactor: string,
17
+ priceSource: string,
18
+ }
19
+
20
+ export interface SparkEModeCategoryDataMapping {
21
+ enteringTerms: boolean[],
22
+ canEnterCategory: boolean,
23
+ id: number,
24
+ data: SparkEModeCategoryData,
25
+ assets: string[],
26
+ enabledData: {
27
+ ratio: string,
28
+ liqRatio: string,
29
+ liqPercent: string,
30
+ collRatio: string,
31
+ }
32
+ }
33
+
34
+ export interface SparkMarketData {
35
+ chainIds: NetworkNumber[],
36
+ label: string,
37
+ shortLabel: string,
38
+ url: string,
39
+ value: SparkVersions,
40
+ assets: readonly string[],
41
+ provider: '' | 'SparkPoolAddressesProvider',
42
+ providerAddress: EthAddress,
43
+ lendingPool: 'SparkLendingPool',
44
+ lendingPoolAddress: EthAddress,
45
+ protocolData: '' | 'SparkProtocolDataProvider',
46
+ protocolDataAddress: EthAddress,
47
+ subVersionLabel?: string
48
+ // icon: Function,
49
+ protocolName: string,
50
+ disabled?: boolean,
51
+ }
52
+
53
+ export interface SparkAssetData extends MMAssetData {
54
+ totalBorrowVar: string,
55
+ sortIndex?: number,
56
+ usageAsCollateralEnabled: boolean,
57
+ isIsolated: boolean,
58
+ eModeCategory: number,
59
+ eModeCategoryData: SparkEModeCategoryData,
60
+ liquidationRatio: string,
61
+ }
62
+
63
+ export interface SparkAssetsData {
64
+ [token: string]: SparkAssetData,
65
+ }
66
+
67
+ export type SparkMarketsData = { assetsData: SparkAssetsData, eModeCategoriesData: EModeCategoriesData };
68
+
69
+ export interface SparkUsedAsset extends MMUsedAsset {
70
+ stableBorrowRate: string,
71
+ borrowedStable: string,
72
+ borrowedVariable: string,
73
+ borrowedUsdStable: string,
74
+ borrowedUsdVariable: string,
75
+ stableLimit: string,
76
+ variableLimit: string,
77
+ limit: string,
78
+ eModeCategory: number,
79
+ }
80
+
81
+ export interface SparkUsedAssets {
82
+ [token: string]: SparkUsedAsset,
83
+ }
84
+
85
+ export interface SparkHelperCommon {
86
+ usedAssets: SparkUsedAssets,
87
+ eModeCategory: number,
88
+ eModeCategoriesData?: EModeCategoriesData,
89
+ assetsData: SparkAssetsData,
90
+ selectedMarket?: SparkMarketData,
91
+ network?: NetworkNumber,
92
+ }
93
+
94
+ export interface SparkAggregatedPositionData {
95
+ suppliedUsd: string,
96
+ suppliedCollateralUsd: string,
97
+ borrowedUsd: string,
98
+ borrowLimitUsd: string,
99
+ liquidationLimitUsd: string,
100
+ leftToBorrowUsd: string,
101
+ ratio: string,
102
+ collRatio: string,
103
+ netApy: string,
104
+ incentiveUsd: string,
105
+ totalInterestUsd: string,
106
+ liqRatio: string,
107
+ liqPercent: string,
108
+ leveragedType: string,
109
+ leveragedAsset?: string,
110
+ leveragedLsdAssetRatio?: string,
111
+ liquidationPrice?: string,
112
+ minCollRatio: string,
113
+ collLiquidationRatio: string,
114
+ healthRatio: string;
115
+ minHealthRatio: string;
116
+ }
117
+
118
+ export interface SparkPositionData extends MMPositionData {
119
+ ratio: string,
120
+ minRatio: string,
121
+ collRatio: string,
122
+ suppliedUsd: string,
123
+ borrowedUsd: string,
124
+ borrowLimitUsd: string,
125
+ suppliedCollateralUsd: string,
126
+ incentiveUsd: string,
127
+ totalInterestUsd: string,
128
+ isSubscribedToAutomation?: boolean,
129
+ automationResubscribeRequired?: boolean,
130
+ totalSupplied: string,
131
+ usedAssets: SparkUsedAssets,
132
+ eModeCategory: number,
133
+ isInIsolationMode: boolean,
134
+ isInSiloedMode: boolean,
135
+ eModeCategories: { [key: number]: SparkEModeCategoryDataMapping },
136
+ }
@@ -1,70 +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
- );
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
70
  };
@@ -1,30 +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
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
30
  export const findMatching = (dataset: any[], targetAddr: string) => dataset.find((item) => extractAddress(item) === targetAddr);
package/CLAUDE.md DELETED
@@ -1,32 +0,0 @@
1
- # DeFiSaver Positions SDK
2
-
3
- TypeScript SDK for DeFi positions tracking and management.
4
-
5
- ## Commands
6
-
7
- ```bash
8
- # Development
9
- npm run dev # Watch mode compilation
10
- npm run build # Lint and build both CJS and ESM
11
- npm run build:cjs # Build CommonJS
12
- npm run build:esm # Build ES modules
13
-
14
- # Linting
15
- npm run lint # Lint and fix
16
- npm run lint-check # Lint without fixing
17
-
18
- # Testing
19
- npm run test # Run all tests
20
- npm run test-single # Run single test (use --name=filename)
21
- npm run test:debugger # Run tests with debugger
22
-
23
- # Versioning
24
- npm run version-bump # Commit and bump patch version
25
- ```
26
-
27
- ## Project Structure
28
-
29
- - `src/` - TypeScript source code
30
- - `tests/` - Test files
31
- - `esm/` - ES module build output
32
- - `cjs/` - CommonJS build output