@defisaver/positions-sdk 2.1.160-morpho-stakehouse-dev → 2.1.160-shifter-v2-dev

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 (133) hide show
  1. package/cjs/aaveV2/index.js +2 -0
  2. package/cjs/curveUsd/index.d.ts +5 -2
  3. package/cjs/curveUsd/index.js +30 -15
  4. package/cjs/fluid/index.d.ts +5 -0
  5. package/cjs/fluid/index.js +36 -1
  6. package/cjs/helpers/aaveHelpers/index.js +3 -0
  7. package/cjs/helpers/aaveV4Helpers/index.js +1 -0
  8. package/cjs/helpers/compoundHelpers/index.js +2 -0
  9. package/cjs/helpers/curveUsdHelpers/index.d.ts +3 -1
  10. package/cjs/helpers/curveUsdHelpers/index.js +16 -2
  11. package/cjs/helpers/fluidHelpers/index.js +1 -0
  12. package/cjs/helpers/liquityV2Helpers/index.js +1 -0
  13. package/cjs/helpers/llamaLendHelpers/index.js +2 -0
  14. package/cjs/helpers/makerHelpers/index.d.ts +1 -1
  15. package/cjs/helpers/makerHelpers/index.js +2 -2
  16. package/cjs/helpers/morphoBlueHelpers/index.js +2 -0
  17. package/cjs/helpers/morphoMidnightHelpers/index.js +2 -0
  18. package/cjs/helpers/sparkHelpers/index.js +1 -0
  19. package/cjs/liquity/index.js +16 -2
  20. package/cjs/maker/index.d.ts +7 -2
  21. package/cjs/maker/index.js +45 -12
  22. package/cjs/markets/index.d.ts +1 -0
  23. package/cjs/markets/index.js +3 -1
  24. package/cjs/markets/maker/index.d.ts +1 -0
  25. package/cjs/markets/maker/index.js +13 -0
  26. package/cjs/portfolio/index.d.ts +5 -1
  27. package/cjs/portfolio/index.js +274 -2
  28. package/cjs/savings/index.js +2 -5
  29. package/cjs/savings/morphoVaults/index.d.ts +1 -1
  30. package/cjs/savings/morphoVaults/index.js +18 -56
  31. package/cjs/savings/morphoVaults/options.d.ts +0 -2
  32. package/cjs/savings/morphoVaults/options.js +1 -61
  33. package/cjs/staking/staking.d.ts +20 -0
  34. package/cjs/staking/staking.js +19 -1
  35. package/cjs/types/aave.d.ts +2 -0
  36. package/cjs/types/aaveV4.d.ts +1 -0
  37. package/cjs/types/compound.d.ts +2 -0
  38. package/cjs/types/curveUsd.d.ts +6 -0
  39. package/cjs/types/fluid.d.ts +1 -0
  40. package/cjs/types/liquity.d.ts +4 -0
  41. package/cjs/types/liquityV2.d.ts +2 -0
  42. package/cjs/types/maker.d.ts +4 -0
  43. package/cjs/types/morphoBlue.d.ts +2 -0
  44. package/cjs/types/morphoMidnight.d.ts +1 -0
  45. package/cjs/types/portfolio.d.ts +26 -10
  46. package/cjs/types/savings/morphoVaults.d.ts +2 -10
  47. package/cjs/types/savings/morphoVaults.js +1 -9
  48. package/cjs/types/spark.d.ts +2 -0
  49. package/esm/aaveV2/index.js +2 -0
  50. package/esm/curveUsd/index.d.ts +5 -2
  51. package/esm/curveUsd/index.js +30 -15
  52. package/esm/fluid/index.d.ts +5 -0
  53. package/esm/fluid/index.js +33 -0
  54. package/esm/helpers/aaveHelpers/index.js +3 -0
  55. package/esm/helpers/aaveV4Helpers/index.js +1 -0
  56. package/esm/helpers/compoundHelpers/index.js +2 -0
  57. package/esm/helpers/curveUsdHelpers/index.d.ts +3 -1
  58. package/esm/helpers/curveUsdHelpers/index.js +16 -2
  59. package/esm/helpers/fluidHelpers/index.js +1 -0
  60. package/esm/helpers/liquityV2Helpers/index.js +1 -0
  61. package/esm/helpers/llamaLendHelpers/index.js +2 -0
  62. package/esm/helpers/makerHelpers/index.d.ts +1 -1
  63. package/esm/helpers/makerHelpers/index.js +2 -2
  64. package/esm/helpers/morphoBlueHelpers/index.js +2 -0
  65. package/esm/helpers/morphoMidnightHelpers/index.js +2 -0
  66. package/esm/helpers/sparkHelpers/index.js +1 -0
  67. package/esm/liquity/index.js +16 -2
  68. package/esm/maker/index.d.ts +7 -2
  69. package/esm/maker/index.js +44 -13
  70. package/esm/markets/index.d.ts +1 -0
  71. package/esm/markets/index.js +1 -0
  72. package/esm/markets/maker/index.d.ts +1 -0
  73. package/esm/markets/maker/index.js +10 -0
  74. package/esm/portfolio/index.d.ts +5 -1
  75. package/esm/portfolio/index.js +276 -5
  76. package/esm/savings/index.js +2 -5
  77. package/esm/savings/morphoVaults/index.d.ts +1 -1
  78. package/esm/savings/morphoVaults/index.js +19 -57
  79. package/esm/savings/morphoVaults/options.d.ts +0 -2
  80. package/esm/savings/morphoVaults/options.js +1 -61
  81. package/esm/staking/staking.d.ts +20 -0
  82. package/esm/staking/staking.js +17 -0
  83. package/esm/types/aave.d.ts +2 -0
  84. package/esm/types/aaveV4.d.ts +1 -0
  85. package/esm/types/compound.d.ts +2 -0
  86. package/esm/types/curveUsd.d.ts +6 -0
  87. package/esm/types/fluid.d.ts +1 -0
  88. package/esm/types/liquity.d.ts +4 -0
  89. package/esm/types/liquityV2.d.ts +2 -0
  90. package/esm/types/maker.d.ts +4 -0
  91. package/esm/types/morphoBlue.d.ts +2 -0
  92. package/esm/types/morphoMidnight.d.ts +1 -0
  93. package/esm/types/portfolio.d.ts +26 -10
  94. package/esm/types/savings/morphoVaults.d.ts +2 -10
  95. package/esm/types/savings/morphoVaults.js +0 -8
  96. package/esm/types/spark.d.ts +2 -0
  97. package/package.json +1 -1
  98. package/src/aaveV2/index.ts +2 -0
  99. package/src/curveUsd/index.ts +33 -16
  100. package/src/fluid/index.ts +40 -0
  101. package/src/helpers/aaveHelpers/index.ts +3 -0
  102. package/src/helpers/aaveV4Helpers/index.ts +1 -0
  103. package/src/helpers/compoundHelpers/index.ts +2 -0
  104. package/src/helpers/curveUsdHelpers/index.ts +23 -2
  105. package/src/helpers/fluidHelpers/index.ts +1 -0
  106. package/src/helpers/liquityV2Helpers/index.ts +1 -0
  107. package/src/helpers/llamaLendHelpers/index.ts +2 -0
  108. package/src/helpers/makerHelpers/index.ts +2 -1
  109. package/src/helpers/morphoBlueHelpers/index.ts +2 -0
  110. package/src/helpers/morphoMidnightHelpers/index.ts +2 -0
  111. package/src/helpers/sparkHelpers/index.ts +1 -0
  112. package/src/liquity/index.ts +17 -2
  113. package/src/maker/index.ts +77 -29
  114. package/src/markets/index.ts +2 -1
  115. package/src/markets/maker/index.ts +10 -0
  116. package/src/portfolio/index.ts +259 -4
  117. package/src/savings/index.ts +2 -5
  118. package/src/savings/morphoVaults/index.ts +21 -73
  119. package/src/savings/morphoVaults/options.ts +1 -67
  120. package/src/staking/staking.ts +28 -0
  121. package/src/types/aave.ts +3 -0
  122. package/src/types/aaveV4.ts +1 -0
  123. package/src/types/compound.ts +2 -0
  124. package/src/types/curveUsd.ts +7 -0
  125. package/src/types/fluid.ts +1 -0
  126. package/src/types/liquity.ts +6 -0
  127. package/src/types/liquityV2.ts +2 -0
  128. package/src/types/maker.ts +6 -0
  129. package/src/types/morphoBlue.ts +2 -0
  130. package/src/types/morphoMidnight.ts +1 -0
  131. package/src/types/portfolio.ts +31 -12
  132. package/src/types/savings/morphoVaults.ts +1 -11
  133. package/src/types/spark.ts +2 -0
