@defisaver/positions-sdk 2.1.41 → 2.1.43-aave-v4-dev-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 (145) hide show
  1. package/.mocharc.json +4 -4
  2. package/.nvmrc +1 -1
  3. package/README.md +64 -64
  4. package/cjs/aaveV4/index.d.ts +7 -0
  5. package/cjs/aaveV4/index.js +99 -0
  6. package/cjs/config/contracts.d.ts +1069 -0
  7. package/cjs/config/contracts.js +9 -0
  8. package/cjs/contracts.d.ts +18265 -0
  9. package/cjs/contracts.js +2 -1
  10. package/cjs/helpers/morphoBlueHelpers/index.js +66 -66
  11. package/cjs/index.d.ts +2 -1
  12. package/cjs/index.js +3 -1
  13. package/cjs/markets/aaveV4/index.d.ts +6 -0
  14. package/cjs/markets/aaveV4/index.js +20 -0
  15. package/cjs/markets/index.d.ts +1 -0
  16. package/cjs/markets/index.js +3 -1
  17. package/cjs/savings/morphoVaults/index.js +17 -17
  18. package/cjs/savings/morphoVaults/options.js +2 -2
  19. package/cjs/types/aaveV4.d.ts +73 -0
  20. package/cjs/types/aaveV4.js +11 -0
  21. package/cjs/types/index.d.ts +1 -0
  22. package/cjs/types/index.js +1 -0
  23. package/esm/aaveV4/index.d.ts +7 -0
  24. package/esm/aaveV4/index.js +90 -0
  25. package/esm/config/contracts.d.ts +1069 -0
  26. package/esm/config/contracts.js +8 -0
  27. package/esm/contracts.d.ts +18265 -0
  28. package/esm/contracts.js +1 -0
  29. package/esm/helpers/morphoBlueHelpers/index.js +66 -66
  30. package/esm/index.d.ts +2 -1
  31. package/esm/index.js +2 -1
  32. package/esm/markets/aaveV4/index.d.ts +6 -0
  33. package/esm/markets/aaveV4/index.js +15 -0
  34. package/esm/markets/index.d.ts +1 -0
  35. package/esm/markets/index.js +1 -0
  36. package/esm/savings/morphoVaults/index.js +17 -17
  37. package/esm/savings/morphoVaults/options.js +2 -2
  38. package/esm/types/aaveV4.d.ts +73 -0
  39. package/esm/types/aaveV4.js +8 -0
  40. package/esm/types/index.d.ts +1 -0
  41. package/esm/types/index.js +1 -0
  42. package/package.json +48 -48
  43. package/src/aaveV2/index.ts +240 -240
  44. package/src/aaveV3/index.ts +625 -625
  45. package/src/aaveV3/merit.ts +97 -97
  46. package/src/aaveV3/merkl.ts +74 -74
  47. package/src/aaveV4/index.ts +90 -0
  48. package/src/claiming/aaveV3.ts +154 -154
  49. package/src/claiming/compV3.ts +22 -22
  50. package/src/claiming/ethena.ts +61 -61
  51. package/src/claiming/index.ts +12 -12
  52. package/src/claiming/king.ts +66 -66
  53. package/src/claiming/morphoBlue.ts +118 -118
  54. package/src/claiming/spark.ts +225 -225
  55. package/src/compoundV2/index.ts +244 -244
  56. package/src/compoundV3/index.ts +274 -274
  57. package/src/config/contracts.ts +1303 -1295
  58. package/src/constants/index.ts +10 -10
  59. package/src/contracts.ts +174 -172
  60. package/src/curveUsd/index.ts +254 -254
  61. package/src/eulerV2/index.ts +324 -324
  62. package/src/exchange/index.ts +25 -25
  63. package/src/fluid/index.ts +1800 -1800
  64. package/src/helpers/aaveHelpers/index.ts +187 -187
  65. package/src/helpers/compoundHelpers/index.ts +283 -283
  66. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  67. package/src/helpers/eulerHelpers/index.ts +222 -222
  68. package/src/helpers/fluidHelpers/index.ts +326 -326
  69. package/src/helpers/index.ts +10 -10
  70. package/src/helpers/liquityV2Helpers/index.ts +82 -82
  71. package/src/helpers/llamaLendHelpers/index.ts +53 -53
  72. package/src/helpers/makerHelpers/index.ts +52 -52
  73. package/src/helpers/morphoBlueHelpers/index.ts +396 -396
  74. package/src/helpers/sparkHelpers/index.ts +158 -158
  75. package/src/index.ts +51 -49
  76. package/src/liquity/index.ts +159 -159
  77. package/src/liquityV2/index.ts +703 -703
  78. package/src/llamaLend/index.ts +305 -305
  79. package/src/maker/index.ts +223 -223
  80. package/src/markets/aave/index.ts +118 -118
  81. package/src/markets/aave/marketAssets.ts +54 -54
  82. package/src/markets/aaveV4/index.ts +17 -0
  83. package/src/markets/compound/index.ts +243 -243
  84. package/src/markets/compound/marketsAssets.ts +97 -97
  85. package/src/markets/curveUsd/index.ts +69 -69
  86. package/src/markets/euler/index.ts +26 -26
  87. package/src/markets/fluid/index.ts +2900 -2900
  88. package/src/markets/index.ts +26 -25
  89. package/src/markets/liquityV2/index.ts +102 -102
  90. package/src/markets/llamaLend/contractAddresses.ts +141 -141
  91. package/src/markets/llamaLend/index.ts +235 -235
  92. package/src/markets/morphoBlue/index.ts +971 -971
  93. package/src/markets/spark/index.ts +29 -29
  94. package/src/markets/spark/marketAssets.ts +12 -12
  95. package/src/moneymarket/moneymarketCommonService.ts +85 -85
  96. package/src/morphoBlue/index.ts +274 -274
  97. package/src/portfolio/index.ts +598 -598
  98. package/src/savings/index.ts +95 -95
  99. package/src/savings/makerDsr/index.ts +53 -53
  100. package/src/savings/makerDsr/options.ts +9 -9
  101. package/src/savings/morphoVaults/index.ts +80 -80
  102. package/src/savings/morphoVaults/options.ts +193 -193
  103. package/src/savings/skyOptions/index.ts +95 -95
  104. package/src/savings/skyOptions/options.ts +10 -10
  105. package/src/savings/sparkSavingsVaults/index.ts +60 -60
  106. package/src/savings/sparkSavingsVaults/options.ts +35 -35
  107. package/src/savings/yearnV3Vaults/index.ts +61 -61
  108. package/src/savings/yearnV3Vaults/options.ts +55 -55
  109. package/src/savings/yearnVaults/index.ts +73 -73
  110. package/src/savings/yearnVaults/options.ts +32 -32
  111. package/src/services/priceService.ts +278 -278
  112. package/src/services/utils.ts +115 -115
  113. package/src/services/viem.ts +34 -34
  114. package/src/setup.ts +8 -8
  115. package/src/spark/index.ts +458 -458
  116. package/src/staking/eligibility.ts +53 -53
  117. package/src/staking/index.ts +1 -1
  118. package/src/staking/staking.ts +186 -186
  119. package/src/types/aave.ts +196 -196
  120. package/src/types/aaveV4.ts +81 -0
  121. package/src/types/claiming.ts +114 -114
  122. package/src/types/common.ts +107 -107
  123. package/src/types/compound.ts +144 -144
  124. package/src/types/curveUsd.ts +123 -123
  125. package/src/types/euler.ts +175 -175
  126. package/src/types/fluid.ts +483 -483
  127. package/src/types/index.ts +16 -15
  128. package/src/types/liquity.ts +30 -30
  129. package/src/types/liquityV2.ts +126 -126
  130. package/src/types/llamaLend.ts +159 -159
  131. package/src/types/maker.ts +63 -63
  132. package/src/types/merit.ts +1 -1
  133. package/src/types/merkl.ts +70 -70
  134. package/src/types/morphoBlue.ts +200 -200
  135. package/src/types/portfolio.ts +60 -60
  136. package/src/types/savings/index.ts +23 -23
  137. package/src/types/savings/makerDsr.ts +13 -13
  138. package/src/types/savings/morphoVaults.ts +32 -32
  139. package/src/types/savings/sky.ts +14 -14
  140. package/src/types/savings/sparkSavingsVaults.ts +15 -15
  141. package/src/types/savings/yearnV3Vaults.ts +17 -17
  142. package/src/types/savings/yearnVaults.ts +14 -14
  143. package/src/types/spark.ts +134 -134
  144. package/src/umbrella/index.ts +69 -69
  145. package/src/umbrella/umbrellaUtils.ts +29 -29
