@defisaver/positions-sdk 0.0.201 → 0.0.202

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 (73) hide show
  1. package/.mocharc.json +4 -4
  2. package/.nvmrc +1 -1
  3. package/README.md +69 -69
  4. package/cjs/helpers/morphoBlueHelpers/index.js +66 -66
  5. package/cjs/markets/spark/marketAssets.js +1 -1
  6. package/esm/helpers/morphoBlueHelpers/index.js +66 -66
  7. package/esm/markets/spark/marketAssets.js +1 -1
  8. package/package.json +49 -49
  9. package/src/aaveV2/index.ts +227 -227
  10. package/src/aaveV3/index.ts +625 -625
  11. package/src/assets/index.ts +60 -60
  12. package/src/chickenBonds/index.ts +123 -123
  13. package/src/compoundV2/index.ts +220 -220
  14. package/src/compoundV3/index.ts +291 -291
  15. package/src/config/contracts.js +1109 -1109
  16. package/src/constants/index.ts +6 -6
  17. package/src/contracts.ts +133 -133
  18. package/src/curveUsd/index.ts +229 -229
  19. package/src/eulerV2/index.ts +303 -303
  20. package/src/exchange/index.ts +17 -17
  21. package/src/helpers/aaveHelpers/index.ts +198 -198
  22. package/src/helpers/chickenBondsHelpers/index.ts +23 -23
  23. package/src/helpers/compoundHelpers/index.ts +246 -246
  24. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  25. package/src/helpers/eulerHelpers/index.ts +232 -232
  26. package/src/helpers/index.ts +10 -10
  27. package/src/helpers/liquityV2Helpers/index.ts +79 -79
  28. package/src/helpers/llamaLendHelpers/index.ts +53 -53
  29. package/src/helpers/makerHelpers/index.ts +94 -94
  30. package/src/helpers/morphoBlueHelpers/index.ts +365 -365
  31. package/src/helpers/sparkHelpers/index.ts +150 -150
  32. package/src/index.ts +50 -50
  33. package/src/liquity/index.ts +116 -116
  34. package/src/liquityV2/index.ts +227 -227
  35. package/src/llamaLend/index.ts +275 -275
  36. package/src/maker/index.ts +117 -117
  37. package/src/markets/aave/index.ts +152 -152
  38. package/src/markets/aave/marketAssets.ts +44 -44
  39. package/src/markets/compound/index.ts +213 -213
  40. package/src/markets/compound/marketsAssets.ts +82 -82
  41. package/src/markets/curveUsd/index.ts +69 -69
  42. package/src/markets/euler/index.ts +26 -26
  43. package/src/markets/index.ts +24 -24
  44. package/src/markets/liquityV2/index.ts +43 -43
  45. package/src/markets/llamaLend/contractAddresses.ts +141 -141
  46. package/src/markets/llamaLend/index.ts +235 -235
  47. package/src/markets/morphoBlue/index.ts +895 -895
  48. package/src/markets/spark/index.ts +29 -29
  49. package/src/markets/spark/marketAssets.ts +10 -10
  50. package/src/moneymarket/moneymarketCommonService.ts +80 -80
  51. package/src/morphoAaveV2/index.ts +256 -256
  52. package/src/morphoAaveV3/index.ts +631 -631
  53. package/src/morphoBlue/index.ts +204 -204
  54. package/src/multicall/index.ts +22 -22
  55. package/src/services/dsrService.ts +15 -15
  56. package/src/services/priceService.ts +62 -62
  57. package/src/services/utils.ts +56 -56
  58. package/src/setup.ts +8 -8
  59. package/src/spark/index.ts +461 -461
  60. package/src/staking/staking.ts +220 -220
  61. package/src/types/aave.ts +271 -271
  62. package/src/types/chickenBonds.ts +45 -45
  63. package/src/types/common.ts +84 -84
  64. package/src/types/compound.ts +131 -131
  65. package/src/types/curveUsd.ts +118 -118
  66. package/src/types/euler.ts +171 -171
  67. package/src/types/index.ts +10 -10
  68. package/src/types/liquity.ts +30 -30
  69. package/src/types/liquityV2.ts +118 -118
  70. package/src/types/llamaLend.ts +155 -155
  71. package/src/types/maker.ts +50 -50
  72. package/src/types/morphoBlue.ts +192 -192
  73. package/src/types/spark.ts +131 -131