@@ -1,14 +1,10 @@
1
- import {
2
- MorphoVault, MorphoVaultType, MorphoVaultVersion, NetworkNumber,
3
- } from '../../types';
1
+ import { MorphoVault, MorphoVaultType } from '../../types';
4
2
 
5
3
  export const MORPHO_VAULT_FLAGSHIP_ETH: MorphoVault = {
6
4
  type: MorphoVaultType.MorphoVaultFlagshipEth,
7
5
  name: 'Flagship ETH',
8
6
  address: '0x38989BBA00BDF8181F4082995b3DEAe96163aC5D',
9
7
  asset: 'WETH',
10
- network: NetworkNumber.Eth,
11
- version: MorphoVaultVersion.V1,
12
8
  deploymentBlock: 18927491,
13
9
  isLegacy: true,
14
10
  };
@@ -18,8 +14,6 @@ export const MORPHO_VAULT_GAUNTLET_USDC_CORE: MorphoVault = {
18
14
  name: 'Gauntlet USDC Core',
19
15
  address: '0x8eB67A509616cd6A7c1B3c8C21D48FF57df3d458',
20
16
  asset: 'USDC',
21
- network: NetworkNumber.Eth,
22
- version: MorphoVaultVersion.V1,
23
17
  deploymentBlock: 19777569,
24
18
  isLegacy: true,
25
19
  };