@@ -1,30 +1,30 @@
1
- import { getConfigContractAddress } from '../../contracts';
2
- import { SparkMarketData, SparkVersions } from '../../types';
3
- import { NetworkNumber } from '../../types/common';
4
- import { sparkAssetsDefaultMarket } from './marketAssets';
5
-
6
- export const sparkEthEmodeId = {
7
- [NetworkNumber.Eth]: 1,
8
- } as const;
9
-
10
- export const SPARK_V1 = (networkId: NetworkNumber = NetworkNumber.Eth): SparkMarketData => ({
11
- chainIds: [1],
12
- label: 'Spark',
13
- shortLabel: 'v1',
14
- value: SparkVersions.SparkV1,
15
- url: 'default',
16
- assets: networkId ? sparkAssetsDefaultMarket[networkId] : [],
17
- provider: 'SparkPoolAddressesProvider',
18
- providerAddress: getConfigContractAddress('SparkPoolAddressesProvider', networkId),
19
- lendingPool: 'SparkLendingPool',
20
- lendingPoolAddress: getConfigContractAddress('SparkLendingPool', networkId),
21
- protocolData: 'SparkProtocolDataProvider',
22
- protocolDataAddress: getConfigContractAddress('SparkProtocolDataProvider', networkId),
23
- // icon: SvgAdapter(protocolIcons.spark),
24
- protocolName: 'spark',
25
- });
26
-
27
-
28
- export const SparkMarkets = (networkId: NetworkNumber) => ({
29
- [SparkVersions.SparkV1]: SPARK_V1(networkId),
1
+ import { getConfigContractAddress } from '../../contracts';
2
+ import { SparkMarketData, SparkVersions } from '../../types';
3
+ import { NetworkNumber } from '../../types/common';
4
+ import { sparkAssetsDefaultMarket } from './marketAssets';
5
+
6
+ export const sparkEthEmodeId = {
7
+ [NetworkNumber.Eth]: 1,
8
+ } as const;
9
+
10
+ export const SPARK_V1 = (networkId: NetworkNumber = NetworkNumber.Eth): SparkMarketData => ({
11
+ chainIds: [1],
12
+ label: 'Spark',
13
+ shortLabel: 'v1',
14
+ value: SparkVersions.SparkV1,
15
+ url: 'default',
16
+ assets: networkId ? sparkAssetsDefaultMarket[networkId] : [],
17
+ provider: 'SparkPoolAddressesProvider',
18
+ providerAddress: getConfigContractAddress('SparkPoolAddressesProvider', networkId),
19
+ lendingPool: 'SparkLendingPool',
20
+ lendingPoolAddress: getConfigContractAddress('SparkLendingPool', networkId),
21
+ protocolData: 'SparkProtocolDataProvider',
22
+ protocolDataAddress: getConfigContractAddress('SparkProtocolDataProvider', networkId),
23
+ // icon: SvgAdapter(protocolIcons.spark),
24
+ protocolName: 'spark',
25
+ });
26
+
27
+
28
+ export const SparkMarkets = (networkId: NetworkNumber) => ({
29
+ [SparkVersions.SparkV1]: SPARK_V1(networkId),
30
30
  }) as const;
@@ -1,13 +1,13 @@
1
- import { NetworkNumber } from '../../types/common';
2
-
3
- export const sparkAssetsDefaultMarketEth = ['DAI', 'sDAI', 'USDC', 'ETH', 'wstETH', 'WBTC', 'GNO', 'rETH', 'USDT', 'weETH', 'cbBTC', 'sUSDS', 'USDS', 'LBTC', 'tBTC', 'ezETH', 'rsETH', 'PYUSD'];
4
-
5
- // @dev Keep assets in array, do not assign directly, so we can parse it and edit it programmatically with `scripts/updateMarkets`
6
- export const sparkAssetsDefaultMarket = {
7
- [NetworkNumber.Eth]: sparkAssetsDefaultMarketEth,
8
- [NetworkNumber.Opt]: [],
9
- [NetworkNumber.Base]: [],
10
- [NetworkNumber.Arb]: [],
11
- [NetworkNumber.Linea]: [],
12
- [NetworkNumber.Plasma]: [],
1
+ import { NetworkNumber } from '../../types/common';
2
+
3
+ export const sparkAssetsDefaultMarketEth = ['DAI', 'sDAI', 'USDC', 'ETH', 'wstETH', 'WBTC', 'GNO', 'rETH', 'USDT', 'weETH', 'cbBTC', 'sUSDS', 'USDS', 'LBTC', 'tBTC', 'ezETH', 'rsETH', 'PYUSD'];
4
+
5
+ // @dev Keep assets in array, do not assign directly, so we can parse it and edit it programmatically with `scripts/updateMarkets`
6
+ export const sparkAssetsDefaultMarket = {
7
+ [NetworkNumber.Eth]: sparkAssetsDefaultMarketEth,
8
+ [NetworkNumber.Opt]: [],
9
+ [NetworkNumber.Base]: [],
10
+ [NetworkNumber.Arb]: [],
11
+ [NetworkNumber.Linea]: [],
12
+ [NetworkNumber.Plasma]: [],
13
13
  } as const;
@@ -1,85 +1,85 @@
1
- import Dec from 'decimal.js';
2
- import { BLOCKS_IN_A_YEAR } from '../constants';
3
- import { MMUsedAssets } from '../types/common';
4
-
5
- export const getAssetsTotal = (assets: object, filter: any, transform: any) => (Object.values(assets) as any)
6
- .filter(filter)
7
- .map(transform)
8
- .reduce((acc: any, data: any) => new Dec(acc).add(data), '0')
9
- .toString();
10
-
11
- export const calcLongLiqPrice = (assetPrice: string, borrowedUsd: string, borrowLimitUsd: string) => new Dec(assetPrice).mul(borrowedUsd).div(borrowLimitUsd).toString();
12
- export const calcShortLiqPrice = (assetPrice: string, borrowedUsd: string, borrowLimitUsd: string) => new Dec(assetPrice).div(borrowedUsd).mul(borrowLimitUsd).toString();
13
-
14
- export const calcLeverageLiqPrice = (leverageType: string, assetPrice: string, borrowedUsd: string, borrowLimitUsd: string) => {
15
- if (leverageType === 'short') return calcShortLiqPrice(assetPrice, borrowedUsd, borrowLimitUsd);
16
- if (leverageType === 'long' || leverageType === 'lsd-leverage') return calcLongLiqPrice(assetPrice, borrowedUsd, borrowLimitUsd);
17
- console.error('invalid leverageType', leverageType);
18
- return '0';
19
- };
20
-
21
- export const calculateBorrowingAssetLimit = (assetBorrowedUsd: string, borrowLimitUsd: string) => new Dec(assetBorrowedUsd).div(borrowLimitUsd).times(100).toString();
22
-
23
- export const STABLE_ASSETS = [
24
- 'DAI', 'USDC', 'USDT', 'TUSD', 'USDP', 'GUSD', 'BUSD', 'SUSD', 'FRAX', 'LUSD', 'USDC.e', 'GHO', 'sDAI', 'USDA',
25
- 'USDe', 'sUSDe', 'USDS', 'sUSDS', 'USR', 'EURC', 'BOLD', 'BOLD Legacy', 'RLUSD', 'PT sUSDe July', 'PT eUSDe May',
26
- 'USDtb', 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'PT sUSDe Sep', 'PT USDe Sep', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Jan', 'PT USDe Jan',
27
- 'PT sUSDe Feb', 'PT USDe Feb',
28
- ];
29
-
30
- export const isLeveragedPos = (usedAssets: MMUsedAssets, dustLimit = 5) => {
31
- let borrowUnstable = 0;
32
- let supplyStable = 0;
33
- let borrowStable = 0;
34
- let supplyUnstable = 0;
35
- let longAsset = '';
36
- let shortAsset = '';
37
- Object.values(usedAssets).forEach(({
38
- symbol, suppliedUsd, borrowedUsd, collateral,
39
- }) => {
40
- const isSupplied = (+suppliedUsd) > dustLimit; // ignore dust like <limit leftover supply
41
- const isBorrowed = (+borrowedUsd) > dustLimit; // ignore dust like <limit leftover supply
42
- if (isSupplied && STABLE_ASSETS.includes(symbol) && collateral) supplyStable += 1;
43
- if (isBorrowed && STABLE_ASSETS.includes(symbol)) borrowStable += 1;
44
- if (isBorrowed && !STABLE_ASSETS.includes(symbol)) {
45
- borrowUnstable += 1;
46
- shortAsset = symbol;
47
- }
48
- if (isSupplied && !STABLE_ASSETS.includes(symbol) && collateral) {
49
- supplyUnstable += 1;
50
- longAsset = symbol;
51
- }
52
- });
53
- const isLong = borrowStable > 0 && borrowUnstable === 0 && supplyUnstable === 1 && supplyStable === 0;
54
- const isShort = supplyStable > 0 && supplyUnstable === 0 && borrowUnstable === 1 && borrowStable === 0;
55
- // lsd -> liquid staking derivative
56
- const isLsdLeveraged = supplyUnstable === 1 && borrowUnstable === 1 && shortAsset === 'ETH' && ['stETH', 'wstETH', 'cbETH', 'rETH', 'ezETH', 'weETH'].includes(longAsset);
57
- if (isLong) {
58
- return {
59
- leveragedType: 'long',
60
- leveragedAsset: longAsset,
61
- };
62
- }
63
- if (isShort) {
64
- return {
65
- leveragedType: 'short',
66
- leveragedAsset: shortAsset,
67
- };
68
- }
69
- if (isLsdLeveraged) {
70
- return {
71
- leveragedType: 'lsd-leverage',
72
- leveragedAsset: longAsset,
73
- };
74
- }
75
- return {
76
- leveragedType: '',
77
- leveragedAsset: '',
78
- };
79
- };
80
-
81
- export const aprToApy = (interest:string | number, frequency = BLOCKS_IN_A_YEAR) => new Dec(interest).div(100).div(frequency).plus(1)
82
- .pow(frequency)
83
- .minus(1)
84
- .times(100)
85
- .toString();
1
+ import Dec from 'decimal.js';
2
+ import { BLOCKS_IN_A_YEAR } from '../constants';
3
+ import { MMUsedAssets } from '../types/common';
4
+
5
+ export const getAssetsTotal = (assets: object, filter: any, transform: any) => (Object.values(assets) as any)
6
+ .filter(filter)
7
+ .map(transform)
8
+ .reduce((acc: any, data: any) => new Dec(acc).add(data), '0')
9
+ .toString();
10
+
11
+ export const calcLongLiqPrice = (assetPrice: string, borrowedUsd: string, borrowLimitUsd: string) => new Dec(assetPrice).mul(borrowedUsd).div(borrowLimitUsd).toString();
12
+ export const calcShortLiqPrice = (assetPrice: string, borrowedUsd: string, borrowLimitUsd: string) => new Dec(assetPrice).div(borrowedUsd).mul(borrowLimitUsd).toString();
13
+
14
+ export const calcLeverageLiqPrice = (leverageType: string, assetPrice: string, borrowedUsd: string, borrowLimitUsd: string) => {
15
+ if (leverageType === 'short') return calcShortLiqPrice(assetPrice, borrowedUsd, borrowLimitUsd);
16
+ if (leverageType === 'long' || leverageType === 'lsd-leverage') return calcLongLiqPrice(assetPrice, borrowedUsd, borrowLimitUsd);
17
+ console.error('invalid leverageType', leverageType);
18
+ return '0';
19
+ };
20
+
21
+ export const calculateBorrowingAssetLimit = (assetBorrowedUsd: string, borrowLimitUsd: string) => new Dec(assetBorrowedUsd).div(borrowLimitUsd).times(100).toString();
22
+
23
+ export const STABLE_ASSETS = [
24
+ 'DAI', 'USDC', 'USDT', 'TUSD', 'USDP', 'GUSD', 'BUSD', 'SUSD', 'FRAX', 'LUSD', 'USDC.e', 'GHO', 'sDAI', 'USDA',
25
+ 'USDe', 'sUSDe', 'USDS', 'sUSDS', 'USR', 'EURC', 'BOLD', 'BOLD Legacy', 'RLUSD', 'PT sUSDe July', 'PT eUSDe May',
26
+ 'USDtb', 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'PT sUSDe Sep', 'PT USDe Sep', 'PT sUSDe Nov', 'PT USDe Nov', 'PT sUSDe Jan', 'PT USDe Jan',
27
+ 'PT sUSDe Feb', 'PT USDe Feb',
28
+ ];
29
+
30
+ export const isLeveragedPos = (usedAssets: MMUsedAssets, dustLimit = 5) => {
31
+ let borrowUnstable = 0;
32
+ let supplyStable = 0;
33
+ let borrowStable = 0;
34
+ let supplyUnstable = 0;
35
+ let longAsset = '';
36
+ let shortAsset = '';
37
+ Object.values(usedAssets).forEach(({
38
+ symbol, suppliedUsd, borrowedUsd, collateral,
39
+ }) => {
40
+ const isSupplied = (+suppliedUsd) > dustLimit; // ignore dust like <limit leftover supply
41
+ const isBorrowed = (+borrowedUsd) > dustLimit; // ignore dust like <limit leftover supply
42
+ if (isSupplied && STABLE_ASSETS.includes(symbol) && collateral) supplyStable += 1;
43
+ if (isBorrowed && STABLE_ASSETS.includes(symbol)) borrowStable += 1;
44
+ if (isBorrowed && !STABLE_ASSETS.includes(symbol)) {
45
+ borrowUnstable += 1;
46
+ shortAsset = symbol;
47
+ }
48
+ if (isSupplied && !STABLE_ASSETS.includes(symbol) && collateral) {
49
+ supplyUnstable += 1;
50
+ longAsset = symbol;
51
+ }
52
+ });
53
+ const isLong = borrowStable > 0 && borrowUnstable === 0 && supplyUnstable === 1 && supplyStable === 0;
54
+ const isShort = supplyStable > 0 && supplyUnstable === 0 && borrowUnstable === 1 && borrowStable === 0;
55
+ // lsd -> liquid staking derivative
56
+ const isLsdLeveraged = supplyUnstable === 1 && borrowUnstable === 1 && shortAsset === 'ETH' && ['stETH', 'wstETH', 'cbETH', 'rETH', 'ezETH', 'weETH'].includes(longAsset);
57
+ if (isLong) {
58
+ return {
59
+ leveragedType: 'long',
60
+ leveragedAsset: longAsset,
61
+ };
62
+ }
63
+ if (isShort) {
64
+ return {
65
+ leveragedType: 'short',
66
+ leveragedAsset: shortAsset,
67
+ };
68
+ }
69
+ if (isLsdLeveraged) {
70
+ return {
71
+ leveragedType: 'lsd-leverage',
72
+ leveragedAsset: longAsset,
73
+ };
74
+ }
75
+ return {
76
+ leveragedType: '',
77
+ leveragedAsset: '',
78
+ };
79
+ };
80
+
81
+ export const aprToApy = (interest:string | number, frequency = BLOCKS_IN_A_YEAR) => new Dec(interest).div(100).div(frequency).plus(1)
82
+ .pow(frequency)
83
+ .minus(1)
84
+ .times(100)
85
+ .toString();