@defisaver/positions-sdk 0.0.201-fluid-dev → 0.0.201-fluid-dev-2

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 (42) hide show
  1. package/cjs/config/contracts.d.ts +11 -5
  2. package/cjs/config/contracts.js +4 -2
  3. package/cjs/fluid/index.d.ts +1 -0
  4. package/cjs/fluid/index.js +65 -12
  5. package/cjs/markets/fluid/index.d.ts +8 -10
  6. package/cjs/markets/fluid/index.js +466 -77
  7. package/cjs/markets/index.d.ts +1 -1
  8. package/cjs/markets/index.js +3 -1
  9. package/cjs/morphoBlue/index.js +1 -2
  10. package/cjs/multicall/index.d.ts +1 -0
  11. package/cjs/multicall/index.js +8 -1
  12. package/cjs/services/utils.d.ts +1 -0
  13. package/cjs/services/utils.js +3 -1
  14. package/cjs/types/contracts/generated/FluidView.d.ts +125 -41
  15. package/cjs/types/fluid.d.ts +16 -1
  16. package/cjs/types/fluid.js +3 -0
  17. package/esm/config/contracts.d.ts +11 -5
  18. package/esm/config/contracts.js +4 -2
  19. package/esm/fluid/index.d.ts +1 -0
  20. package/esm/fluid/index.js +65 -13
  21. package/esm/markets/fluid/index.d.ts +8 -10
  22. package/esm/markets/fluid/index.js +460 -71
  23. package/esm/markets/index.d.ts +1 -1
  24. package/esm/markets/index.js +1 -1
  25. package/esm/morphoBlue/index.js +1 -2
  26. package/esm/multicall/index.d.ts +1 -0
  27. package/esm/multicall/index.js +6 -0
  28. package/esm/services/utils.d.ts +1 -0
  29. package/esm/services/utils.js +1 -0
  30. package/esm/types/contracts/generated/FluidView.d.ts +125 -41
  31. package/esm/types/fluid.d.ts +16 -1
  32. package/esm/types/fluid.js +3 -0
  33. package/package.json +5 -3
  34. package/src/config/contracts.js +4 -2
  35. package/src/fluid/index.ts +69 -12
  36. package/src/markets/fluid/index.ts +467 -74
  37. package/src/markets/index.ts +1 -1
  38. package/src/morphoBlue/index.ts +1 -3
  39. package/src/multicall/index.ts +10 -1
  40. package/src/services/utils.ts +3 -1
  41. package/src/types/contracts/generated/FluidView.ts +159 -79
  42. package/src/types/fluid.ts +15 -0
@@ -9,10 +9,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import Dec from 'decimal.js';
11
11
  import { getAssetInfo, getAssetInfoByAddress } from '@defisaver/tokens';
12
+ import { NetworkNumber } from '../types/common';
12
13
  import { FluidVaultType, } from '../types';
13
- import { FluidViewContract } from '../contracts';
14
- import { getEthAmountForDecimals } from '../services/utils';
14
+ import { DFSFeedRegistryContract, FeedRegistryContract, FluidViewContract } from '../contracts';
15
+ import { getEthAmountForDecimals, isMainnetNetwork } from '../services/utils';
15
16
  import { getFluidAggregatedData } from '../helpers/fluidHelpers';
17
+ import { chunkAndMulticall } from '../multicall';
18
+ import { getFluidMarketInfoById, getFluidVersionsDataForNetwork } from '../markets/fluid';
19
+ import { USD_QUOTE } from '../constants';
20
+ import { getChainlinkAssetAddress, getWstETHPrice } from '../services/priceService';
16
21
  export const EMPTY_USED_ASSET = {
17
22
  isSupplied: false,
18
23
  isBorrowed: false,
@@ -32,37 +37,67 @@ const parseVaultType = (vaultType) => {
32
37
  default: return FluidVaultType.Unknown;
33
38
  }
34
39
  };
