@defisaver/positions-sdk 0.0.96 → 0.0.98

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 (65) hide show
  1. package/README.md +63 -63
  2. package/cjs/markets/compound/marketsAssets.js +1 -1
  3. package/cjs/morphoBlue/index.d.ts +2 -1
  4. package/cjs/morphoBlue/index.js +29 -1
  5. package/esm/markets/compound/marketsAssets.js +1 -1
  6. package/esm/morphoBlue/index.d.ts +2 -1
  7. package/esm/morphoBlue/index.js +28 -1
  8. package/package.json +40 -40
  9. package/src/aaveV2/index.ts +227 -227
  10. package/src/aaveV3/index.ts +558 -558
  11. package/src/assets/index.ts +60 -60
  12. package/src/chickenBonds/index.ts +123 -123
  13. package/src/compoundV2/index.ts +219 -219
  14. package/src/compoundV3/index.ts +266 -266
  15. package/src/config/contracts.js +848 -848
  16. package/src/constants/index.ts +5 -5
  17. package/src/contracts.ts +128 -128
  18. package/src/curveUsd/index.ts +229 -229
  19. package/src/exchange/index.ts +17 -17
  20. package/src/helpers/aaveHelpers/index.ts +134 -134
  21. package/src/helpers/chickenBondsHelpers/index.ts +23 -23
  22. package/src/helpers/compoundHelpers/index.ts +181 -181
  23. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  24. package/src/helpers/index.ts +7 -7
  25. package/src/helpers/llamaLendHelpers/index.ts +45 -45
  26. package/src/helpers/makerHelpers/index.ts +94 -94
  27. package/src/helpers/morphoBlueHelpers/index.ts +56 -56
  28. package/src/helpers/sparkHelpers/index.ts +106 -106
  29. package/src/index.ts +46 -46
  30. package/src/liquity/index.ts +116 -116
  31. package/src/llamaLend/index.ts +268 -268
  32. package/src/maker/index.ts +117 -117
  33. package/src/markets/aave/index.ts +80 -80
  34. package/src/markets/aave/marketAssets.ts +24 -24
  35. package/src/markets/compound/index.ts +142 -142
  36. package/src/markets/compound/marketsAssets.ts +50 -50
  37. package/src/markets/curveUsd/index.ts +69 -69
  38. package/src/markets/index.ts +5 -5
  39. package/src/markets/llamaLend/contractAddresses.ts +95 -95
  40. package/src/markets/llamaLend/index.ts +150 -150
  41. package/src/markets/morphoBlue/index.ts +611 -611
  42. package/src/markets/spark/index.ts +29 -29
  43. package/src/markets/spark/marketAssets.ts +10 -10
  44. package/src/moneymarket/moneymarketCommonService.ts +76 -76
  45. package/src/morphoAaveV2/index.ts +256 -256
  46. package/src/morphoAaveV3/index.ts +612 -612
  47. package/src/morphoBlue/index.ts +199 -162
  48. package/src/multicall/index.ts +22 -22
  49. package/src/services/dsrService.ts +15 -15
  50. package/src/services/priceService.ts +21 -21
  51. package/src/services/utils.ts +51 -51
  52. package/src/setup.ts +8 -8
  53. package/src/spark/index.ts +424 -424
  54. package/src/staking/staking.ts +187 -187
  55. package/src/types/aave.ts +256 -256
  56. package/src/types/chickenBonds.ts +45 -45
  57. package/src/types/common.ts +84 -84
  58. package/src/types/compound.ts +128 -128
  59. package/src/types/curveUsd.ts +118 -118
  60. package/src/types/index.ts +8 -8
  61. package/src/types/liquity.ts +30 -30
  62. package/src/types/llamaLend.ts +143 -143
  63. package/src/types/maker.ts +50 -50
  64. package/src/types/morphoBlue.ts +139 -139
  65. package/src/types/spark.ts +106 -106