@@ -1,53 +1,53 @@
1
- import Dec from 'decimal.js';
2
- import {
3
- LlamaLendAggregatedPositionData, LlamaLendAssetsData, LlamaLendMarketData, LlamaLendUsedAssets,
4
- } from '../../types';
5
- import { MMAssetsData, MMUsedAssets, NetworkNumber } from '../../types/common';
6
- import { calcLeverageLiqPrice, getAssetsTotal, isLeveragedPos } from '../../moneymarket';
7
- import { mapRange } from '../../services/utils';
8
- import { calculateNetApy } from '../../staking';
9
-
10
- export const getLlamaLendAggregatedData = ({
11
- loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData, ...rest
12
- }:{
13
- loanExists: boolean, usedAssets: LlamaLendUsedAssets, network: NetworkNumber, selectedMarket: LlamaLendMarketData, numOfBands: number | string, assetsData: LlamaLendAssetsData,
14
- }): LlamaLendAggregatedPositionData => {
15
- const collAsset = selectedMarket.collAsset;
16
- const debtAsset = selectedMarket.baseAsset;
17
- const payload = {} as LlamaLendAggregatedPositionData;
18
-
19
- // payload.supplied = getAssetsTotal(usedAssets, ({ isSupplied }: { isSupplied: boolean }) => isSupplied, ({ supplied }: { supplied: string }) => supplied);
20
- // payload.borrowed = getAssetsTotal(usedAssets, ({ isBorrowed }: { isBorrowed: boolean }) => isBorrowed, ({ borrowed }: { borrowed: string }) => borrowed);
21
- payload.suppliedUsd = getAssetsTotal(usedAssets, ({ collateral }: { collateral: boolean }) => collateral, ({ suppliedUsd }: { suppliedUsd: string }) => suppliedUsd);
22
- payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }: { isBorrowed: boolean }) => isBorrowed, ({ borrowedUsd }: { borrowedUsd: string }) => borrowedUsd);
23
- payload.suppliedForYieldUsd = getAssetsTotal(usedAssets, ({ isSupplied }: { isSupplied: boolean }) => isSupplied, ({ suppliedForYield }: { suppliedForYield?: string }) => suppliedForYield || '0');
24
-
25
- const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy({ usedAssets, assetsData: assetsData as unknown as MMAssetsData });
26
- payload.netApy = netApy;
27
- payload.incentiveUsd = incentiveUsd;
28
- payload.totalInterestUsd = totalInterestUsd;
29
-
30
- payload.ratio = loanExists
31
- ? new Dec(payload.suppliedUsd)
32
- .dividedBy(payload.borrowedUsd)
33
- .times(100)
34
- .toString()
35
- : '0';
36
-
37
- // this is all approximation
38
- payload.minAllowedRatio = mapRange(numOfBands, 4, 50, 115, 140); // collateral ratio
39
- payload.collFactor = new Dec(1).div(payload.minAllowedRatio).mul(100).toString(); // collateral factor = 1 / collateral ratio
40
- // only take in consideration collAsset
41
- payload.borrowLimitUsd = usedAssets?.[collAsset]?.isSupplied
42
- ? new Dec(usedAssets[collAsset].suppliedUsd).mul(payload.collFactor).toString()
43
- : '0';
44
-
45
- const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets as unknown as MMUsedAssets);
46
- payload.leveragedType = leveragedType;
47
- if (leveragedType !== '') {
48
- payload.leveragedAsset = leveragedAsset;
49
- payload.liquidationPrice = calcLeverageLiqPrice(leveragedType, usedAssets[collAsset].price, payload.borrowedUsd, payload.borrowLimitUsd);
50
- }
51
-
52
- return payload;
53
- };
1
+ import Dec from 'decimal.js';
2
+ import {
3
+ LlamaLendAggregatedPositionData, LlamaLendAssetsData, LlamaLendMarketData, LlamaLendUsedAssets,
4
+ } from '../../types';
5
+ import { MMAssetsData, MMUsedAssets, NetworkNumber } from '../../types/common';
6
+ import { calcLeverageLiqPrice, getAssetsTotal, isLeveragedPos } from '../../moneymarket';
7
+ import { mapRange } from '../../services/utils';
8
+ import { calculateNetApy } from '../../staking';
9
+
10
+ export const getLlamaLendAggregatedData = ({
11
+ loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData, ...rest
12
+ }:{
13
+ loanExists: boolean, usedAssets: LlamaLendUsedAssets, network: NetworkNumber, selectedMarket: LlamaLendMarketData, numOfBands: number | string, assetsData: LlamaLendAssetsData,
14
+ }): LlamaLendAggregatedPositionData => {
15
+ const collAsset = selectedMarket.collAsset;
16
+ const debtAsset = selectedMarket.baseAsset;
17
+ const payload = {} as LlamaLendAggregatedPositionData;
18
+
19
+ // payload.supplied = getAssetsTotal(usedAssets, ({ isSupplied }: { isSupplied: boolean }) => isSupplied, ({ supplied }: { supplied: string }) => supplied);
20
+ // payload.borrowed = getAssetsTotal(usedAssets, ({ isBorrowed }: { isBorrowed: boolean }) => isBorrowed, ({ borrowed }: { borrowed: string }) => borrowed);
21
+ payload.suppliedUsd = getAssetsTotal(usedAssets, ({ collateral }: { collateral: boolean }) => collateral, ({ suppliedUsd }: { suppliedUsd: string }) => suppliedUsd);
22
+ payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }: { isBorrowed: boolean }) => isBorrowed, ({ borrowedUsd }: { borrowedUsd: string }) => borrowedUsd);
23
+ payload.suppliedForYieldUsd = getAssetsTotal(usedAssets, ({ isSupplied }: { isSupplied: boolean }) => isSupplied, ({ suppliedForYield }: { suppliedForYield?: string }) => suppliedForYield || '0');
24
+
25
+ const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy({ usedAssets, assetsData: assetsData as unknown as MMAssetsData });
26
+ payload.netApy = netApy;
27
+ payload.incentiveUsd = incentiveUsd;
28
+ payload.totalInterestUsd = totalInterestUsd;
29
+
30
+ payload.ratio = loanExists
31
+ ? new Dec(payload.suppliedUsd)
32
+ .dividedBy(payload.borrowedUsd)
33
+ .times(100)
34
+ .toString()
35
+ : '0';
36
+
37
+ // this is all approximation
38
+ payload.minAllowedRatio = mapRange(numOfBands, 4, 50, 115, 140); // collateral ratio
39
+ payload.collFactor = new Dec(1).div(payload.minAllowedRatio).mul(100).toString(); // collateral factor = 1 / collateral ratio
40
+ // only take in consideration collAsset
41
+ payload.borrowLimitUsd = usedAssets?.[collAsset]?.isSupplied
42
+ ? new Dec(usedAssets[collAsset].suppliedUsd).mul(payload.collFactor).toString()
43
+ : '0';
44
+
45
+ const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets as unknown as MMUsedAssets);
46
+ payload.leveragedType = leveragedType;
47
+ if (leveragedType !== '') {
48
+ payload.leveragedAsset = leveragedAsset;
49
+ payload.liquidationPrice = calcLeverageLiqPrice(leveragedType, usedAssets[collAsset].price, payload.borrowedUsd, payload.borrowLimitUsd);
50
+ }
51
+
52
+ return payload;
53
+ };
@@ -1,95 +1,95 @@
1
- import Web3 from 'web3';
2
- import Dec from 'decimal.js';
3
- import { Blockish, NetworkNumber } from '../../types/common';
4
- import {
5
- McdDogContract, McdJugContract, McdSpotterContract, McdVatContract,
6
- } from '../../contracts';
7
- import { multicall } from '../../multicall';
8
- import { SECONDS_PER_YEAR } from '../../constants';
9
- import { bytesToString } from '../../services/utils';
10
- import { IlkInfo } from '../../types';
11
-
12
- export const getUnclaimedCollateral = async (web3: Web3, network: NetworkNumber, urn: string, ilk: string) => {
13
- const vatContract = McdVatContract(web3, network);
14
- const coll = await vatContract.methods.gem(ilk, urn).call();
15
- return coll;
16
- };
17
-
18
- export const getCollateralInfo = async (ilk: string, web3: Web3, network: NetworkNumber, block: Blockish = 'latest'): Promise<IlkInfo> => {
19
- const spotterContract = McdSpotterContract(web3, network);
20
- const vatContract = McdVatContract(web3, network);
21
- const dogContract = McdDogContract(web3, network);
22
- const jugContract = McdJugContract(web3, network);
23
-
24
- const multicallData = [
25
- {
26
- target: spotterContract.options.address,
27
- abiItem: spotterContract.options.jsonInterface.find(({ name }) => name === 'par'),
28
- params: [],
29
- },
30
- {
31
- target: spotterContract.options.address,
32
- abiItem: spotterContract.options.jsonInterface.find(({ name }) => name === 'ilks'),
33
- params: [ilk],
34
- },
35
- {
36
- target: vatContract.options.address,
37
- abiItem: vatContract.options.jsonInterface.find(({ name }) => name === 'ilks'),
38
- params: [ilk],
39
- },
40
- {
41
- target: jugContract.options.address,
42
- abiItem: jugContract.options.jsonInterface.find(({ name }) => name === 'ilks'),
43
- params: [ilk],
44
- },
45
- {
46
- target: jugContract.options.address,
47
- abiItem: jugContract.options.jsonInterface.find(({ name }) => name === 'drip'),
48
- params: [ilk],
49
- },
50
- {
51
- target: dogContract.options.address,
52
- abiItem: dogContract.options.jsonInterface.find(({ name }) => name === 'chop'),
53
- params: [ilk],
54
- },
55
- ];
56
-
57
- const multiRes = await multicall(multicallData, web3, network, block);
58
-
59
- const par = new Dec(multiRes[0][0].toString()).div(1e27).toString();
60
- const mat = new Dec(multiRes[1][1].toString()).div(1e27).toString();
61
- const art = new Dec(multiRes[2][0].toString()).toString();
62
- const rate = new Dec(multiRes[2][1].toString()).toString();
63
- const spot = new Dec(multiRes[2][2].toString()).div(1e27).toString();
64
- const line = new Dec(multiRes[2][3].toString()).div(1e45).toString();
65
- const dust = new Dec(multiRes[2][1].toString()).div(1e45).toString();
66
- const duty = new Dec(multiRes[3][0].toString()).toString();
67
- const futureRate = new Dec(multiRes[4][0].toString()).toString();
68
- const chop = new Dec(multiRes[5][0].toString()).div(1e18).toString();
69
-
70
- const stabilityFee = new Dec(duty.toString())
71
- .div(1e27)
72
- .pow(SECONDS_PER_YEAR)
73
- .minus(1)
74
- .mul(100)
75
- .toNumber();
76
- const liquidationFee = new Dec(chop).mul(100).sub(100).toString();
77
- const globalDebtCurrent = new Dec(art).div(1e18).mul(new Dec(futureRate).div(1e27)).toString();
78
- const globalDebtCeiling = line;
79
- const creatableDebt = new Dec(globalDebtCeiling).sub(globalDebtCurrent).toString();
80
-
81
- return {
82
- ilkLabel: bytesToString(ilk),
83
- currentRate: rate,
84
- futureRate,
85
- minDebt: dust,
86
- globalDebtCurrent,
87
- globalDebtCeiling,
88
- assetPrice: new Dec(spot).times(par).times(mat).toString(),
89
- liqRatio: mat,
90
- liqPercent: +mat * 100,
91
- stabilityFee,
92
- liquidationFee: new Dec(liquidationFee).lt(0) ? '0' : liquidationFee,
93
- creatableDebt,
94
- };
1
+ import Web3 from 'web3';
2
+ import Dec from 'decimal.js';
3
+ import { Blockish, NetworkNumber } from '../../types/common';
4
+ import {
5
+ McdDogContract, McdJugContract, McdSpotterContract, McdVatContract,
6
+ } from '../../contracts';
7
+ import { multicall } from '../../multicall';
8
+ import { SECONDS_PER_YEAR } from '../../constants';
9
+ import { bytesToString } from '../../services/utils';
10
+ import { IlkInfo } from '../../types';
11
+
12
+ export const getUnclaimedCollateral = async (web3: Web3, network: NetworkNumber, urn: string, ilk: string) => {
13
+ const vatContract = McdVatContract(web3, network);
14
+ const coll = await vatContract.methods.gem(ilk, urn).call();
15
+ return coll;
16
+ };
17
+
18
+ export const getCollateralInfo = async (ilk: string, web3: Web3, network: NetworkNumber, block: Blockish = 'latest'): Promise<IlkInfo> => {
19
+ const spotterContract = McdSpotterContract(web3, network);
20
+ const vatContract = McdVatContract(web3, network);
21
+ const dogContract = McdDogContract(web3, network);
22
+ const jugContract = McdJugContract(web3, network);
23
+
24
+ const multicallData = [
25
+ {
26
+ target: spotterContract.options.address,
27
+ abiItem: spotterContract.options.jsonInterface.find(({ name }) => name === 'par'),
28
+ params: [],
29
+ },
30
+ {
31
+ target: spotterContract.options.address,
32
+ abiItem: spotterContract.options.jsonInterface.find(({ name }) => name === 'ilks'),
33
+ params: [ilk],
34
+ },
35
+ {
36
+ target: vatContract.options.address,
37
+ abiItem: vatContract.options.jsonInterface.find(({ name }) => name === 'ilks'),
38
+ params: [ilk],
39
+ },
40
+ {
41
+ target: jugContract.options.address,
42
+ abiItem: jugContract.options.jsonInterface.find(({ name }) => name === 'ilks'),
43
+ params: [ilk],
44
+ },
45
+ {
46
+ target: jugContract.options.address,
47
+ abiItem: jugContract.options.jsonInterface.find(({ name }) => name === 'drip'),
48
+ params: [ilk],
49
+ },
50
+ {
51
+ target: dogContract.options.address,
52
+ abiItem: dogContract.options.jsonInterface.find(({ name }) => name === 'chop'),
53
+ params: [ilk],
54
+ },
55
+ ];
56
+
57
+ const multiRes = await multicall(multicallData, web3, network, block);
58
+
59
+ const par = new Dec(multiRes[0][0].toString()).div(1e27).toString();
60
+ const mat = new Dec(multiRes[1][1].toString()).div(1e27).toString();
61
+ const art = new Dec(multiRes[2][0].toString()).toString();
62
+ const rate = new Dec(multiRes[2][1].toString()).toString();
63
+ const spot = new Dec(multiRes[2][2].toString()).div(1e27).toString();
64
+ const line = new Dec(multiRes[2][3].toString()).div(1e45).toString();
65
+ const dust = new Dec(multiRes[2][1].toString()).div(1e45).toString();
66
+ const duty = new Dec(multiRes[3][0].toString()).toString();
67
+ const futureRate = new Dec(multiRes[4][0].toString()).toString();
68
+ const chop = new Dec(multiRes[5][0].toString()).div(1e18).toString();
69
+
70
+ const stabilityFee = new Dec(duty.toString())
71
+ .div(1e27)
72
+ .pow(SECONDS_PER_YEAR)
73
+ .minus(1)
74
+ .mul(100)
75
+ .toNumber();
76
+ const liquidationFee = new Dec(chop).mul(100).sub(100).toString();
77
+ const globalDebtCurrent = new Dec(art).div(1e18).mul(new Dec(futureRate).div(1e27)).toString();
78
+ const globalDebtCeiling = line;
79
+ const creatableDebt = new Dec(globalDebtCeiling).sub(globalDebtCurrent).toString();
80
+
81
+ return {
82
+ ilkLabel: bytesToString(ilk),
83
+ currentRate: rate,
84
+ futureRate,
85
+ minDebt: dust,
86
+ globalDebtCurrent,
87
+ globalDebtCeiling,
88
+ assetPrice: new Dec(spot).times(par).times(mat).toString(),
89
+ liqRatio: mat,
90
+ liqPercent: +mat * 100,
91
+ stabilityFee,
92
+ liquidationFee: new Dec(liquidationFee).lt(0) ? '0' : liquidationFee,
93
+ creatableDebt,
94
+ };
95
95
  };