@@ -29,8 +23,6 @@ export const MORPHO_VAULT_GAUNTLET_USDC_PRIME: MorphoVault = {
29
23
  name: 'Gauntlet USDC Prime',
30
24
  address: '0xdd0f28e19C1780eb6396170735D45153D261490d',
31
25
  asset: 'USDC',
32
- network: NetworkNumber.Eth,
33
- version: MorphoVaultVersion.V1,
34
26
  deploymentBlock: 19777569,
35
27
  isLegacy: true,
36
28
  };
@@ -40,8 +32,6 @@ export const MORPHO_VAULT_RE7_WETH: MorphoVault = {
40
32
  name: 'RE7 WETH',
41
33
  address: '0x78Fc2c2eD1A4cDb5402365934aE5648aDAd094d0',
42
34
  asset: 'WETH',
43
- network: NetworkNumber.Eth,
44
- version: MorphoVaultVersion.V1,
45
35
  deploymentBlock: 19121118,
46
36
  isLegacy: true,
47
37
  };
@@ -51,8 +41,6 @@ export const MORPHO_VAULT_GAUNTLET_WETH_CORE: MorphoVault = {
51
41
  name: 'Gauntlet WETH Core',
52
42
  address: '0x4881Ef0BF6d2365D3dd6499ccd7532bcdBCE0658',
53
43
  asset: 'WETH',
54
- network: NetworkNumber.Eth,
55
- version: MorphoVaultVersion.V1,
56
44
  deploymentBlock: 19541126,
57
45
  isLegacy: true,
58
46
  };
@@ -62,8 +50,6 @@ export const MORPHO_VAULT_GAUNTLET_WETH_PRIME: MorphoVault = {
62
50
  name: 'Gauntlet WETH Prime',
63
51
  address: '0x2371e134e3455e0593363cBF89d3b6cf53740618',
64
52
  asset: 'WETH',
65
- network: NetworkNumber.Eth,
66
- version: MorphoVaultVersion.V1,
67
53
  deploymentBlock: 19372149,
68
54
  isLegacy: true,
69
55
  };
@@ -73,8 +59,6 @@ export const MORPHO_VAULT_BOOSTED_USDC: MorphoVault = {
73
59
  name: 'Boosted USDC',
74
60
  address: '0xd63070114470f685b75B74D60EEc7c1113d33a3D',
75
61
  asset: 'USDC',
76
- network: NetworkNumber.Eth,
77
- version: MorphoVaultVersion.V1,
78
62
  deploymentBlock: 20377233,
79
63
  isLegacy: true,
80
64
  };
@@ -84,8 +68,6 @@ export const MORPHO_VAULT_FLAGSHIP_USDT: MorphoVault = {
84
68
  name: 'Flagship USDT',
85
69
  address: '0x2C25f6C25770fFEC5959D34B94Bf898865e5D6b1',
86
70
  asset: 'USDT',
87
- network: NetworkNumber.Eth,
88
- version: MorphoVaultVersion.V1,
89
71
  deploymentBlock: 19127039,
90
72
  isLegacy: true,
91
73
  };