35
- const parseMarketData = (data) => {
40
+ const parseMarketData = (web3, data, network) => __awaiter(void 0, void 0, void 0, function* () {
36
41
  const collAsset = getAssetInfoByAddress(data.supplyToken0);
37
42
  const debtAsset = getAssetInfoByAddress(data.borrowToken0);
43
+ const supplyRate = new Dec(data.supplyRateVault).div(100).toString();
44
+ const borrowRate = new Dec(data.borrowRateVault).div(100).toString();
45
+ const oracleScaleFactor = new Dec(27).add(debtAsset.decimals).sub(collAsset.decimals).toString();
46
+ const oracleScale = new Dec(10).pow(oracleScaleFactor).toString();
47
+ const oraclePrice = new Dec(data.oraclePriceOperate).div(oracleScale).toString();
48
+ const isTokenUSDA = debtAsset.symbol === 'USDA';
49
+ const isMainnet = isMainnetNetwork(network);
50
+ const loanTokenFeedAddress = getChainlinkAssetAddress(debtAsset.symbol, network);
51
+ let loanTokenPrice;
52
+ if (debtAsset.symbol === 'wstETH') {
53
+ // need to handle wstETH for l2s inside getWstETHPrice
54
+ loanTokenPrice = yield getWstETHPrice(web3);
55
+ }
56
+ else if (isMainnet) {
57
+ const feedRegistryContract = FeedRegistryContract(web3, NetworkNumber.Eth);
58
+ loanTokenPrice = isTokenUSDA ? '100000000' : yield feedRegistryContract.methods.latestAnswer(loanTokenFeedAddress, USD_QUOTE).call();
59
+ }
60
+ else {
61
+ // Currently only base network is supported
62
+ const feedRegistryContract = DFSFeedRegistryContract(web3, network);
63
+ const roundPriceData = isTokenUSDA ? { answer: '100000000' } : yield feedRegistryContract.methods.latestRoundData(loanTokenFeedAddress, USD_QUOTE).call();
64
+ loanTokenPrice = roundPriceData.answer;
65
+ }
66
+ const debtPriceParsed = new Dec(loanTokenPrice).div(1e8).toString();
38
67
  const collAssetData = {
39
68
  symbol: collAsset.symbol,
40
69
  address: collAsset.address,
41
- price: getEthAmountForDecimals(data.priceOfSupplyToken0InUSD, 8),
70
+ price: new Dec(debtPriceParsed).mul(oraclePrice).toString(),
42
71
  totalSupply: data.totalSupplyVault,
43
72
  totalBorrow: data.totalBorrowVault,
44
73
  canBeSupplied: true,
45
74
  canBeBorrowed: false,
46
- supplyRate: new Dec(data.supplyRateVault).div(100).toString(),
75
+ supplyRate,
47
76
  borrowRate: '0',
48
77
  };
49
78
  const debtAssetData = {
50
79
  symbol: debtAsset.symbol,
51
80
  address: debtAsset.address,
52
- price: getEthAmountForDecimals(data.priceOfBorrowToken0InUSD, 8),
81
+ price: debtPriceParsed,
53
82
  totalSupply: data.totalSupplyVault,
54
83
  totalBorrow: data.totalBorrowVault,
55
84
  canBeSupplied: false,
56
85
  canBeBorrowed: true,
57
86
  supplyRate: '0',
58
- borrowRate: new Dec(data.borrowRateVault).div(100).toString(),
87
+ borrowRate,
59
88
  };
60
89
  const assetsData = {
61
90
  [collAsset.symbol]: collAssetData,
62
91
  [debtAsset.symbol]: debtAssetData,
63
92
  };
93
+ const marketInfo = getFluidMarketInfoById(+data.vaultId, network);
94
+ const totalSupplyVault = getEthAmountForDecimals(data.totalSupplyVault, collAsset.decimals);
95
+ const totalBorrowVault = getEthAmountForDecimals(data.totalBorrowVault, debtAsset.decimals);
96
+ const liqRatio = new Dec(data.liquidationThreshold).div(100).toString();
97
+ const liqFactor = new Dec(data.liquidationThreshold).div(10000).toString();
64
98
  const marketData = {
65
99
  vaultId: +data.vaultId,
100
+ vaultValue: marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.value,
66
101
  isSmartColl: data.isSmartColl,
67
102
  isSmartDebt: data.isSmartDebt,
68
103
  marketAddress: data.vault,
@@ -70,12 +105,16 @@ const parseMarketData = (data) => {
70
105
  oracle: data.oracle,
71
106
  liquidationPenaltyPercent: new Dec(data.liquidationPenalty).div(100).toString(),
72
107
  collFactor: new Dec(data.collateralFactor).div(10000).toString(),
73
- liquidationRatio: new Dec(data.liquidationThreshold).div(100).toString(),
108
+ liquidationRatio: liqRatio,
109
+ liqFactor,
110
+ minRatio: new Dec(1).div(liqFactor).mul(100).toString(),
74
111
  collAsset0: collAsset.symbol,
75
112
  debtAsset0: debtAsset.symbol,
76
113
  totalPositions: data.totalPositions,
77
- totalSupplyVault: getEthAmountForDecimals(data.totalSupplyVault, collAsset.decimals),
78
- totalBorrowVault: getEthAmountForDecimals(data.totalBorrowVault, debtAsset.decimals),
114
+ totalSupplyVault,
115
+ totalBorrowVault,
116
+ totalSupplyVaultUsd: new Dec(totalSupplyVault).mul(collAssetData.price).toString(),
117
+ totalBorrowVaultUsd: new Dec(totalSupplyVault).mul(debtAssetData.price).toString(),
79
118
  withdrawalLimit: getEthAmountForDecimals(data.withdrawalLimit, collAsset.decimals),
80
119
  withdrawableUntilLimit: getEthAmountForDecimals(data.withdrawableUntilLimit, collAsset.decimals),
81
120
  withdrawable: getEthAmountForDecimals(data.withdrawable, collAsset.decimals),
@@ -86,12 +125,14 @@ const parseMarketData = (data) => {
86
125
  maxBorrowLimit: getEthAmountForDecimals(data.maxBorrowLimit, debtAsset.decimals),
87
126
  baseBorrowLimit: getEthAmountForDecimals(data.baseBorrowLimit, debtAsset.decimals),
88
127
  minimumBorrowing: getEthAmountForDecimals(data.minimumBorrowing, debtAsset.decimals),
128
+ borrowRate,
129
+ supplyRate,
89
130
  };
90
131
  return {
91
132
  assetsData,
92
133
  marketData,
93
134
  };
94
- };
135
+ });
95
136
  export const EMPTY_FLUID_DATA = {
96
137
  usedAssets: {},
97
138
  suppliedUsd: '0',
@@ -129,7 +170,7 @@ const parseUserData = (userPositionData, vaultData) => {
129
170
  export const getFluidMarketData = (web3, network, market) => __awaiter(void 0, void 0, void 0, function* () {
130
171
  const view = FluidViewContract(web3, network);
131
172
  const data = yield view.methods.getVaultData(market.marketAddress).call();
132
- return parseMarketData(data);
173
+ return parseMarketData(web3, data, network);
133
174
  });
134
175
  export const getFluidVaultIdsForUser = (web3, network, user) => __awaiter(void 0, void 0, void 0, function* () {
135
176
  const view = FluidViewContract(web3, network);
@@ -144,10 +185,21 @@ export const getFluidPosition = (web3, network, vaultId, extractedState) => __aw
144
185
  export const getFluidPositionWithMarket = (web3, network, vaultId) => __awaiter(void 0, void 0, void 0, function* () {
145
186
  const view = FluidViewContract(web3, network);
146
187
  const data = yield view.methods.getPositionByNftId(vaultId).call();
147
- const marketData = parseMarketData(data.vault);
188
+ const marketData = yield parseMarketData(web3, data.vault, network);
148
189
  const userData = parseUserData(data.position, marketData);
149
190
  return {
150
191
  userData,
151
192
  marketData,
152
193
  };
153
194
  });
195
+ export const getAllFluidMarketDataChunked = (network, web3) => __awaiter(void 0, void 0, void 0, function* () {
196
+ const versions = getFluidVersionsDataForNetwork(network);
197
+ const view = FluidViewContract(web3, network);
198
+ const calls = versions.map((version) => ({
199
+ target: view.options.address,
200
+ abiItem: view.options.jsonInterface.find((item) => item.name === 'getVaultData'),
201
+ params: [version.marketAddress],
202
+ }));
203
+ const data = yield chunkAndMulticall(calls, 10, 'latest', web3, network);
204
+ return Promise.all(data.map((item, i) => __awaiter(void 0, void 0, void 0, function* () { return parseMarketData(web3, item.vaultData, network); })));
205
+ });
@@ -6,8 +6,6 @@ export declare const WSTETH_ETH_3: (networkId?: NetworkNumber) => FluidMarketInf
6
6
  export declare const WSTETH_USDC_4: (networkId?: NetworkNumber) => FluidMarketInfo;
7
7
  export declare const WSTETH_USDT_5: (networkId?: NetworkNumber) => FluidMarketInfo;
8
8
  export declare const WEETH_WSTETH_6: (networkId?: NetworkNumber) => FluidMarketInfo;
9
- export declare const SUSDE_USDC_7: (networkId?: NetworkNumber) => FluidMarketInfo;
10
- export declare const SUSDE_USDT_8: (networkId?: NetworkNumber) => FluidMarketInfo;
11
9
  export declare const WEETH_USDC_9: (networkId?: NetworkNumber) => FluidMarketInfo;
12
10
  export declare const WEETH_USDT_10: (networkId?: NetworkNumber) => FluidMarketInfo;
13
11
  export declare const ETH_USDC_11: (networkId?: NetworkNumber) => FluidMarketInfo;
@@ -32,7 +30,6 @@ export declare const CBBTC_USDC_29: (networkId?: NetworkNumber) => FluidMarketIn
32
30
  export declare const CBBTC_USDT_30: (networkId?: NetworkNumber) => FluidMarketInfo;
33
31
  export declare const ETH_CBBTC_31: (networkId?: NetworkNumber) => FluidMarketInfo;
34
32
  export declare const WEETH_CBBTC_32: (networkId?: NetworkNumber) => FluidMarketInfo;
35
- export declare const WSTETH_CBBTC_33: (networkId?: NetworkNumber) => FluidMarketInfo;
36
33
  export declare const WSTETH_ETH_WSTETH_ETH_44: (networkId?: NetworkNumber) => FluidMarketInfo;
37
34
  export declare const ETH_USDC_USDT_45: (networkId?: NetworkNumber) => FluidMarketInfo;
38
35
  export declare const WSTETH_USDC_USDT_46: (networkId?: NetworkNumber) => FluidMarketInfo;
@@ -48,14 +45,15 @@ export declare const WSTETH_GHO_55: (networkId?: NetworkNumber) => FluidMarketIn
48
45
  export declare const SUSDE_GHO_56: (networkId?: NetworkNumber) => FluidMarketInfo;
49
46
  export declare const WEETH_GHO_57: (networkId?: NetworkNumber) => FluidMarketInfo;
50
47
  export declare const SUSDS_GHO_58: (networkId?: NetworkNumber) => FluidMarketInfo;
51
- export declare const WBTC_GHO_59: (networkId?: NetworkNumber) => FluidMarketInfo;
52
- export declare const CBBTC_GHO_60: (networkId?: NetworkNumber) => FluidMarketInfo;
53
48
  export declare const GHO_USDC_GHO_USDC_61: (networkId?: NetworkNumber) => FluidMarketInfo;
54
49
  export declare const WEETH_ETH_WSTETH_74: (networkId?: NetworkNumber) => FluidMarketInfo;
55
50
  export declare const USDC_ETH_USDC_ETH_77: (networkId?: NetworkNumber) => FluidMarketInfo;
56
51
  export declare const RSETH_ETH_WSTETH_78: (networkId?: NetworkNumber) => FluidMarketInfo;
57
52
  export declare const RSETH_WSTETH_79: (networkId?: NetworkNumber) => FluidMarketInfo;
58
53
  export declare const WEETHS_ETH_WSTETH_80: (networkId?: NetworkNumber) => FluidMarketInfo;
54
+ export declare const SUSDE_USDT_USDT_92: (networkId?: NetworkNumber) => FluidMarketInfo;
55
+ export declare const USDE_USDT_USDT_93: (networkId?: NetworkNumber) => FluidMarketInfo;
56
+ export declare const LBTC_CBBTC_WBTC_97: (networkId?: NetworkNumber) => FluidMarketInfo;
59
57
  export declare const ETH_USDC_1_ARB: (networkId?: NetworkNumber) => FluidMarketInfo;
60
58
  export declare const ETH_USDT_2_ARB: (networkId?: NetworkNumber) => FluidMarketInfo;
61
59
  export declare const WSTETH_USDC_3_ARB: (networkId?: NetworkNumber) => FluidMarketInfo;
@@ -92,8 +90,6 @@ export declare const FluidMarkets: (networkId: NetworkNumber) => {
92
90
  WSTETH_USDC_4: FluidMarketInfo;
93
91
  WSTETH_USDT_5: FluidMarketInfo;
94
92
  WEETH_WSTETH_6: FluidMarketInfo;
95
- SUSDE_USDC_7: FluidMarketInfo;
96
- SUSDE_USDT_8: FluidMarketInfo;
97
93
  WEETH_USDC_9: FluidMarketInfo;
98
94
  WEETH_USDT_10: FluidMarketInfo;
99
95
  ETH_USDC_11: FluidMarketInfo;
@@ -118,7 +114,6 @@ export declare const FluidMarkets: (networkId: NetworkNumber) => {
118
114
  CBBTC_USDT_30: FluidMarketInfo;
119
115
  ETH_CBBTC_31: FluidMarketInfo;
120
116
  WEETH_CBBTC_32: FluidMarketInfo;
121
- WSTETH_CBBTC_33: FluidMarketInfo;
122
117
  WSTETH_ETH_WSTETH_ETH_44: FluidMarketInfo;
123
118
  ETH_USDC_USDT_45: FluidMarketInfo;
124
119
  WSTETH_USDC_USDT_46: FluidMarketInfo;
@@ -134,14 +129,15 @@ export declare const FluidMarkets: (networkId: NetworkNumber) => {
134
129
  SUSDE_GHO_56: FluidMarketInfo;
135
130
  WEETH_GHO_57: FluidMarketInfo;
136
131
  SUSDS_GHO_58: FluidMarketInfo;
137
- WBTC_GHO_59: FluidMarketInfo;
138
- CBBTC_GHO_60: FluidMarketInfo;
139
132
  GHO_USDC_GHO_USDC_61: FluidMarketInfo;
140
133
  WEETH_ETH_WSTETH_74: FluidMarketInfo;
141
134
  USDC_ETH_USDC_ETH_77: FluidMarketInfo;
142
135
  RSETH_ETH_WSTETH_78: FluidMarketInfo;
143
136
  RSETH_WSTETH_79: FluidMarketInfo;
144
137
  WEETHS_ETH_WSTETH_80: FluidMarketInfo;
138
+ SUSDE_USDT_USDT_92: FluidMarketInfo;
139
+ USDE_USDT_USDT_93: FluidMarketInfo;
140
+ LBTC_CBBTC_WBTC_97: FluidMarketInfo;
145
141
  ETH_USDC_1_ARB: FluidMarketInfo;
146
142
  ETH_USDT_2_ARB: FluidMarketInfo;
147
143
  WSTETH_USDC_3_ARB: FluidMarketInfo;
@@ -172,3 +168,5 @@ export declare const FluidMarkets: (networkId: NetworkNumber) => {
172
168
  WEETH_CBBTC_15_BASE: FluidMarketInfo;
173
169
  WSTETH_CBBTC_16_BASE: FluidMarketInfo;
174
170
  };
171
+ export declare const getFluidVersionsDataForNetwork: (network: NetworkNumber) => FluidMarketInfo[];
172
+ export declare const getFluidMarketInfoById: (vaultId: number, network?: NetworkNumber) => FluidMarketInfo | undefined;