@@ -1,117 +1,117 @@
1
- import Web3 from 'web3';
2
- import Dec from 'decimal.js';
3
- import { assetAmountInEth, getAssetInfo } from '@defisaver/tokens';
4
- import {
5
- Blockish, EthAddress, NetworkNumber, PositionBalances,
6
- } from '../types/common';
7
- import {
8
- LiquityActivePoolContract, LiquityCollSurplusPoolContract, LiquityPriceFeedContract, LiquityTroveManagerContract, LiquityViewContract,
9
- } from '../contracts';
10
- import { multicall } from '../multicall';
11
- import { LIQUITY_TROVE_STATUS_ENUM, LiquityTroveInfo } from '../types';
12
- import { ZERO_ADDRESS } from '../constants';
13
-
14
- export const LIQUITY_NORMAL_MODE_RATIO = 110; // MCR
15
- export const LIQUITY_RECOVERY_MODE_RATIO = 150; // CCR
16
-
17
- export const getLiquityAccountBalances = async (web3: Web3, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress): Promise<PositionBalances> => {
18
- let balances: PositionBalances = {
19
- collateral: {},
20
- debt: {},
21
- };
22
-
23
- if (!address) {
24
- return balances;
25
- }
26
-
27
- const viewContract = LiquityViewContract(web3, network, block);
28
- const troveInfo = await viewContract.methods.getTroveInfo(address).call({}, block);
29
-
30
- balances = {
31
- collateral: {
32
- [addressMapping ? getAssetInfo('ETH', network).address.toLowerCase() : 'ETH']: troveInfo[1],
33
- },
34
- debt: {
35
- [addressMapping ? getAssetInfo('LUSD', network).address.toLowerCase() : 'LUSD']: troveInfo[2],
36
- },
37
- };
38
-
39
- return balances;
40
- };
41
-
42
- const _getDebtInFront = async (viewContract: any, address: string, accumulatedSum = '0', iterations = 2000) => viewContract.methods.getDebtInFront(address, accumulatedSum, iterations).call();
43
-
44
- export const getDebtInFront = async (viewContract: any, address: string, accumulatedSum = '0', iterations = 2000): Promise<string> => {
45
- const { debt, next } = await _getDebtInFront(viewContract, address, accumulatedSum, iterations);
46
- if (next === ZERO_ADDRESS) return assetAmountInEth(debt, 'LUSD');
47
- return getDebtInFront(viewContract, next, debt, iterations);
48
- };
49
-
50
- export const getLiquityTroveInfo = async (web3: Web3, network: NetworkNumber, address: string): Promise<LiquityTroveInfo> => {
51
- const viewContract = LiquityViewContract(web3, network);
52
- const collSurplusPoolContract = LiquityCollSurplusPoolContract(web3, network);
53
- const troveManagerContract = LiquityTroveManagerContract(web3, network);
54
- const priceFeedContract = LiquityPriceFeedContract(web3, network);
55
- const activePoolContract = LiquityActivePoolContract(web3, network);
56
-
57
- const multicallData = [
58
- {
59
- target: viewContract.options.address,
60
- abiItem: viewContract.options.jsonInterface.find(({ name }) => name === 'getTroveInfo'),
61
- params: [address],
62
- },
63
- {
64
- target: collSurplusPoolContract.options.address,
65
- abiItem: collSurplusPoolContract.options.jsonInterface.find(({ name }) => name === 'getCollateral'),
66
- params: [address],
67
- },
68
- {
69
- target: troveManagerContract.options.address,
70
- abiItem: troveManagerContract.options.jsonInterface.find(({ name }) => name === 'getBorrowingRateWithDecay'),
71
- params: [],
72
- },
73
- {
74
- target: priceFeedContract.options.address,
75
- abiItem: priceFeedContract.options.jsonInterface.find(({ name }) => name === 'fetchPrice'),
76
- params: [],
77
- },
78
- {
79
- target: activePoolContract.options.address,
80
- abiItem: activePoolContract.options.jsonInterface.find(({ name }) => name === 'getETH'),
81
- params: [],
82
- },
83
- {
84
- target: activePoolContract.options.address,
85
- abiItem: activePoolContract.options.jsonInterface.find(({ name }) => name === 'getLUSDDebt'),
86
- params: [],
87
- },
88
- ];
89
-
90
- const [multiRes, debtInFront] = await Promise.all([
91
- multicall(multicallData, web3, network),
92
- getDebtInFront(viewContract, address),
93
- ]);
94
-
95
- const recoveryMode = multiRes[0][6];
96
- const totalETH = multiRes[4][0];
97
- const totalLUSD = multiRes[5][0];
98
-
99
- const payload = {
100
- troveStatus: LIQUITY_TROVE_STATUS_ENUM[+multiRes[0][0].toString()],
101
- collateral: assetAmountInEth(multiRes[0][1]),
102
- debtInAsset: assetAmountInEth(multiRes[0][2]),
103
- TCRatio: assetAmountInEth(multiRes[0][4]),
104
- recoveryMode,
105
- claimableCollateral: assetAmountInEth(multiRes[1][0]),
106
- borrowingRateWithDecay: assetAmountInEth(multiRes[2][0]),
107
- assetPrice: assetAmountInEth(multiRes[3][0]),
108
- totalETH,
109
- totalLUSD,
110
- debtInFront,
111
- minCollateralRatio: recoveryMode ? LIQUITY_RECOVERY_MODE_RATIO : LIQUITY_NORMAL_MODE_RATIO,
112
- priceForRecovery: new Dec(recoveryMode ? LIQUITY_RECOVERY_MODE_RATIO : LIQUITY_NORMAL_MODE_RATIO).mul(totalLUSD).div(totalETH).div(100)
113
- .toString(),
114
- };
115
-
116
- return payload;
1
+ import Web3 from 'web3';
2
+ import Dec from 'decimal.js';
3
+ import { assetAmountInEth, getAssetInfo } from '@defisaver/tokens';
4
+ import {
5
+ Blockish, EthAddress, NetworkNumber, PositionBalances,
6
+ } from '../types/common';
7
+ import {
8
+ LiquityActivePoolContract, LiquityCollSurplusPoolContract, LiquityPriceFeedContract, LiquityTroveManagerContract, LiquityViewContract,
9
+ } from '../contracts';
10
+ import { multicall } from '../multicall';
11
+ import { LIQUITY_TROVE_STATUS_ENUM, LiquityTroveInfo } from '../types';
12
+ import { ZERO_ADDRESS } from '../constants';
13
+
14
+ export const LIQUITY_NORMAL_MODE_RATIO = 110; // MCR
15
+ export const LIQUITY_RECOVERY_MODE_RATIO = 150; // CCR
16
+
17
+ export const getLiquityAccountBalances = async (web3: Web3, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress): Promise<PositionBalances> => {
18
+ let balances: PositionBalances = {
19
+ collateral: {},
20
+ debt: {},
21
+ };
22
+
23
+ if (!address) {
24
+ return balances;
25
+ }
26
+
27
+ const viewContract = LiquityViewContract(web3, network, block);
28
+ const troveInfo = await viewContract.methods.getTroveInfo(address).call({}, block);
29
+
30
+ balances = {
31
+ collateral: {
32
+ [addressMapping ? getAssetInfo('ETH', network).address.toLowerCase() : 'ETH']: troveInfo[1],
33
+ },
34
+ debt: {
35
+ [addressMapping ? getAssetInfo('LUSD', network).address.toLowerCase() : 'LUSD']: troveInfo[2],
36
+ },
37
+ };
38
+
39
+ return balances;
40
+ };
41
+
42
+ const _getDebtInFront = async (viewContract: any, address: string, accumulatedSum = '0', iterations = 2000) => viewContract.methods.getDebtInFront(address, accumulatedSum, iterations).call();
43
+
44
+ export const getDebtInFront = async (viewContract: any, address: string, accumulatedSum = '0', iterations = 2000): Promise<string> => {
45
+ const { debt, next } = await _getDebtInFront(viewContract, address, accumulatedSum, iterations);
46
+ if (next === ZERO_ADDRESS) return assetAmountInEth(debt, 'LUSD');
47
+ return getDebtInFront(viewContract, next, debt, iterations);
48
+ };
49
+
50
+ export const getLiquityTroveInfo = async (web3: Web3, network: NetworkNumber, address: string): Promise<LiquityTroveInfo> => {
51
+ const viewContract = LiquityViewContract(web3, network);
52
+ const collSurplusPoolContract = LiquityCollSurplusPoolContract(web3, network);
53
+ const troveManagerContract = LiquityTroveManagerContract(web3, network);
54
+ const priceFeedContract = LiquityPriceFeedContract(web3, network);
55
+ const activePoolContract = LiquityActivePoolContract(web3, network);
56
+
57
+ const multicallData = [
58
+ {
59
+ target: viewContract.options.address,
60
+ abiItem: viewContract.options.jsonInterface.find(({ name }) => name === 'getTroveInfo'),
61
+ params: [address],
62
+ },
63
+ {
64
+ target: collSurplusPoolContract.options.address,
65
+ abiItem: collSurplusPoolContract.options.jsonInterface.find(({ name }) => name === 'getCollateral'),
66
+ params: [address],
67
+ },
68
+ {
69
+ target: troveManagerContract.options.address,
70
+ abiItem: troveManagerContract.options.jsonInterface.find(({ name }) => name === 'getBorrowingRateWithDecay'),
71
+ params: [],
72
+ },
73
+ {
74
+ target: priceFeedContract.options.address,
75
+ abiItem: priceFeedContract.options.jsonInterface.find(({ name }) => name === 'fetchPrice'),
76
+ params: [],
77
+ },
78
+ {
79
+ target: activePoolContract.options.address,
80
+ abiItem: activePoolContract.options.jsonInterface.find(({ name }) => name === 'getETH'),
81
+ params: [],
82
+ },
83
+ {
84
+ target: activePoolContract.options.address,
85
+ abiItem: activePoolContract.options.jsonInterface.find(({ name }) => name === 'getLUSDDebt'),
86
+ params: [],
87
+ },
88
+ ];
89
+
90
+ const [multiRes, debtInFront] = await Promise.all([
91
+ multicall(multicallData, web3, network),
92
+ getDebtInFront(viewContract, address),
93
+ ]);
94
+
95
+ const recoveryMode = multiRes[0][6];
96
+ const totalETH = multiRes[4][0];
97
+ const totalLUSD = multiRes[5][0];
98
+
99
+ const payload = {
100
+ troveStatus: LIQUITY_TROVE_STATUS_ENUM[+multiRes[0][0].toString()],
101
+ collateral: assetAmountInEth(multiRes[0][1]),
102
+ debtInAsset: assetAmountInEth(multiRes[0][2]),
103
+ TCRatio: assetAmountInEth(multiRes[0][4]),
104
+ recoveryMode,
105
+ claimableCollateral: assetAmountInEth(multiRes[1][0]),
106
+ borrowingRateWithDecay: assetAmountInEth(multiRes[2][0]),
107
+ assetPrice: assetAmountInEth(multiRes[3][0]),
108
+ totalETH,
109
+ totalLUSD,
110
+ debtInFront,
111
+ minCollateralRatio: recoveryMode ? LIQUITY_RECOVERY_MODE_RATIO : LIQUITY_NORMAL_MODE_RATIO,
112
+ priceForRecovery: new Dec(recoveryMode ? LIQUITY_RECOVERY_MODE_RATIO : LIQUITY_NORMAL_MODE_RATIO).mul(totalLUSD).div(totalETH).div(100)
113
+ .toString(),
114
+ };
115
+
116
+ return payload;
117
117
  };