@defisaver/positions-sdk 2.1.160-shifter-v2-dev → 2.1.161-portfolio-api-dev
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/aaveV2/index.js +0 -2
- package/cjs/curveUsd/index.d.ts +2 -5
- package/cjs/curveUsd/index.js +15 -30
- package/cjs/fluid/index.d.ts +0 -5
- package/cjs/fluid/index.js +1 -36
- package/cjs/helpers/aaveHelpers/index.js +0 -3
- package/cjs/helpers/aaveV4Helpers/index.js +0 -1
- package/cjs/helpers/compoundHelpers/index.js +0 -2
- package/cjs/helpers/curveUsdHelpers/index.d.ts +1 -3
- package/cjs/helpers/curveUsdHelpers/index.js +2 -16
- package/cjs/helpers/fluidHelpers/index.js +0 -1
- package/cjs/helpers/liquityV2Helpers/index.js +0 -1
- package/cjs/helpers/llamaLendHelpers/index.js +0 -2
- package/cjs/helpers/makerHelpers/index.d.ts +1 -1
- package/cjs/helpers/makerHelpers/index.js +2 -2
- package/cjs/helpers/morphoBlueHelpers/index.js +0 -2
- package/cjs/helpers/morphoMidnightHelpers/index.js +0 -2
- package/cjs/helpers/sparkHelpers/index.js +0 -1
- package/cjs/liquity/index.js +2 -16
- package/cjs/maker/index.d.ts +2 -7
- package/cjs/maker/index.js +12 -45
- package/cjs/markets/index.d.ts +0 -1
- package/cjs/markets/index.js +1 -3
- package/cjs/portfolio/index.d.ts +1 -5
- package/cjs/portfolio/index.js +7 -277
- package/cjs/staking/staking.d.ts +0 -20
- package/cjs/staking/staking.js +1 -19
- package/cjs/types/aave.d.ts +15 -4
- package/cjs/types/aaveV4.d.ts +0 -1
- package/cjs/types/compound.d.ts +26 -4
- package/cjs/types/curveUsd.d.ts +9 -7
- package/cjs/types/fluid.d.ts +0 -1
- package/cjs/types/liquity.d.ts +0 -4
- package/cjs/types/liquityV2.d.ts +0 -2
- package/cjs/types/llamaLend.d.ts +12 -1
- package/cjs/types/maker.d.ts +0 -4
- package/cjs/types/morphoBlue.d.ts +2 -2
- package/cjs/types/morphoMidnight.d.ts +0 -1
- package/cjs/types/portfolio.d.ts +10 -26
- package/cjs/types/spark.d.ts +21 -3
- package/esm/aaveV2/index.js +0 -2
- package/esm/curveUsd/index.d.ts +2 -5
- package/esm/curveUsd/index.js +15 -30
- package/esm/fluid/index.d.ts +0 -5
- package/esm/fluid/index.js +0 -33
- package/esm/helpers/aaveHelpers/index.js +0 -3
- package/esm/helpers/aaveV4Helpers/index.js +0 -1
- package/esm/helpers/compoundHelpers/index.js +0 -2
- package/esm/helpers/curveUsdHelpers/index.d.ts +1 -3
- package/esm/helpers/curveUsdHelpers/index.js +2 -16
- package/esm/helpers/fluidHelpers/index.js +0 -1
- package/esm/helpers/liquityV2Helpers/index.js +0 -1
- package/esm/helpers/llamaLendHelpers/index.js +0 -2
- package/esm/helpers/makerHelpers/index.d.ts +1 -1
- package/esm/helpers/makerHelpers/index.js +2 -2
- package/esm/helpers/morphoBlueHelpers/index.js +0 -2
- package/esm/helpers/morphoMidnightHelpers/index.js +0 -2
- package/esm/helpers/sparkHelpers/index.js +0 -1
- package/esm/liquity/index.js +2 -16
- package/esm/maker/index.d.ts +2 -7
- package/esm/maker/index.js +13 -44
- package/esm/markets/index.d.ts +0 -1
- package/esm/markets/index.js +0 -1
- package/esm/portfolio/index.d.ts +1 -5
- package/esm/portfolio/index.js +10 -279
- package/esm/staking/staking.d.ts +0 -20
- package/esm/staking/staking.js +0 -17
- package/esm/types/aave.d.ts +15 -4
- package/esm/types/aaveV4.d.ts +0 -1
- package/esm/types/compound.d.ts +26 -4
- package/esm/types/curveUsd.d.ts +9 -7
- package/esm/types/fluid.d.ts +0 -1
- package/esm/types/liquity.d.ts +0 -4
- package/esm/types/liquityV2.d.ts +0 -2
- package/esm/types/llamaLend.d.ts +12 -1
- package/esm/types/maker.d.ts +0 -4
- package/esm/types/morphoBlue.d.ts +2 -2
- package/esm/types/morphoMidnight.d.ts +0 -1
- package/esm/types/portfolio.d.ts +10 -26
- package/esm/types/spark.d.ts +21 -3
- package/package.json +1 -1
- package/src/aaveV2/index.ts +0 -2
- package/src/curveUsd/index.ts +16 -33
- package/src/fluid/index.ts +0 -40
- package/src/helpers/aaveHelpers/index.ts +0 -3
- package/src/helpers/aaveV4Helpers/index.ts +0 -1
- package/src/helpers/compoundHelpers/index.ts +0 -2
- package/src/helpers/curveUsdHelpers/index.ts +2 -23
- package/src/helpers/fluidHelpers/index.ts +0 -1
- package/src/helpers/liquityV2Helpers/index.ts +0 -1
- package/src/helpers/llamaLendHelpers/index.ts +0 -2
- package/src/helpers/makerHelpers/index.ts +1 -2
- package/src/helpers/morphoBlueHelpers/index.ts +0 -2
- package/src/helpers/morphoMidnightHelpers/index.ts +0 -2
- package/src/helpers/sparkHelpers/index.ts +0 -1
- package/src/liquity/index.ts +2 -17
- package/src/maker/index.ts +29 -77
- package/src/markets/index.ts +1 -2
- package/src/portfolio/index.ts +8 -261
- package/src/staking/staking.ts +0 -28
- package/src/types/aave.ts +18 -4
- package/src/types/aaveV4.ts +0 -1
- package/src/types/compound.ts +38 -4
- package/src/types/curveUsd.ts +17 -8
- package/src/types/fluid.ts +0 -1
- package/src/types/liquity.ts +0 -6
- package/src/types/liquityV2.ts +0 -2
- package/src/types/llamaLend.ts +19 -1
- package/src/types/maker.ts +0 -6
- package/src/types/morphoBlue.ts +3 -2
- package/src/types/morphoMidnight.ts +0 -1
- package/src/types/portfolio.ts +12 -31
- package/src/types/spark.ts +25 -3
- package/cjs/markets/maker/index.d.ts +0 -1
- package/cjs/markets/maker/index.js +0 -13
- package/esm/markets/maker/index.d.ts +0 -1
- package/esm/markets/maker/index.js +0 -10
- package/src/markets/maker/index.ts +0 -10
package/cjs/aaveV2/index.js
CHANGED
|
@@ -177,8 +177,6 @@ const _getAaveV2AccountData = (provider, network, address, assetsData, market) =
|
|
|
177
177
|
payload.collRatio = payload.borrowedUsd && payload.borrowedUsd !== '0'
|
|
178
178
|
? new decimal_js_1.default(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString()
|
|
179
179
|
: '0';
|
|
180
|
-
// Aave v2 has no LTV-0 fallback (AaveV3View only), so its safety ratio is the plain ratio.
|
|
181
|
-
payload.safetyRatio = payload.ratio;
|
|
182
180
|
// Calculate borrow limits per asset
|
|
183
181
|
Object.values(payload.usedAssets).forEach((item) => {
|
|
184
182
|
if (item.isBorrowed) {
|
package/cjs/curveUsd/index.d.ts
CHANGED
|
@@ -5,9 +5,6 @@ export declare const _getCurveUsdGlobalData: (provider: Client, network: Network
|
|
|
5
5
|
export declare const getCurveUsdGlobalData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: CrvUSDMarketData) => Promise<CrvUSDGlobalMarketData>;
|
|
6
6
|
export declare const _getCrvUsdAccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
|
|
7
7
|
export declare const getCrvUsdAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*/
|
|
11
|
-
export declare const _getCurveUsdUserData: (provider: Client, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string, borrowRate?: string) => Promise<CrvUSDUserData>;
|
|
12
|
-
export declare const getCurveUsdUserData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string, borrowRate?: string) => Promise<CrvUSDUserData>;
|
|
8
|
+
export declare const _getCurveUsdUserData: (provider: Client, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string) => Promise<CrvUSDUserData>;
|
|
9
|
+
export declare const getCurveUsdUserData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string) => Promise<CrvUSDUserData>;
|
|
13
10
|
export declare const getCurveUsdFullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData) => Promise<CrvUSDUserData>;
|
package/cjs/curveUsd/index.js
CHANGED
|
@@ -22,12 +22,6 @@ const curveUsdHelpers_1 = require("../helpers/curveUsdHelpers");
|
|
|
22
22
|
const markets_1 = require("../markets");
|
|
23
23
|
const utils_1 = require("../services/utils");
|
|
24
24
|
const viem_1 = require("../services/viem");
|
|
25
|
-
const staking_1 = require("../staking");
|
|
26
|
-
/** Converts a per-second AMM rate (wei, 18 decimals) into a yearly compounded borrow APY in %. */
|
|
27
|
-
const ammRateToBorrowApy = (rateWei) => {
|
|
28
|
-
const exponent = new decimal_js_1.default((0, tokens_1.assetAmountInEth)(rateWei)).mul(365).mul(86400);
|
|
29
|
-
return new decimal_js_1.default(new decimal_js_1.default(2.718281828459).pow(exponent).minus(1)).mul(100).toString();
|
|
30
|
-
};
|
|
31
25
|
const getAndFormatBands = (provider, network, selectedMarket, _minBand, _maxBand) => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
26
|
const contract = (0, contracts_1.CrvUSDViewContractViem)(provider, network);
|
|
33
27
|
const minBand = parseInt(_minBand, 10);
|
|
@@ -77,8 +71,14 @@ const _getCurveUsdGlobalData = (provider, network, selectedMarket) => __awaiter(
|
|
|
77
71
|
// all prices are in 18 decimals
|
|
78
72
|
const totalDebt = (0, tokens_1.assetAmountInEth)(data.totalDebt.toString(), debtAsset);
|
|
79
73
|
const ammPrice = (0, tokens_1.assetAmountInEth)(data.ammPrice.toString(), debtAsset);
|
|
80
|
-
const
|
|
81
|
-
const
|
|
74
|
+
const rate = (0, tokens_1.assetAmountInEth)(data.ammRate.toString());
|
|
75
|
+
const futureRate = (0, tokens_1.assetAmountInEth)(data.monetaryPolicyRate.toString());
|
|
76
|
+
const exponentRate = new decimal_js_1.default(rate).mul(365).mul(86400);
|
|
77
|
+
const exponentFutureRate = new decimal_js_1.default(futureRate).mul(365).mul(86400);
|
|
78
|
+
const borrowRate = new decimal_js_1.default(new decimal_js_1.default(2.718281828459).pow(exponentRate).minus(1)).mul(100)
|
|
79
|
+
.toString();
|
|
80
|
+
const futureBorrowRate = new decimal_js_1.default(new decimal_js_1.default(2.718281828459).pow(exponentFutureRate).minus(1)).mul(100)
|
|
81
|
+
.toString();
|
|
82
82
|
const bandsData = yield getAndFormatBands(provider, network, selectedMarket, data.minBand.toString(), data.maxBand.toString());
|
|
83
83
|
const leftToBorrow = new decimal_js_1.default(debtCeiling.toString()).minus(totalDebt).toString();
|
|
84
84
|
const loanDiscount = (0, tokens_1.assetAmountInEth)(loanDiscountWei.toString(), debtAsset);
|
|
@@ -131,20 +131,11 @@ const _getCrvUsdAccountBalances = (provider, network, block, addressMapping, add
|
|
|
131
131
|
exports._getCrvUsdAccountBalances = _getCrvUsdAccountBalances;
|
|
132
132
|
const getCrvUsdAccountBalances = (provider, network, block, addressMapping, address, controllerAddress) => __awaiter(void 0, void 0, void 0, function* () { return (0, exports._getCrvUsdAccountBalances)((0, viem_1.getViemProvider)(provider, network), network, block, addressMapping, address, controllerAddress); });
|
|
133
133
|
exports.getCrvUsdAccountBalances = getCrvUsdAccountBalances;
|
|
134
|
-
|
|
135
|
-
* @param borrowRate market borrow APY in % (`CrvUSDGlobalMarketData.borrowRate`); when omitted it is read from the view contract
|
|
136
|
-
*/
|
|
137
|
-
const _getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand, borrowRate) => __awaiter(void 0, void 0, void 0, function* () {
|
|
134
|
+
const _getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand) => __awaiter(void 0, void 0, void 0, function* () {
|
|
138
135
|
const contract = (0, contracts_1.CrvUSDViewContractViem)(provider, network);
|
|
136
|
+
const data = yield contract.read.userData([selectedMarket.controllerAddress, address]);
|
|
139
137
|
const collAsset = selectedMarket.collAsset;
|
|
140
138
|
const debtAsset = selectedMarket.baseAsset;
|
|
141
|
-
const [data, collStakingApy, marketBorrowRate] = yield Promise.all([
|
|
142
|
-
contract.read.userData([selectedMarket.controllerAddress, address]),
|
|
143
|
-
staking_1.STAKING_ASSETS.includes(collAsset) ? (0, staking_1.getStakingApy)(collAsset) : Promise.resolve('0'),
|
|
144
|
-
borrowRate !== undefined
|
|
145
|
-
? Promise.resolve(borrowRate)
|
|
146
|
-
: contract.read.globalData([selectedMarket.controllerAddress]).then((globalData) => ammRateToBorrowApy(globalData.ammRate.toString())),
|
|
147
|
-
]);
|
|
148
139
|
const health = (0, tokens_1.assetAmountInEth)(data.health.toString());
|
|
149
140
|
const healthPercent = new decimal_js_1.default(health).mul(100).toString();
|
|
150
141
|
const collPrice = (0, tokens_1.assetAmountInEth)(data.collateralPrice.toString(), debtAsset);
|
|
@@ -175,7 +166,7 @@ const _getCurveUsdUserData = (provider, network, address, selectedMarket, active
|
|
|
175
166
|
isBorrowed: new decimal_js_1.default(debtBorrowed).gt('0'),
|
|
176
167
|
symbol: 'crvUSD',
|
|
177
168
|
price: '1',
|
|
178
|
-
interestRate:
|
|
169
|
+
interestRate: '0',
|
|
179
170
|
},
|
|
180
171
|
} : {};
|
|
181
172
|
const priceHigh = (0, tokens_1.assetAmountInEth)(data.priceHigh.toString());
|
|
@@ -187,22 +178,16 @@ const _getCurveUsdUserData = (provider, network, address, selectedMarket, active
|
|
|
187
178
|
healthPercent,
|
|
188
179
|
priceHigh,
|
|
189
180
|
priceLow, liquidationDiscount: (0, tokens_1.assetAmountInEth)(data.liquidationDiscount.toString()), numOfBands: data.N.toString(), usedAssets,
|
|
190
|
-
status
|
|
191
|
-
loanExists: data.loanExists,
|
|
192
|
-
usedAssets,
|
|
193
|
-
network: common_1.NetworkNumber.Eth,
|
|
194
|
-
selectedMarket,
|
|
195
|
-
numOfBands: data.N.toString(),
|
|
196
|
-
borrowRate: marketBorrowRate,
|
|
197
|
-
collStakingApy,
|
|
181
|
+
status }), (0, curveUsdHelpers_1.getCrvUsdAggregatedData)({
|
|
182
|
+
loanExists: data.loanExists, usedAssets, network: common_1.NetworkNumber.Eth, selectedMarket, numOfBands: data.N.toString(),
|
|
198
183
|
})), { userBands });
|
|
199
184
|
});
|
|
200
185
|
exports._getCurveUsdUserData = _getCurveUsdUserData;
|
|
201
|
-
const getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand
|
|
186
|
+
const getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand) => __awaiter(void 0, void 0, void 0, function* () { return (0, exports._getCurveUsdUserData)((0, viem_1.getViemProvider)(provider, network), network, address, selectedMarket, activeBand); });
|
|
202
187
|
exports.getCurveUsdUserData = getCurveUsdUserData;
|
|
203
188
|
const getCurveUsdFullPositionData = (provider, network, address, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
|
|
204
189
|
const marketData = yield (0, exports.getCurveUsdGlobalData)(provider, network, selectedMarket);
|
|
205
|
-
const positionData = yield (0, exports.getCurveUsdUserData)(provider, network, address, selectedMarket, marketData.activeBand
|
|
190
|
+
const positionData = yield (0, exports.getCurveUsdUserData)(provider, network, address, selectedMarket, marketData.activeBand);
|
|
206
191
|
return positionData;
|
|
207
192
|
});
|
|
208
193
|
exports.getCurveUsdFullPositionData = getCurveUsdFullPositionData;
|
package/cjs/fluid/index.d.ts
CHANGED
|
@@ -133,7 +133,6 @@ export declare const _getUserPositions: (provider: PublicClient, network: Networ
|
|
|
133
133
|
merklBorrowIncentives: import("../types").IncentiveData[];
|
|
134
134
|
ratio: string;
|
|
135
135
|
collRatio: string;
|
|
136
|
-
safetyRatio: string;
|
|
137
136
|
minRatio: string;
|
|
138
137
|
totalInterestUsd: string;
|
|
139
138
|
leveragedType?: import("../types").LeverageType;
|
|
@@ -168,7 +167,6 @@ export declare const getUserPositions: (provider: EthereumProvider, network: Net
|
|
|
168
167
|
merklBorrowIncentives: import("../types").IncentiveData[];
|
|
169
168
|
ratio: string;
|
|
170
169
|
collRatio: string;
|
|
171
|
-
safetyRatio: string;
|
|
172
170
|
minRatio: string;
|
|
173
171
|
totalInterestUsd: string;
|
|
174
172
|
leveragedType?: import("../types").LeverageType;
|
|
@@ -203,7 +201,6 @@ export declare const _getUserPositionsPortfolio: (provider: PublicClient, networ
|
|
|
203
201
|
merklBorrowIncentives: import("../types").IncentiveData[];
|
|
204
202
|
ratio: string;
|
|
205
203
|
collRatio: string;
|
|
206
|
-
safetyRatio: string;
|
|
207
204
|
minRatio: string;
|
|
208
205
|
totalInterestUsd: string;
|
|
209
206
|
leveragedType?: import("../types").LeverageType;
|
|
@@ -224,5 +221,3 @@ export declare const _getUserPositionsPortfolio: (provider: PublicClient, networ
|
|
|
224
221
|
nftId: string;
|
|
225
222
|
} | undefined;
|
|
226
223
|
}[]>;
|
|
227
|
-
export declare const _getAllFluidMarketDataPortfolio: (provider: PublicClient, network: NetworkNumber) => Promise<Record<string, FluidMarketData>>;
|
|
228
|
-
export declare const getAllFluidMarketDataPortfolio: (provider: EthereumProvider, network: NetworkNumber) => Promise<Record<string, FluidMarketData>>;
|
package/cjs/fluid/index.js
CHANGED
|
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports._getUserPositionsPortfolio = exports.getUserPositions = exports._getUserPositions = exports.getAllUserEarnPositionsWithFTokens = exports._getAllUserEarnPositionsWithFTokens = exports.getFluidDepositData = exports._getFluidDepositData = exports.getFluidTokenData = exports._getFluidTokenData = exports.getAllFluidMarketDataChunked = exports._getAllFluidMarketDataChunked = exports.getFluidPositionWithMarket = exports._getFluidPositionWithMarket = exports.getFluidPosition = exports._getFluidPosition = exports.getFluidVaultIdsForUser = exports._getFluidVaultIdsForUser = exports.getFluidMarketData = exports._getFluidMarketData = exports.EMPTY_FLUID_DATA = exports.EMPTY_USED_ASSET = exports.attachFluidMerklIncentives = exports.getFluidMerklCampaigns = exports.buildFluidMerklRewardMap = exports.FluidMerklOpportunityType = void 0;
|
|
16
16
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
17
17
|
const tokens_1 = require("@defisaver/tokens");
|
|
18
18
|
const common_1 = require("../types/common");
|
|
@@ -1410,38 +1410,3 @@ const _getUserPositionsPortfolio = (provider, network, user) => __awaiter(void 0
|
|
|
1410
1410
|
})).filter(md => md.marketData !== undefined);
|
|
1411
1411
|
});
|
|
1412
1412
|
exports._getUserPositionsPortfolio = _getUserPositionsPortfolio;
|
|
1413
|
-
const _getAllFluidMarketDataPortfolio = (provider, network) => __awaiter(void 0, void 0, void 0, function* () {
|
|
1414
|
-
const versions = (0, markets_1.getFluidVersionsDataForNetwork)(network);
|
|
1415
|
-
if (versions.length === 0)
|
|
1416
|
-
return {};
|
|
1417
|
-
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1418
|
-
const vaultsData = yield Promise.all(versions.map((version) => view.read.getVaultData([version.marketAddress])));
|
|
1419
|
-
const tokens = Array.from(new Set(vaultsData.map((vaultData) => {
|
|
1420
|
-
const vaultTokens = [(0, tokens_1.getAssetInfoByAddress)(vaultData.supplyToken0, network).symbol, (0, tokens_1.getAssetInfoByAddress)(vaultData.borrowToken0, network).symbol];
|
|
1421
|
-
if (vaultData.supplyToken1 && !(0, utils_1.compareAddresses)(constants_1.ZERO_ADDRESS, vaultData.supplyToken1))
|
|
1422
|
-
vaultTokens.push((0, tokens_1.getAssetInfoByAddress)(vaultData.supplyToken1, network).symbol);
|
|
1423
|
-
if (vaultData.borrowToken1 && !(0, utils_1.compareAddresses)(constants_1.ZERO_ADDRESS, vaultData.borrowToken1))
|
|
1424
|
-
vaultTokens.push((0, tokens_1.getAssetInfoByAddress)(vaultData.borrowToken1, network).symbol);
|
|
1425
|
-
return vaultTokens;
|
|
1426
|
-
}).flat()));
|
|
1427
|
-
// ETH and WBTC needed for other tokens prices
|
|
1428
|
-
if (!tokens.includes('ETH'))
|
|
1429
|
-
tokens.push('ETH');
|
|
1430
|
-
if (!tokens.includes('WBTC'))
|
|
1431
|
-
tokens.push('WBTC');
|
|
1432
|
-
const [tokenPrices, merklCampaigns] = yield Promise.all([
|
|
1433
|
-
getTokensPricesForPortfolio(tokens, provider, network),
|
|
1434
|
-
(0, merkl_1.getFluidMerklCampaigns)(network),
|
|
1435
|
-
]);
|
|
1436
|
-
const parsedMarketsData = yield Promise.all(vaultsData.map((vaultData) => __awaiter(void 0, void 0, void 0, function* () { return parseMarketData(provider, vaultData, network, tokenPrices); })));
|
|
1437
|
-
const marketsData = {};
|
|
1438
|
-
parsedMarketsData.forEach((marketData, i) => {
|
|
1439
|
-
if (!marketData)
|
|
1440
|
-
return;
|
|
1441
|
-
marketsData[versions[i].value] = (0, merkl_1.attachFluidMerklIncentives)(marketData, merklCampaigns);
|
|
1442
|
-
});
|
|
1443
|
-
return marketsData;
|
|
1444
|
-
});
|
|
1445
|
-
exports._getAllFluidMarketDataPortfolio = _getAllFluidMarketDataPortfolio;
|
|
1446
|
-
const getAllFluidMarketDataPortfolio = (provider, network) => __awaiter(void 0, void 0, void 0, function* () { return (0, exports._getAllFluidMarketDataPortfolio)((0, viem_1.getViemProvider)(provider, network, { batch: { multicall: true } }), network); });
|
|
1447
|
-
exports.getAllFluidMarketDataPortfolio = getAllFluidMarketDataPortfolio;
|
|
@@ -140,9 +140,6 @@ const aaveAnyGetAggregatedPositionData = (_a) => {
|
|
|
140
140
|
return new decimal_js_1.default(suppliedUsd).mul(effectiveLtv);
|
|
141
141
|
});
|
|
142
142
|
payload.safetyRatioWithLtvZeroFallback = +payload.suppliedUsd ? new decimal_js_1.default(payload.borrowLimitWithLtvZeroFallbackUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
143
|
-
// Normalised safety ratio (100 = liquidation on every protocol): the automation ratio above, falling back
|
|
144
|
-
// to the regular ratio when the fallback carries its '0' placeholder.
|
|
145
|
-
payload.safetyRatio = +payload.safetyRatioWithLtvZeroFallback ? payload.safetyRatioWithLtvZeroFallback : payload.ratio;
|
|
146
143
|
payload.liqRatio = new decimal_js_1.default(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
|
|
147
144
|
payload.liqPercent = new decimal_js_1.default(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
|
|
148
145
|
const { leveragedType, leveragedAsset } = (0, moneymarket_1.isLeveragedPos)(usedAssets);
|
|
@@ -219,7 +219,6 @@ const aaveV4GetAggregatedPositionData = ({ usedAssets, assetsData, network, useU
|
|
|
219
219
|
payload.ratio = +payload.suppliedUsd ? new decimal_js_1.default(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
220
220
|
payload.minRatio = '100';
|
|
221
221
|
payload.collRatio = +payload.suppliedUsd ? new decimal_js_1.default(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
222
|
-
payload.safetyRatio = payload.ratio;
|
|
223
222
|
payload.liqRatio = new decimal_js_1.default(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
|
|
224
223
|
payload.liqPercent = new decimal_js_1.default(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
|
|
225
224
|
const { leveragedType, leveragedAsset } = (0, exports.isLeveragedPosAaveV4)(usedAssets);
|
|
@@ -102,7 +102,6 @@ const getCompoundV2AggregatedData = (_a) => {
|
|
|
102
102
|
payload.collRatio = payload.borrowedUsd && payload.borrowedUsd !== '0'
|
|
103
103
|
? new decimal_js_1.default(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString()
|
|
104
104
|
: '0';
|
|
105
|
-
payload.safetyRatio = payload.ratio;
|
|
106
105
|
// Calculate borrow limits per asset
|
|
107
106
|
Object.values(usedAssets).forEach((item) => {
|
|
108
107
|
if (item.isBorrowed) {
|
|
@@ -145,7 +144,6 @@ const getCompoundV3AggregatedData = (_a) => {
|
|
|
145
144
|
payload.incentiveUsd = incentiveUsd;
|
|
146
145
|
payload.totalInterestUsd = totalInterestUsd;
|
|
147
146
|
payload.minRatio = '100';
|
|
148
|
-
payload.safetyRatio = payload.ratio;
|
|
149
147
|
payload.liqRatio = new decimal_js_1.default(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
|
|
150
148
|
payload.liqPercent = new decimal_js_1.default(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
|
|
151
149
|
payload.minDebt = assetsData[selectedMarket.baseAsset].minDebt;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { CrvUSDAggregatedPositionData, CrvUSDMarketData, CrvUSDUsedAssets } from '../../types';
|
|
2
2
|
import { NetworkNumber } from '../../types/common';
|
|
3
|
-
export declare const getCrvUsdAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands,
|
|
3
|
+
export declare const getCrvUsdAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, ...rest }: {
|
|
4
4
|
loanExists: boolean;
|
|
5
5
|
usedAssets: CrvUSDUsedAssets;
|
|
6
6
|
network: NetworkNumber;
|
|
7
7
|
selectedMarket: CrvUSDMarketData;
|
|
8
8
|
numOfBands: number | string;
|
|
9
|
-
borrowRate?: string;
|
|
10
|
-
collStakingApy?: string;
|
|
11
9
|
}) => CrvUSDAggregatedPositionData;
|
|
@@ -18,10 +18,9 @@ exports.getCrvUsdAggregatedData = void 0;
|
|
|
18
18
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
19
19
|
const moneymarket_1 = require("../../moneymarket");
|
|
20
20
|
const utils_1 = require("../../services/utils");
|
|
21
|
-
const staking_1 = require("../../staking");
|
|
22
21
|
const getCrvUsdAggregatedData = (_a) => {
|
|
23
|
-
var _b
|
|
24
|
-
var { loanExists, usedAssets, network, selectedMarket, numOfBands
|
|
22
|
+
var _b;
|
|
23
|
+
var { loanExists, usedAssets, network, selectedMarket, numOfBands } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands"]);
|
|
25
24
|
const payload = {};
|
|
26
25
|
payload.supplied = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isSupplied }) => isSupplied, ({ supplied }) => supplied); // this is wrong if we are in soft-liquidations
|
|
27
26
|
payload.borrowed = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowed }) => borrowed);
|
|
@@ -35,8 +34,6 @@ const getCrvUsdAggregatedData = (_a) => {
|
|
|
35
34
|
: '0';
|
|
36
35
|
// this is all approximation
|
|
37
36
|
payload.minAllowedRatio = (0, utils_1.mapRange)(numOfBands, 4, 50, 115, 140); // collateral ratio
|
|
38
|
-
// Collateral ratio rebased so 100 sits on the band-derived minimum (normalised safety ratio, same scale as the other protocols).
|
|
39
|
-
payload.safetyRatio = loanExists && payload.minAllowedRatio ? new decimal_js_1.default(payload.ratio).div(payload.minAllowedRatio).mul(100).toString() : '0';
|
|
40
37
|
payload.collFactor = new decimal_js_1.default(1).div(payload.minAllowedRatio).mul(100).toString(); // collateral factor = 1 / collateral ratio
|
|
41
38
|
// only take in consideration collAsset
|
|
42
39
|
payload.borrowLimitUsd = ((_b = usedAssets === null || usedAssets === void 0 ? void 0 : usedAssets[selectedMarket.collAsset]) === null || _b === void 0 ? void 0 : _b.isSupplied)
|
|
@@ -50,17 +47,6 @@ const getCrvUsdAggregatedData = (_a) => {
|
|
|
50
47
|
payload.liquidationPrice = (0, moneymarket_1.calcLeverageLiqPrice)(leveragedType, usedAssets[selectedMarket.collAsset].price, payload.borrowedUsd, payload.borrowLimitUsd);
|
|
51
48
|
}
|
|
52
49
|
payload.exposure = (0, moneymarket_1.getExposure)(payload.borrowedUsd, payload.suppliedUsd);
|
|
53
|
-
// crvUSD debt accrues the market borrow rate. Collateral (including crvUSD held during soft liquidation) earns
|
|
54
|
-
// nothing from the protocol itself; only the native yield of staked collateral is counted, as an incentive.
|
|
55
|
-
const { netApy, totalInterestUsd, incentiveUsd } = (0, staking_1.calculateNetApyFromRates)({
|
|
56
|
-
suppliedUsd: payload.suppliedUsd,
|
|
57
|
-
borrowedUsd: payload.borrowedUsd,
|
|
58
|
-
borrowRate,
|
|
59
|
-
incentives: [{ apy: collStakingApy, amountUsd: ((_c = usedAssets === null || usedAssets === void 0 ? void 0 : usedAssets[selectedMarket.collAsset]) === null || _c === void 0 ? void 0 : _c.suppliedUsd) || '0' }],
|
|
60
|
-
});
|
|
61
|
-
payload.netApy = netApy;
|
|
62
|
-
payload.totalInterestUsd = totalInterestUsd;
|
|
63
|
-
payload.incentiveUsd = incentiveUsd;
|
|
64
50
|
return payload;
|
|
65
51
|
};
|
|
66
52
|
exports.getCrvUsdAggregatedData = getCrvUsdAggregatedData;
|
|
@@ -85,7 +85,6 @@ const getFluidAggregatedData = ({ usedAssets, assetsData, marketData, }, supplyS
|
|
|
85
85
|
payload.ratio = +payload.suppliedUsd ? new decimal_js_1.default(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
86
86
|
payload.collRatio = +payload.suppliedUsd ? new decimal_js_1.default(payload.suppliedUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
87
87
|
payload.minRatio = marketData.minRatio;
|
|
88
|
-
payload.safetyRatio = payload.ratio;
|
|
89
88
|
const { leveragedType, leveragedAsset } = (0, moneymarket_1.isLeveragedPos)(usedAssets);
|
|
90
89
|
payload.leveragedType = leveragedType;
|
|
91
90
|
payload.liquidationPrice = '';
|
|
@@ -48,7 +48,6 @@ const getLiquityV2AggregatedPositionData = ({ usedAssets, assetsData, minCollRat
|
|
|
48
48
|
payload.leftToBorrowUsd = leftToBorrowUsd.lte('0') ? '0' : leftToBorrowUsd.toString();
|
|
49
49
|
payload.ratio = (+payload.suppliedUsd && +payload.borrowedUsd) ? new decimal_js_1.default(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
50
50
|
payload.collRatio = (+payload.suppliedUsd && +payload.borrowedUsd) ? new decimal_js_1.default(payload.suppliedUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
51
|
-
payload.safetyRatio = payload.ratio;
|
|
52
51
|
const { netApy, incentiveUsd, totalInterestUsd } = (0, exports.calculateNetApyLiquityV2)(usedAssets, assetsData, interestRate);
|
|
53
52
|
payload.netApy = netApy;
|
|
54
53
|
payload.incentiveUsd = incentiveUsd;
|
|
@@ -42,8 +42,6 @@ const getLlamaLendAggregatedData = (_a) => {
|
|
|
42
42
|
: '0';
|
|
43
43
|
// this is all approximation
|
|
44
44
|
payload.minAllowedRatio = (0, utils_1.mapRange)(numOfBands, 4, 50, 115, 140); // collateral ratio
|
|
45
|
-
// Collateral ratio rebased so 100 sits on the band-derived minimum (normalised safety ratio, same scale as the other protocols).
|
|
46
|
-
payload.safetyRatio = loanExists && payload.minAllowedRatio ? new decimal_js_1.default(payload.ratio).div(payload.minAllowedRatio).mul(100).toString() : '0';
|
|
47
45
|
payload.collFactor = new decimal_js_1.default(1).div(payload.minAllowedRatio).mul(100).toString(); // collateral factor = 1 / collateral ratio
|
|
48
46
|
// only take in consideration collAsset
|
|
49
47
|
payload.borrowLimitUsd = ((_b = usedAssets === null || usedAssets === void 0 ? void 0 : usedAssets[collAsset]) === null || _b === void 0 ? void 0 : _b.isSupplied)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const parseCollateralInfo: (ilk: string, _par: string, _mat: string, _art: string, _rate: string, _spot: string, _line: string,
|
|
1
|
+
export declare const parseCollateralInfo: (ilk: string, _par: string, _mat: string, _art: string, _rate: string, _spot: string, _line: string, _duty: string, _futureRate: string, _chop: string) => {
|
|
2
2
|
ilkLabel: string;
|
|
3
3
|
currentRate: string;
|
|
4
4
|
futureRate: string;
|
|
@@ -7,14 +7,14 @@ exports.parseCollateralInfo = void 0;
|
|
|
7
7
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
8
8
|
const constants_1 = require("../../constants");
|
|
9
9
|
const utils_1 = require("../../services/utils");
|
|
10
|
-
const parseCollateralInfo = (ilk, _par, _mat, _art, _rate, _spot, _line,
|
|
10
|
+
const parseCollateralInfo = (ilk, _par, _mat, _art, _rate, _spot, _line, _duty, _futureRate, _chop) => {
|
|
11
11
|
const par = new decimal_js_1.default(_par).div(1e27).toString();
|
|
12
12
|
const mat = new decimal_js_1.default(_mat).div(1e27).toString();
|
|
13
13
|
const art = new decimal_js_1.default(_art).toString();
|
|
14
14
|
const rate = new decimal_js_1.default(_rate).toString();
|
|
15
15
|
const spot = new decimal_js_1.default(_spot).div(1e27).toString();
|
|
16
16
|
const line = new decimal_js_1.default(_line).div(1e45).toString();
|
|
17
|
-
const dust = new decimal_js_1.default(
|
|
17
|
+
const dust = new decimal_js_1.default(_rate).div(1e45).toString();
|
|
18
18
|
const duty = new decimal_js_1.default(_duty).toString();
|
|
19
19
|
const futureRate = new decimal_js_1.default(_futureRate).toString();
|
|
20
20
|
const chop = new decimal_js_1.default(_chop).div(1e18).toString();
|
|
@@ -46,8 +46,6 @@ const getMorphoBlueAggregatedPositionData = ({ usedAssets, assetsData, marketInf
|
|
|
46
46
|
payload.ltv = new decimal_js_1.default(((_c = usedAssets[loanToken]) === null || _c === void 0 ? void 0 : _c.borrowed) || 0).div(oracle).div(((_d = usedAssets[collateralToken]) === null || _d === void 0 ? void 0 : _d.supplied) || 1).toString(); // default to 1 because can't div 0
|
|
47
47
|
payload.ratio = new decimal_js_1.default(((_e = usedAssets[collateralToken]) === null || _e === void 0 ? void 0 : _e.supplied) || 0).mul(oracle).div(((_f = usedAssets[loanToken]) === null || _f === void 0 ? void 0 : _f.borrowed) || 1).mul(100)
|
|
48
48
|
.toString();
|
|
49
|
-
// Borrow limit over debt, so 100 sits on the market's LLTV however low it is (`ratio` is the raw collateral ratio).
|
|
50
|
-
payload.safetyRatio = +payload.borrowedUsd > 0 ? new decimal_js_1.default(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
51
49
|
const { leveragedType, leveragedAsset } = (0, moneymarket_1.isLeveragedPos)(usedAssets);
|
|
52
50
|
payload.leveragedType = leveragedType;
|
|
53
51
|
payload.liquidationPrice = '';
|
|
@@ -77,8 +77,6 @@ const getMorphoMidnightAggregatedPositionData = ({ usedAssets, assetsData, marke
|
|
|
77
77
|
payload.ltv = new decimal_js_1.default(payload.suppliedCollateralUsd).eq(0) ? '0' : new decimal_js_1.default(payload.borrowedUsd).div(payload.suppliedCollateralUsd).toString();
|
|
78
78
|
payload.ratio = new decimal_js_1.default(payload.borrowedUsd).eq(0) ? '0' : new decimal_js_1.default(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString();
|
|
79
79
|
payload.healthRatio = new decimal_js_1.default(payload.borrowedUsd).eq(0) ? 'Infinity' : new decimal_js_1.default(payload.liquidationLimitUsd).div(payload.borrowedUsd).toDP(4).toString();
|
|
80
|
-
// Borrow limit over debt, so 100 sits on the market's LLTV however low it is (`ratio` is the raw collateral ratio).
|
|
81
|
-
payload.safetyRatio = +payload.borrowedUsd > 0 ? new decimal_js_1.default(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
82
80
|
const { leveragedType, leveragedAsset } = (0, moneymarket_1.isLeveragedPos)(usedAssets);
|
|
83
81
|
payload.leveragedType = leveragedType;
|
|
84
82
|
payload.liquidationPrice = '';
|
|
@@ -81,7 +81,6 @@ const sparkGetAggregatedPositionData = (_a) => {
|
|
|
81
81
|
payload.leftToBorrowUsd = leftToBorrowUsd.lte('0') ? '0' : leftToBorrowUsd.toString();
|
|
82
82
|
payload.ratio = +payload.suppliedUsd ? new decimal_js_1.default(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
83
83
|
payload.collRatio = +payload.suppliedUsd ? new decimal_js_1.default(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
84
|
-
payload.safetyRatio = payload.ratio;
|
|
85
84
|
const { netApy, incentiveUsd, totalInterestUsd } = (0, staking_1.calculateNetApy)({ usedAssets, assetsData });
|
|
86
85
|
payload.netApy = netApy;
|
|
87
86
|
payload.incentiveUsd = incentiveUsd;
|
package/cjs/liquity/index.js
CHANGED
|
@@ -22,7 +22,6 @@ const constants_1 = require("../constants");
|
|
|
22
22
|
const viem_1 = require("../services/viem");
|
|
23
23
|
const utils_1 = require("../services/utils");
|
|
24
24
|
const moneymarket_1 = require("../moneymarket");
|
|
25
|
-
const staking_1 = require("../staking");
|
|
26
25
|
exports.LIQUITY_NORMAL_MODE_RATIO = 110; // MCR
|
|
27
26
|
exports.LIQUITY_RECOVERY_MODE_RATIO = 150; // CCR
|
|
28
27
|
const _getLiquityAccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -78,14 +77,6 @@ const _getLiquityTroveInfo = (provider, network, address) => __awaiter(void 0, v
|
|
|
78
77
|
_getDebtInFront(viewContract, address),
|
|
79
78
|
]);
|
|
80
79
|
const recoveryMode = troveInfo[6];
|
|
81
|
-
const minCollateralRatio = recoveryMode ? exports.LIQUITY_RECOVERY_MODE_RATIO : exports.LIQUITY_NORMAL_MODE_RATIO;
|
|
82
|
-
const collateral = (0, tokens_1.assetAmountInEth)(troveInfo[1].toString());
|
|
83
|
-
const debtInAsset = (0, tokens_1.assetAmountInEth)(troveInfo[2].toString());
|
|
84
|
-
const collateralUsd = new decimal_js_1.default(collateral).mul((0, tokens_1.assetAmountInEth)(assetPrice.toString())).toString();
|
|
85
|
-
const collRatio = +debtInAsset ? new decimal_js_1.default(collateralUsd).div(debtInAsset).mul(100).toString() : '0';
|
|
86
|
-
// LUSD debt is interest free (only a one-off borrowing fee on issuance) and ETH collateral earns no yield,
|
|
87
|
-
// so a trove's net APY is always 0. It is exposed for parity with the other protocols.
|
|
88
|
-
const { netApy, totalInterestUsd, incentiveUsd } = (0, staking_1.calculateNetApyFromRates)({ suppliedUsd: collateralUsd, borrowedUsd: debtInAsset });
|
|
89
80
|
const payload = {
|
|
90
81
|
troveStatus: types_1.LIQUITY_TROVE_STATUS_ENUM[+(troveInfo[0].toString())],
|
|
91
82
|
collateral: (0, tokens_1.assetAmountInEth)(troveInfo[1].toString()),
|
|
@@ -98,15 +89,10 @@ const _getLiquityTroveInfo = (provider, network, address) => __awaiter(void 0, v
|
|
|
98
89
|
totalETH: totalETH.toString(),
|
|
99
90
|
totalLUSD: totalLUSD.toString(),
|
|
100
91
|
debtInFront: debtInFront.toString(),
|
|
101
|
-
minCollateralRatio,
|
|
102
|
-
// Collateral ratio rebased so 100 sits on the trove's minimum collateral ratio (normalised safety ratio).
|
|
103
|
-
safetyRatio: +minCollateralRatio > 0 ? new decimal_js_1.default(collRatio).div(minCollateralRatio).mul(100).toString() : '0',
|
|
92
|
+
minCollateralRatio: recoveryMode ? exports.LIQUITY_RECOVERY_MODE_RATIO : exports.LIQUITY_NORMAL_MODE_RATIO,
|
|
104
93
|
priceForRecovery: new decimal_js_1.default(recoveryMode ? exports.LIQUITY_RECOVERY_MODE_RATIO : exports.LIQUITY_NORMAL_MODE_RATIO).mul(totalLUSD).div(totalETH).div(100)
|
|
105
94
|
.toString(),
|
|
106
|
-
exposure: (0, moneymarket_1.getExposure)(
|
|
107
|
-
netApy,
|
|
108
|
-
totalInterestUsd,
|
|
109
|
-
incentiveUsd,
|
|
95
|
+
exposure: (0, moneymarket_1.getExposure)((0, tokens_1.assetAmountInEth)(troveInfo[2].toString()), new decimal_js_1.default((0, tokens_1.assetAmountInEth)(troveInfo[1].toString())).mul(assetPrice).toString()),
|
|
110
96
|
};
|
|
111
97
|
return payload;
|
|
112
98
|
});
|
package/cjs/maker/index.d.ts
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import { Client, PublicClient } from 'viem';
|
|
2
2
|
import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
|
|
3
|
-
import { CdpData, CdpInfo
|
|
3
|
+
import { CdpData, CdpInfo } from '../types';
|
|
4
4
|
export declare const _getMakerAccountBalances: (provider: PublicClient, network: NetworkNumber, block: Blockish, addressMapping: boolean, cdpId: string, _managerAddress?: EthAddress) => Promise<PositionBalances>;
|
|
5
5
|
export declare const getMakerAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, cdpId: string, _managerAddress?: EthAddress) => Promise<PositionBalances>;
|
|
6
6
|
export declare const _getUserCdps: (provider: Client, network: NetworkNumber, userAddress: EthAddress) => Promise<CdpInfo[]>;
|
|
7
7
|
export declare const getUserCdps: (provider: EthereumProvider, network: NetworkNumber, userAddress: EthAddress) => Promise<CdpInfo[]>;
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const getMakerIlksData: (provider: EthereumProvider, network: NetworkNumber, ilkLabels: string[]) => Promise<Record<string, IlkInfo>>;
|
|
10
|
-
/**
|
|
11
|
-
* @param ilkInfo optional precomputed ilk data (from `_getMakerIlksData`); when provided the per-ilk reads are skipped
|
|
12
|
-
*/
|
|
13
|
-
export declare const _getMakerCdpData: (provider: Client, network: NetworkNumber, cdp: CdpInfo, ilkInfo?: IlkInfo) => Promise<CdpData>;
|
|
8
|
+
export declare const _getMakerCdpData: (provider: Client, network: NetworkNumber, cdp: CdpInfo) => Promise<CdpData>;
|
|
14
9
|
export declare const getMakerCdpData: (provider: EthereumProvider, network: NetworkNumber, cdp: CdpInfo) => Promise<CdpData>;
|
package/cjs/maker/index.js
CHANGED
|
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.getMakerCdpData = exports._getMakerCdpData = exports.
|
|
15
|
+
exports.getMakerCdpData = exports._getMakerCdpData = exports.getUserCdps = exports._getUserCdps = exports.getMakerAccountBalances = exports._getMakerAccountBalances = void 0;
|
|
16
16
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
17
17
|
const tokens_1 = require("@defisaver/tokens");
|
|
18
18
|
const contracts_1 = require("../contracts");
|
|
@@ -21,7 +21,6 @@ const utils_1 = require("../services/utils");
|
|
|
21
21
|
const makerHelpers_1 = require("../helpers/makerHelpers");
|
|
22
22
|
const viem_1 = require("../services/viem");
|
|
23
23
|
const moneymarket_1 = require("../moneymarket");
|
|
24
|
-
const staking_1 = require("../staking");
|
|
25
24
|
const _getMakerAccountBalances = (provider, network, block, addressMapping, cdpId, _managerAddress) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
25
|
let balances = {
|
|
27
26
|
collateral: {},
|
|
@@ -45,7 +44,7 @@ const _getMakerAccountBalances = (provider, network, block, addressMapping, cdpI
|
|
|
45
44
|
// [urn, owner, userAddr, ilk, collateral, debt]
|
|
46
45
|
const cdpInfo = yield viewContract.read.getCdpInfo((needsIlk ? [managerAddress, cdpId, ilk] : [cdpId]), (0, viem_1.setViemBlockNumber)(block));
|
|
47
46
|
cdpInfo.ilk = cdpInfo[3];
|
|
48
|
-
const [par, [_, mat], [artGlobal, rate, spot, line
|
|
47
|
+
const [par, [_, mat], [artGlobal, rate, spot, line], [duty], futureRate, chop,] = yield Promise.all([
|
|
49
48
|
spotterContract.read.par((0, viem_1.setViemBlockNumber)(block)),
|
|
50
49
|
spotterContract.read.ilks(needsIlk ? [ilk] : [cdpInfo.ilk], (0, viem_1.setViemBlockNumber)(block)),
|
|
51
50
|
vatContract.read.ilks(needsIlk ? [ilk] : [cdpInfo.ilk], (0, viem_1.setViemBlockNumber)(block)),
|
|
@@ -53,7 +52,7 @@ const _getMakerAccountBalances = (provider, network, block, addressMapping, cdpI
|
|
|
53
52
|
jugContract.read.drip(needsIlk ? [ilk] : [cdpInfo.ilk], (0, viem_1.setViemBlockNumber)(block)),
|
|
54
53
|
dogContract.read.chop(needsIlk ? [ilk] : [cdpInfo.ilk], (0, viem_1.setViemBlockNumber)(block)),
|
|
55
54
|
]);
|
|
56
|
-
const ilkInfo = (0, makerHelpers_1.parseCollateralInfo)(needsIlk ? ilk : cdpInfo.ilk, par.toString(), mat.toString(), artGlobal.toString(), rate.toString(), spot.toString(), line.toString(),
|
|
55
|
+
const ilkInfo = (0, makerHelpers_1.parseCollateralInfo)(needsIlk ? ilk : cdpInfo.ilk, par.toString(), mat.toString(), artGlobal.toString(), rate.toString(), spot.toString(), line.toString(), duty.toString(), futureRate.toString(), chop.toString());
|
|
57
56
|
const collateral = cdpInfo[4];
|
|
58
57
|
const debt = cdpInfo[5];
|
|
59
58
|
const asset = (0, utils_1.wethToEth)((0, tokens_1.ilkToAsset)(needsIlk ? ilk : cdpInfo.ilk));
|
|
@@ -91,40 +90,22 @@ const _getUserCdps = (provider, network, userAddress) => __awaiter(void 0, void
|
|
|
91
90
|
exports._getUserCdps = _getUserCdps;
|
|
92
91
|
const getUserCdps = (provider, network, userAddress) => __awaiter(void 0, void 0, void 0, function* () { return (0, exports._getUserCdps)((0, viem_1.getViemProvider)(provider, network), network, userAddress); });
|
|
93
92
|
exports.getUserCdps = getUserCdps;
|
|
94
|
-
const
|
|
93
|
+
const _getMakerCdpData = (provider, network, cdp) => __awaiter(void 0, void 0, void 0, function* () {
|
|
95
94
|
const vatContract = (0, contracts_1.McdVatContractViem)(provider, network);
|
|
96
95
|
const spotterContract = (0, contracts_1.McdSpotterContractViem)(provider, network);
|
|
97
96
|
const dogContract = (0, contracts_1.McdDogContractViem)(provider, network);
|
|
98
97
|
const jugContract = (0, contracts_1.McdJugContractViem)(provider, network);
|
|
99
|
-
const par = yield
|
|
100
|
-
const ilksInfo = yield Promise.all(ilkLabels.map((ilkLabel) => __awaiter(void 0, void 0, void 0, function* () {
|
|
101
|
-
const ilk = (0, tokens_1.stringToBytes)(ilkLabel);
|
|
102
|
-
const [[_, mat], [artGlobal, rate, spot, line, dust], [duty], futureRate, chop,] = yield Promise.all([
|
|
103
|
-
spotterContract.read.ilks([ilk]),
|
|
104
|
-
vatContract.read.ilks([ilk]),
|
|
105
|
-
jugContract.read.ilks([ilk]),
|
|
106
|
-
jugContract.read.drip([ilk]),
|
|
107
|
-
dogContract.read.chop([ilk]),
|
|
108
|
-
]);
|
|
109
|
-
return (0, makerHelpers_1.parseCollateralInfo)(ilk, par.toString(), mat.toString(), artGlobal.toString(), rate.toString(), spot.toString(), line.toString(), dust.toString(), duty.toString(), futureRate.toString(), chop.toString());
|
|
110
|
-
})));
|
|
111
|
-
return Object.fromEntries(ilksInfo.map((ilkInfo) => [ilkInfo.ilkLabel, ilkInfo]));
|
|
112
|
-
});
|
|
113
|
-
exports._getMakerIlksData = _getMakerIlksData;
|
|
114
|
-
const getMakerIlksData = (provider, network, ilkLabels) => __awaiter(void 0, void 0, void 0, function* () { return (0, exports._getMakerIlksData)((0, viem_1.getViemProvider)(provider, network, { batch: { multicall: true } }), network, ilkLabels); });
|
|
115
|
-
exports.getMakerIlksData = getMakerIlksData;
|
|
116
|
-
/**
|
|
117
|
-
* @param ilkInfo optional precomputed ilk data (from `_getMakerIlksData`); when provided the per-ilk reads are skipped
|
|
118
|
-
*/
|
|
119
|
-
const _getMakerCdpData = (provider, network, cdp, ilkInfo) => __awaiter(void 0, void 0, void 0, function* () {
|
|
120
|
-
const vatContract = (0, contracts_1.McdVatContractViem)(provider, network);
|
|
121
|
-
const [[ink, art], coll, fetchedIlkInfo, collStakingApy,] = yield Promise.all([
|
|
98
|
+
const [[ink, art], coll, par, [_, mat], [artGlobal, rate, spot, line], [duty], futureRate, chop,] = yield Promise.all([
|
|
122
99
|
vatContract.read.urns([cdp.ilk, cdp.urn]),
|
|
123
100
|
vatContract.read.gem([cdp.ilk, cdp.urn]),
|
|
124
|
-
|
|
125
|
-
|
|
101
|
+
spotterContract.read.par(),
|
|
102
|
+
spotterContract.read.ilks([cdp.ilk]),
|
|
103
|
+
vatContract.read.ilks([cdp.ilk]),
|
|
104
|
+
jugContract.read.ilks([cdp.ilk]),
|
|
105
|
+
jugContract.read.drip([cdp.ilk]),
|
|
106
|
+
dogContract.read.chop([cdp.ilk]),
|
|
126
107
|
]);
|
|
127
|
-
const collInfo =
|
|
108
|
+
const collInfo = (0, makerHelpers_1.parseCollateralInfo)(cdp.ilk, par.toString(), mat.toString(), artGlobal.toString(), rate.toString(), spot.toString(), line.toString(), duty.toString(), futureRate.toString(), chop.toString());
|
|
128
109
|
const collateral = (0, tokens_1.assetAmountInEth)(ink.toString(), `MCD-${cdp.asset}`);
|
|
129
110
|
const collateralUsd = new decimal_js_1.default(collateral).mul(collInfo.assetPrice).toString();
|
|
130
111
|
const debt = new decimal_js_1.default(art).times(collInfo.currentRate).div(1e27).floor()
|
|
@@ -136,17 +117,7 @@ const _getMakerCdpData = (provider, network, cdp, ilkInfo) => __awaiter(void 0,
|
|
|
136
117
|
.toString();
|
|
137
118
|
if (new decimal_js_1.default(debt).eq(0))
|
|
138
119
|
ratio = '0';
|
|
139
|
-
// Collateral ratio rebased so 100 sits on the ilk's liquidation ratio (normalised safety ratio).
|
|
140
|
-
const safetyRatio = +collInfo.liqPercent > 0 ? new decimal_js_1.default(ratio).div(collInfo.liqPercent).mul(100).toString() : '0';
|
|
141
120
|
const debtTooLow = new decimal_js_1.default(debt).gt(0) && new decimal_js_1.default((0, tokens_1.assetAmountInEth)(debt, 'DAI')).lt(collInfo.minDebt);
|
|
142
|
-
// DAI debt accrues the ilk's stability fee. Collateral earns nothing inside the vault, except for the
|
|
143
|
-
// native yield of staked collateral (e.g. wstETH), which is tracked as an incentive.
|
|
144
|
-
const { netApy, totalInterestUsd, incentiveUsd } = (0, staking_1.calculateNetApyFromRates)({
|
|
145
|
-
suppliedUsd: collateralUsd,
|
|
146
|
-
borrowedUsd: (0, tokens_1.assetAmountInEth)(debt, 'DAI'),
|
|
147
|
-
borrowRate: collInfo.stabilityFee.toString(),
|
|
148
|
-
incentives: [{ apy: collStakingApy, amountUsd: collateralUsd }],
|
|
149
|
-
});
|
|
150
121
|
return {
|
|
151
122
|
owner: cdp.owner,
|
|
152
123
|
id: cdp.id.toString(),
|
|
@@ -165,7 +136,6 @@ const _getMakerCdpData = (provider, network, cdp, ilkInfo) => __awaiter(void 0,
|
|
|
165
136
|
debtAssetMarketPrice: '1',
|
|
166
137
|
liquidationPrice,
|
|
167
138
|
ratio,
|
|
168
|
-
safetyRatio,
|
|
169
139
|
liqRatio: collInfo.liqRatio.toString(),
|
|
170
140
|
liqPercent: parseFloat(collInfo.liqPercent.toString()),
|
|
171
141
|
assetPrice: collInfo.assetPrice,
|
|
@@ -181,9 +151,6 @@ const _getMakerCdpData = (provider, network, cdp, ilkInfo) => __awaiter(void 0,
|
|
|
181
151
|
liquidationFee: collInfo.liquidationFee,
|
|
182
152
|
lastUpdated: Date.now(),
|
|
183
153
|
exposure: (0, moneymarket_1.getExposure)((0, tokens_1.assetAmountInEth)(debt, 'DAI'), collateralUsd),
|
|
184
|
-
netApy,
|
|
185
|
-
totalInterestUsd,
|
|
186
|
-
incentiveUsd,
|
|
187
154
|
};
|
|
188
155
|
});
|
|
189
156
|
exports._getMakerCdpData = _getMakerCdpData;
|
package/cjs/markets/index.d.ts
CHANGED
|
@@ -8,4 +8,3 @@ export { LlamaLendMarkets } from './llamaLend';
|
|
|
8
8
|
export { LiquityV2Markets, findLiquityV2MarketByAddress } from './liquityV2';
|
|
9
9
|
export { FluidMarkets, getFluidVersionsDataForNetwork, getFluidMarketInfoById, getFTokenAddress, getFluidMarketInfoByAddress, } from './fluid';
|
|
10
10
|
export { AaveV4Spokes, findAaveV4SpokeByAddress } from './aaveV4';
|
|
11
|
-
export { MakerActiveIlks } from './maker';
|
package/cjs/markets/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.findAaveV4SpokeByAddress = exports.AaveV4Spokes = exports.getFluidMarketInfoByAddress = exports.getFTokenAddress = exports.getFluidMarketInfoById = exports.getFluidVersionsDataForNetwork = exports.FluidMarkets = exports.findLiquityV2MarketByAddress = exports.LiquityV2Markets = exports.LlamaLendMarkets = exports.morphoMidnightVisibleCollaterals = exports.morphoMidnightMarketCollateralParams = exports.isTenorMidnightMarket = exports.findMorphoMidnightMarket = exports.MorphoMidnightMarkets = exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.CrvUsdMarkets = exports.SparkMarkets = exports.v3USDTCollAssets = exports.v3USDCeCollAssets = exports.v3USDCCollAssets = exports.v3USDbCCollAssets = exports.v3ETHCollAssets = exports.compoundV2CollateralAssets = exports.CompoundMarkets = exports.getAaveV3MarketByMarketAddress = exports.aaveV3AssetsDefaultMarket = exports.aaveV2AssetsDefaultMarket = exports.aaveV1AssetsDefaultMarket = exports.AaveMarkets = void 0;
|
|
4
4
|
var aave_1 = require("./aave");
|
|
5
5
|
Object.defineProperty(exports, "AaveMarkets", { enumerable: true, get: function () { return aave_1.AaveMarkets; } });
|
|
6
6
|
Object.defineProperty(exports, "aaveV1AssetsDefaultMarket", { enumerable: true, get: function () { return aave_1.aaveV1AssetsDefaultMarket; } });
|
|
@@ -42,5 +42,3 @@ Object.defineProperty(exports, "getFluidMarketInfoByAddress", { enumerable: true
|
|
|
42
42
|
var aaveV4_1 = require("./aaveV4");
|
|
43
43
|
Object.defineProperty(exports, "AaveV4Spokes", { enumerable: true, get: function () { return aaveV4_1.AaveV4Spokes; } });
|
|
44
44
|
Object.defineProperty(exports, "findAaveV4SpokeByAddress", { enumerable: true, get: function () { return aaveV4_1.findAaveV4SpokeByAddress; } });
|
|
45
|
-
var maker_1 = require("./maker");
|
|
46
|
-
Object.defineProperty(exports, "MakerActiveIlks", { enumerable: true, get: function () { return maker_1.MakerActiveIlks; } });
|
package/cjs/portfolio/index.d.ts
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
|
|
2
|
-
import {
|
|
2
|
+
import { PortfolioPositionsData } from '../types';
|
|
3
3
|
export declare function getPortfolioData(provider: EthereumProvider, network: NetworkNumber, defaultProvider: EthereumProvider, addresses: EthAddress[], isSim?: boolean): Promise<{
|
|
4
4
|
positions: PortfolioPositionsData;
|
|
5
5
|
stakingPositions: any;
|
|
6
6
|
rewardsData: any;
|
|
7
7
|
markets: any;
|
|
8
8
|
}>;
|
|
9
|
-
export declare function getShifterPortfolioData(provider: EthereumProvider, network: NetworkNumber, defaultProvider: EthereumProvider, addresses: EthAddress[], isSim?: boolean): Promise<{
|
|
10
|
-
positions: PortfolioPositionsData;
|
|
11
|
-
markets: PortfolioMarketsData;
|
|
12
|
-
}>;
|
|
13
9
|
export * from './discovery';
|