@@ -95,8 +77,6 @@ export const MORPHO_VAULT_GAUNTLET_USDA_CORE: MorphoVault = {
95
77
  name: 'Gauntlet USDA Core',
96
78
  address: '0x125D41A6e5dbf455cD9Df8F80BCC6fd172D52Cc6',
97
79
  asset: 'USDA',
98
- network: NetworkNumber.Eth,
99
- version: MorphoVaultVersion.V1,
100
80
  deploymentBlock: 19633608,
101
81
  isLegacy: true,
102
82
  };
@@ -106,8 +86,6 @@ export const MORPHO_VAULT_GAUNTLET_USDT_PRIME: MorphoVault = {
106
86
  name: 'Gauntlet USDT Prime',
107
87
  address: '0x8CB3649114051cA5119141a34C200D65dc0Faa73',
108
88
  asset: 'USDT',
109
- network: NetworkNumber.Eth,
110
- version: MorphoVaultVersion.V1,
111
89
  deploymentBlock: 19486541,
112
90
  isLegacy: true,
113
91
  };
@@ -117,8 +95,6 @@ export const MORPHO_VAULT_GAUNTLET_RESOLV_USDC: MorphoVault = {
117
95
  name: 'Gauntlet Resolv USDC',
118
96
  address: '0x132E6C9C33A62D7727cd359b1f51e5B566E485Eb',
119
97
  asset: 'USDC',
120
- network: NetworkNumber.Eth,
121
- version: MorphoVaultVersion.V1,
122
98
  deploymentBlock: 21487882,
123
99
  isLegacy: true,
124
100
  };
@@ -130,8 +106,6 @@ export const MORPHO_VAULT_STEAKHOUSE_USDT: MorphoVault = {
130
106
  name: 'Steakhouse USDT',
131
107
  address: '0xbEef047a543E45807105E51A8BBEFCc5950fcfBa',
132
108
  asset: 'USDT',
133
- network: NetworkNumber.Eth,
134
- version: MorphoVaultVersion.V1,
135
109
  deploymentBlock: 19043398,
136
110
  isLegacy: false,
137
111
  };
@@ -141,8 +115,6 @@ export const MORPHO_VAULT_STEAKHOUSE_USDC: MorphoVault = {
141
115
  name: 'Steakhouse USDC',
142
116
  address: '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB',
143
117
  asset: 'USDC',
144
- network: NetworkNumber.Eth,
145
- version: MorphoVaultVersion.V1,
146
118
  deploymentBlock: 18928285,
147
119
  isLegacy: false,
148
120
  };
@@ -152,8 +124,6 @@ export const MORPHO_VAULT_STEAKHOUSE_ETH: MorphoVault = {
152
124
  name: 'Steakhouse WETH',
153
125
  address: '0xBEEf050ecd6a16c4e7bfFbB52Ebba7846C4b8cD4',
154
126
  asset: 'WETH',
155
- network: NetworkNumber.Eth,
156
- version: MorphoVaultVersion.V1,
157
127
  deploymentBlock: 19380443,
158
128
  isLegacy: false,
159
129
  };
@@ -163,8 +133,6 @@ export const MORPHO_VAULT_STEAKHOUSE_PYUSD: MorphoVault = {
163
133
  name: 'Steakhouse PYUSD',
164
134
  address: '0xbEEF02e5E13584ab96848af90261f0C8Ee04722a',
165
135
  asset: 'PYUSD',
166
- network: NetworkNumber.Eth,
167
- version: MorphoVaultVersion.V1,
168
136
  deploymentBlock: 19043398,
169
137
  isLegacy: false,
170
138
  };
@@ -176,8 +144,6 @@ export const MORPHO_VAULT_SMOKEHOUSE_USDT: MorphoVault = {
176
144
  name: 'Smokehouse USDT',
177
145
  address: '0xA0804346780b4c2e3bE118ac957D1DB82F9d7484',
178
146
  asset: 'USDT',
179
- network: NetworkNumber.Eth,
180
- version: MorphoVaultVersion.V1,
181
147
  deploymentBlock: 21522238,
182
148
  isLegacy: false,
183
149
  };
@@ -187,8 +153,6 @@ export const MORPHO_VAULT_SMOKEHOUSE_USDC: MorphoVault = {
187
153
  name: 'Smokehouse USDC',
188
154
  address: '0xBEeFFF209270748ddd194831b3fa287a5386f5bC',
189
155
  asset: 'USDC',
190
- network: NetworkNumber.Eth,
191
- version: MorphoVaultVersion.V1,
192
156
  deploymentBlock: 21337719,
193
157
  isLegacy: false,
194
158
  };
