@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.
- package/cjs/config/contracts.d.ts +11 -5
- package/cjs/config/contracts.js +4 -2
- package/cjs/fluid/index.d.ts +1 -0
- package/cjs/fluid/index.js +65 -12
- package/cjs/markets/fluid/index.d.ts +8 -10
- package/cjs/markets/fluid/index.js +466 -77
- package/cjs/markets/index.d.ts +1 -1
- package/cjs/markets/index.js +3 -1
- package/cjs/morphoBlue/index.js +1 -2
- package/cjs/multicall/index.d.ts +1 -0
- package/cjs/multicall/index.js +8 -1
- package/cjs/services/utils.d.ts +1 -0
- package/cjs/services/utils.js +3 -1
- package/cjs/types/contracts/generated/FluidView.d.ts +125 -41
- package/cjs/types/fluid.d.ts +16 -1
- package/cjs/types/fluid.js +3 -0
- package/esm/config/contracts.d.ts +11 -5
- package/esm/config/contracts.js +4 -2
- package/esm/fluid/index.d.ts +1 -0
- package/esm/fluid/index.js +65 -13
- package/esm/markets/fluid/index.d.ts +8 -10
- package/esm/markets/fluid/index.js +460 -71
- package/esm/markets/index.d.ts +1 -1
- package/esm/markets/index.js +1 -1
- package/esm/morphoBlue/index.js +1 -2
- package/esm/multicall/index.d.ts +1 -0
- package/esm/multicall/index.js +6 -0
- package/esm/services/utils.d.ts +1 -0
- package/esm/services/utils.js +1 -0
- package/esm/types/contracts/generated/FluidView.d.ts +125 -41
- package/esm/types/fluid.d.ts +16 -1
- package/esm/types/fluid.js +3 -0
- package/package.json +5 -3
- package/src/config/contracts.js +4 -2
- package/src/fluid/index.ts +69 -12
- package/src/markets/fluid/index.ts +467 -74
- package/src/markets/index.ts +1 -1
- package/src/morphoBlue/index.ts +1 -3
- package/src/multicall/index.ts +10 -1
- package/src/services/utils.ts +3 -1
- package/src/types/contracts/generated/FluidView.ts +159 -79
- package/src/types/fluid.ts +15 -0
package/esm/fluid/index.js
CHANGED
|
@@ -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:
|
|
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
|
|
75
|
+
supplyRate,
|
|
47
76
|
borrowRate: '0',
|
|
48
77
|
};
|
|
49
78
|
const debtAssetData = {
|
|
50
79
|
symbol: debtAsset.symbol,
|
|
51
80
|
address: debtAsset.address,
|
|
52
|
-
price:
|
|
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
|
|
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:
|
|
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
|
|
78
|
-
totalBorrowVault
|
|
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;
|