@@ -198,36 +162,10 @@ export const MORPHO_VAULT_SMOKEHOUSE_DAI: MorphoVault = {
198
162
  name: 'Smokehouse DAI',
199
163
  address: '0xbeeFfF68CC520D68f82641EFF84330C631E2490E',
200
164
  asset: 'DAI',
201
- network: NetworkNumber.Eth,
202
- version: MorphoVaultVersion.V1,
203
165
  deploymentBlock: 21343808,
204
166
  isLegacy: false,
205
167
  };
206
168
 
207
- // Vault V2
208
-
209
- export const MORPHO_VAULT_GAUNTLET_USDG_PREMIUM: MorphoVault = {
210
- type: MorphoVaultType.MorphoVaultGauntletUSDGPremium,
211
- name: 'Gauntlet USDG Premium',
212
- address: '0x390c1bb01F3F627144a40617e287d4cE3D5aBCfa',
213
- asset: 'USDG',
214
- network: NetworkNumber.Arb,
215
- version: MorphoVaultVersion.V2,
216
- deploymentBlock: 510799903,
217
- isLegacy: false,
218
- };
219
-
220
- export const MORPHO_VAULT_STEAKHOUSE_USDG_PRO: MorphoVault = {
221
- type: MorphoVaultType.MorphoVaultSteakhouseUSDGPro,
222
- name: 'Steakhouse USDG Pro',
223
- address: '0xbeeFf72B77e7584a450E887125F25E8D8819016a',
224
- asset: 'USDG',
225
- network: NetworkNumber.Arb,
226
- version: MorphoVaultVersion.V2,
227
- deploymentBlock: 512247107,
228
- isLegacy: false,
229
- };
230
-
231
169
  export const MORPHO_VAULTS: Record<MorphoVaultType, MorphoVault> = {
232
170
  [MorphoVaultType.MorphoVaultFlagshipEth]: MORPHO_VAULT_FLAGSHIP_ETH,
233
171
  [MorphoVaultType.MorphoVaultGauntletUSDCCore]: MORPHO_VAULT_GAUNTLET_USDC_CORE,
@@ -251,10 +189,6 @@ export const MORPHO_VAULTS: Record<MorphoVaultType, MorphoVault> = {
251
189
  [MorphoVaultType.MorphoVaultSmokehouseUSDT]: MORPHO_VAULT_SMOKEHOUSE_USDT,
252
190
  [MorphoVaultType.MorphoVaultSmokehouseUSDC]: MORPHO_VAULT_SMOKEHOUSE_USDC,
253
191
  [MorphoVaultType.MorphoVaultSmokehouseDAI]: MORPHO_VAULT_SMOKEHOUSE_DAI,
254
-
255
- // Vault V2
256
- [MorphoVaultType.MorphoVaultGauntletUSDGPremium]: MORPHO_VAULT_GAUNTLET_USDG_PREMIUM,
257
- [MorphoVaultType.MorphoVaultSteakhouseUSDGPro]: MORPHO_VAULT_STEAKHOUSE_USDG_PRO,
258
192
  };
259
193
 
260
194
  export const getMorphoVault = (type: MorphoVaultType): MorphoVault => MORPHO_VAULTS[type];
@@ -137,6 +137,34 @@ export const calculateInterestEarned = (principal: string, interest: string, typ
137
137
  return (+principal * (((1 + (+interest / 100) / BLOCKS_IN_A_YEAR)) ** (BLOCKS_IN_A_YEAR * interval))) - +principal; // eslint-disable-line
138
138
  };
139
139
 
140
+ /**
141
+ * Net APY for positions that have a single known borrow rate (and optionally a single supply rate)
142
+ * instead of per-asset `assetsData` to feed into `calculateNetApy` (Maker, crvUSD, Liquity v1).
143
+ * All rates are yearly percentages that are already compounded. `incentives` are extra yields
144
+ * (e.g. the native staking yield of the collateral) applied to their own USD base and summed into `incentiveUsd`.
145
+ */
146
+ export const calculateNetApyFromRates = ({
147
+ suppliedUsd, borrowedUsd, supplyRate = '0', borrowRate = '0', incentives = [],
148
+ }: {
149
+ suppliedUsd: string,
150
+ borrowedUsd: string,
151
+ supplyRate?: string,
152
+ borrowRate?: string,
153
+ incentives?: { apy: string, amountUsd: string }[],
154
+ }) => {
155
+ const supplyInterest = new Dec(calculateInterestEarned(suppliedUsd, supplyRate, 'year', true));
156
+ const borrowInterest = new Dec(calculateInterestEarned(borrowedUsd, borrowRate, 'year', true));
157
+ const incentiveUsd = incentives
158
+ .reduce((acc, { apy, amountUsd }) => acc.add(calculateInterestEarned(amountUsd, apy, 'year', true)), new Dec(0))
159
+ .toString();
160
+
161
+ const totalInterestUsd = supplyInterest.sub(borrowInterest).add(incentiveUsd).toString();
162
+ const balance = new Dec(suppliedUsd).sub(borrowedUsd);
163
+ const netApy = balance.isZero() ? '0' : new Dec(totalInterestUsd).div(balance).times(100).toString();
164
+
165
+ return { netApy, totalInterestUsd, incentiveUsd };
166
+ };
167
+
140
168
  export const calculateNetApy = ({
141
169
  usedAssets, assetsData, optionalData,
142
170
  }: { usedAssets: MMUsedAssets, assetsData: MMAssetsData, optionalData?: any }) => {
package/src/types/aave.ts CHANGED
@@ -143,6 +143,8 @@ export interface AavePositionData extends MMPositionData {
143
143
  collRatio: string,
144
144
  // Safety ratio as evaluated by automation bots (LTV-0 collateral credited at LLTV - 5%). Aave v3 only.
145
145
  safetyRatioWithLtvZeroFallback?: string,
146
+ // Normalised safety ratio (100 = liquidation on every protocol). Aave v3: the LTV-0 fallback ratio, Aave v2: `ratio`.
147
+ safetyRatio?: string,
146
148
  suppliedUsd: string,
147
149
  borrowedUsd: string,
148
150
  borrowLimitUsd: string,
@@ -177,6 +179,7 @@ export interface AaveV3AggregatedPositionData {
177
179
  collRatio: string,
178
180
  borrowLimitWithLtvZeroFallbackUsd: string,
179
181
  safetyRatioWithLtvZeroFallback: string,
182
+ safetyRatio: string,
180
183
  netApy: string,
181
184
  incentiveUsd: string,
182
185
  totalInterestUsd: string,
@@ -183,6 +183,7 @@ export interface AaveV4AggregatedPositionData {
183
183
  leftToBorrowUsd: string,
184
184
  ratio: string,
185
185
  collRatio: string,
186
+ safetyRatio: string,
186
187
  liqRatio: string,
187
188
  liqPercent: string,
188
189
  leveragedType: LeverageType,
@@ -112,6 +112,7 @@ export interface CompoundAggregatedPositionData {
112
112
  leftToBorrowUsd: string,
113
113
  ratio: string,
114
114
  collRatio: string,
115
+ safetyRatio: string,
115
116
  netApy: string,
116
117
  incentiveUsd: string,
117
118
  totalInterestUsd: string,
@@ -132,6 +133,7 @@ export interface CompoundAggregatedPositionData {
132
133
  export interface CompoundPositionData extends MMPositionData {
133
134
  ratio: string,
134
135
  minRatio: string,
136
+ safetyRatio?: string,
135
137
  suppliedUsd: string,
136
138
  borrowedUsd: string,
137
139
  borrowLimitUsd: string,
@@ -80,6 +80,10 @@ export interface CrvUSDAggregatedPositionData {
80
80
  collFactor: string,
81
81
  leveragedType: LeverageType,
82
82
  exposure: string,
83
+ // Yearly net return (%) on the position's equity: market borrow rate on crvUSD debt vs native yield of staked collateral.
84
+ netApy: string,
85
+ totalInterestUsd: string,
86
+ incentiveUsd: string,
83
87
  leveragedAsset?: string,
84
88
  liquidationPrice?: string,
85
89
  }
@@ -123,4 +127,7 @@ export interface CrvUSDUserData {
123
127
  collateralPrice: string,
124
128
  collRatio: string,
125
129
  exposure: string,
130
+ netApy: string,
131
+ totalInterestUsd: string,
132
+ incentiveUsd: string,
126
133
  }
@@ -344,6 +344,7 @@ export interface FluidAggregatedVaultData {
344
344
  merklBorrowIncentives: IncentiveData[],
345
345
  ratio: string,
346
346
  collRatio: string,
347
+ safetyRatio: string,
347
348
  minRatio: string,
348
349
  totalInterestUsd: string,
349
350
  leveragedType?: LeverageType,
@@ -26,7 +26,13 @@ export interface LiquityTroveInfo {
26
26
  totalETH: string,
27
27
  totalLUSD: string,
28
28
  minCollateralRatio: number,
29
+ // Collateral ratio rebased so 100 sits on `minCollateralRatio` (normalised safety ratio).
30
+ safetyRatio: string,
29
31
  priceForRecovery: string,
30
32
  debtInFront: string,
31
33
  exposure: string,
34
+ // Always '0' for Liquity v1: LUSD debt is interest free (one-off borrowing fee only) and ETH collateral earns no yield.
35
+ netApy: string,
36
+ totalInterestUsd: string,
37
+ incentiveUsd: string,
32
38
  }
@@ -104,6 +104,7 @@ export interface LiquityV2AggregatedTroveData {
104
104
  liquidationPrice: string,
105
105
  ratio: string,
106
106
  collRatio: string,
107
+ safetyRatio: string,
107
108
  exposure: string,
108
109
  }
109
110
 
@@ -112,6 +113,7 @@ export interface LiquityV2TroveData {
112
113
  troveId: string,
113
114
  ratio: string,
114
115
  collRatio: string,
116
+ safetyRatio?: string,
115
117
  liqRatio: string,
116
118
  borrowLimitRatio: string,
117
119
  interestRate: string,
@@ -47,6 +47,8 @@ export interface CdpData {
47
47
  debtAssetMarketPrice: string,
48
48
  liquidationPrice: string,
49
49
  ratio: string,
50
+ // Collateral ratio rebased so 100 sits on `liqPercent` (normalised safety ratio).
51
+ safetyRatio: string,
50
52
  liqRatio: string,
51
53
  liqPercent: number,
52
54
  assetPrice: string,
@@ -62,4 +64,8 @@ export interface CdpData {
62
64
  liquidationFee: string,
63
65
  lastUpdated: number,
64
66
  exposure: string,
67
+ // Yearly net return (%) on the vault's equity: stability fee on DAI debt vs native yield of staked collateral.
68
+ netApy: string,
69
+ totalInterestUsd: string,
70
+ incentiveUsd: string,
65
71
  }
@@ -206,6 +206,7 @@ export interface MorphoBlueAggregatedPositionData {
206
206
  totalInterestUsd: string,
207
207
  ltv: string,
208
208
  ratio: string,
209
+ safetyRatio: string, // borrowLimitUsd / borrowedUsd as a percentage (100 = liquidation)
209
210
  leveragedType: LeverageType,
210
211
  leveragedAsset?: string,
211
212
  currentVolatilePairRatio?: string,
@@ -229,6 +230,7 @@ export interface MorphoBluePositionData {
229
230
  totalInterestUsd: string,
230
231
  ltv: string,
231
232
  ratio: string,
233
+ safetyRatio?: string,
232
234
  leveragedType: LeverageType,
233
235
  leveragedAsset?: string,
234
236
  currentVolatilePairRatio?: string,
@@ -191,6 +191,7 @@ export interface MorphoMidnightAggregatedPositionData {
191
191
  ltv: string,
192
192
  ratio: string, // health ratio as a percentage (from MidnightView.ratio, 1e18-scaled)
193
193
  healthRatio: string, // liquidationLimitUsd / borrowedUsd
194
+ safetyRatio: string, // borrowLimitUsd / borrowedUsd as a percentage (100 = liquidation)
194
195
  leveragedType: LeverageType,
195
196
  leveragedAsset?: string,
196
197
  currentVolatilePairRatio?: string,
@@ -1,16 +1,20 @@
1
- import { AaveV2PositionData, AaveV3PositionData, AaveVersions } from './aave';
2
- import { AaveV4AccountData, AaveV4SpokesType } from './aaveV4';
1
+ import {
2
+ AaveV2MarketData, AaveV2PositionData, AaveV3MarketData, AaveV3PositionData, AaveVersions,
3
+ } from './aave';
4
+ import { AaveV4AccountData, AaveV4SpokeData, AaveV4SpokesType } from './aaveV4';
3
5
  import { EthAddress } from './common';
4
- import { CompoundV2PositionData, CompoundV3PositionData, CompoundVersions } from './compound';
5
- import { CrvUSDUserData, CrvUSDVersions } from './curveUsd';
6
- import { FluidVaultData } from './fluid';
6
+ import {
7
+ CompoundV2MarketsData, CompoundV2PositionData, CompoundV3MarketsData, CompoundV3PositionData, CompoundVersions,
8
+ } from './compound';
9
+ import { CrvUSDGlobalMarketData, CrvUSDUserData, CrvUSDVersions } from './curveUsd';
10
+ import { FluidMarketData, FluidVaultData } from './fluid';
7
11
  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 { MorphoMidnightPositionData, MorphoMidnightVersions } from './morphoMidnight';
13
- import { SparkPositionData, SparkVersions } from './spark';
12
+ import { LiquityV2MarketData, LiquityV2TroveData, LiquityV2Versions } from './liquityV2';
13
+ import { LlamaLendGlobalMarketData, LlamaLendUserData, LlamaLendVersionsType } from './llamaLend';
14
+ import { CdpData, IlkInfo } from './maker';
15
+ import { MorphoBlueMarketInfo, MorphoBluePositionData, MorphoBlueVersions } from './morphoBlue';
16
+ import { MorphoMidnightMarketInfo, MorphoMidnightPositionData, MorphoMidnightVersions } from './morphoMidnight';
17
+ import { SparkMarketsData, SparkPositionData, SparkVersions } from './spark';
14
18
 
15
19
  export interface PortfolioProtocolData<T> {
16
20
  error: string,
@@ -62,4 +66,19 @@ export interface PortfolioPositionsDataForAddress {
62
66
 
63
67
  export interface PortfolioPositionsData {
64
68
  [key: EthAddress]: PortfolioPositionsDataForAddress;
65
- }
69
+ }
70
+ export interface PortfolioMarketsData {
71
+ morphoMarketsData: Record<string, MorphoBlueMarketInfo>;
72
+ morphoMidnightMarketsData: Record<string, MorphoMidnightMarketInfo>;
73
+ compoundV3MarketsData: Record<string, CompoundV3MarketsData>;
74
+ sparkMarketsData: Record<string, SparkMarketsData>;
75
+ aaveV3MarketsData: Record<string, AaveV3MarketData>;
76
+ aaveV2MarketsData: Record<string, AaveV2MarketData>;
77
+ compoundV2MarketsData: Record<string, CompoundV2MarketsData>;
78
+ crvUsdMarketsData: Record<string, CrvUSDGlobalMarketData>;
79
+ llamaLendMarketsData: Record<string, LlamaLendGlobalMarketData>;
80
+ liquityV2MarketsData: Record<string, LiquityV2MarketData>;
81
+ aaveV4SpokesData: Record<string, AaveV4SpokeData>;
82
+ fluidMarketsData: Record<string, FluidMarketData>;
83
+ makerMarketsData: Record<string, IlkInfo>;
84
+ }
@@ -1,4 +1,4 @@
1
- import { EthAddress, NetworkNumber } from '../common';
1
+ import { EthAddress } from '../common';
2
2
 
3
3
  export enum MorphoVaultType {
4
4
  MorphoVaultFlagshipEth = 'morpho_vault_flagship_eth',
@@ -21,14 +21,6 @@ export enum MorphoVaultType {
21
21
  MorphoVaultSmokehouseUSDT = 'morpho_vault_smokehouse_usdt',
22
22
  MorphoVaultSmokehouseUSDC = 'morpho_vault_smokehouse_usdc',
23
23
  MorphoVaultSmokehouseDAI = 'morpho_vault_smokehouse_dai',
24
- // Vault V2
25
- MorphoVaultGauntletUSDGPremium = 'morpho_vault_gauntlet_usdg_premium',
26
- MorphoVaultSteakhouseUSDGPro = 'morpho_vault_steakhouse_usdg_pro',
27
- }
28
-
29
- export enum MorphoVaultVersion {
30
- V1 = 1,
31
- V2 = 2,
32
24
  }
33
25
 
34
26
  export interface MorphoVault {
@@ -36,8 +28,6 @@ export interface MorphoVault {
36
28
  name: string;
37
29
  address: EthAddress;
38
30
  asset: string;
39
- network: NetworkNumber;
40
- version: MorphoVaultVersion;
41
31
  deploymentBlock: number;
42
32
  isLegacy: boolean;
43
33
  }
@@ -99,6 +99,7 @@ export interface SparkAggregatedPositionData {
99
99
  leftToBorrowUsd: string,
100
100
  ratio: string,
101
101
  collRatio: string,
102
+ safetyRatio: string,
102
103
  netApy: string,
103
104
  incentiveUsd: string,
104
105
  totalInterestUsd: string,
@@ -119,6 +120,7 @@ export interface SparkPositionData extends MMPositionData {
119
120
  ratio: string,
120
121
  minRatio: string,
121
122
  collRatio: string,
123
+ safetyRatio?: string,
122
124
  suppliedUsd: string,
123
125
  borrowedUsd: string,
124
126
  borrowLimitUsd: string,