@defisaver/positions-sdk 2.1.169-custom-fetching-dev → 2.1.169-custom-fetching-3-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.d.ts +4 -4
- package/cjs/aaveV2/index.js +7 -7
- package/cjs/aaveV3/index.d.ts +4 -3
- package/cjs/aaveV3/index.js +14 -10
- package/cjs/aaveV3/merkl.d.ts +5 -1
- package/cjs/aaveV3/merkl.js +8 -3
- package/cjs/aaveV4/index.d.ts +4 -3
- package/cjs/aaveV4/index.js +19 -16
- package/cjs/aaveV4/merkl.d.ts +10 -2
- package/cjs/aaveV4/merkl.js +15 -6
- package/cjs/claiming/aaveV3.d.ts +2 -2
- package/cjs/claiming/aaveV3.js +5 -4
- package/cjs/claiming/king.d.ts +2 -2
- package/cjs/claiming/king.js +3 -2
- package/cjs/claiming/spark.d.ts +3 -3
- package/cjs/claiming/spark.js +8 -7
- package/cjs/claiming/uniswap.d.ts +2 -2
- package/cjs/claiming/uniswap.js +3 -2
- package/cjs/compoundV2/index.d.ts +4 -4
- package/cjs/compoundV2/index.js +9 -9
- package/cjs/compoundV3/index.d.ts +5 -4
- package/cjs/compoundV3/index.js +17 -13
- package/cjs/compoundV3/merkl.d.ts +1 -1
- package/cjs/compoundV3/merkl.js +2 -5
- package/cjs/curveUsd/index.d.ts +5 -5
- package/cjs/curveUsd/index.js +17 -17
- package/cjs/fluid/index.d.ts +23 -22
- package/cjs/fluid/index.js +75 -72
- package/cjs/fluid/merkl.d.ts +5 -3
- package/cjs/fluid/merkl.js +11 -6
- package/cjs/liquity/index.d.ts +4 -4
- package/cjs/liquity/index.js +23 -23
- package/cjs/liquityV2/index.d.ts +10 -10
- package/cjs/liquityV2/index.js +59 -59
- package/cjs/llamaLend/index.d.ts +5 -5
- package/cjs/llamaLend/index.js +13 -13
- package/cjs/maker/index.d.ts +6 -6
- package/cjs/maker/index.js +16 -16
- package/cjs/morphoBlue/index.d.ts +7 -7
- package/cjs/morphoBlue/index.js +28 -26
- package/cjs/morphoBlue/merkl.d.ts +5 -3
- package/cjs/morphoBlue/merkl.js +6 -8
- package/cjs/morphoMidnight/index.d.ts +5 -5
- package/cjs/morphoMidnight/index.js +18 -18
- package/cjs/portfolio/customDeFiData.js +45 -40
- package/cjs/services/merkl.d.ts +36 -2
- package/cjs/services/merkl.js +142 -19
- package/cjs/services/priceService.d.ts +12 -12
- package/cjs/services/priceService.js +30 -29
- package/cjs/services/viem.d.ts +10 -2
- package/cjs/services/viem.js +27 -1
- package/cjs/spark/index.d.ts +4 -4
- package/cjs/spark/index.js +9 -9
- package/cjs/types/merkl.d.ts +18 -0
- package/cjs/types/portfolio.d.ts +2 -0
- package/cjs/umbrella/index.d.ts +2 -2
- package/cjs/umbrella/index.js +5 -4
- package/esm/aaveV2/index.d.ts +4 -4
- package/esm/aaveV2/index.js +8 -8
- package/esm/aaveV3/index.d.ts +4 -3
- package/esm/aaveV3/index.js +15 -11
- package/esm/aaveV3/merkl.d.ts +5 -1
- package/esm/aaveV3/merkl.js +9 -4
- package/esm/aaveV4/index.d.ts +4 -3
- package/esm/aaveV4/index.js +20 -17
- package/esm/aaveV4/merkl.d.ts +10 -2
- package/esm/aaveV4/merkl.js +16 -7
- package/esm/claiming/aaveV3.d.ts +2 -2
- package/esm/claiming/aaveV3.js +5 -4
- package/esm/claiming/king.d.ts +2 -2
- package/esm/claiming/king.js +3 -2
- package/esm/claiming/spark.d.ts +3 -3
- package/esm/claiming/spark.js +8 -7
- package/esm/claiming/uniswap.d.ts +2 -2
- package/esm/claiming/uniswap.js +3 -2
- package/esm/compoundV2/index.d.ts +4 -4
- package/esm/compoundV2/index.js +9 -9
- package/esm/compoundV3/index.d.ts +5 -4
- package/esm/compoundV3/index.js +19 -15
- package/esm/compoundV3/merkl.d.ts +1 -1
- package/esm/compoundV3/merkl.js +3 -6
- package/esm/curveUsd/index.d.ts +5 -5
- package/esm/curveUsd/index.js +17 -17
- package/esm/fluid/index.d.ts +23 -22
- package/esm/fluid/index.js +76 -73
- package/esm/fluid/merkl.d.ts +5 -3
- package/esm/fluid/merkl.js +12 -7
- package/esm/liquity/index.d.ts +4 -4
- package/esm/liquity/index.js +23 -23
- package/esm/liquityV2/index.d.ts +10 -10
- package/esm/liquityV2/index.js +60 -60
- package/esm/llamaLend/index.d.ts +5 -5
- package/esm/llamaLend/index.js +13 -13
- package/esm/maker/index.d.ts +6 -6
- package/esm/maker/index.js +16 -16
- package/esm/morphoBlue/index.d.ts +7 -7
- package/esm/morphoBlue/index.js +29 -27
- package/esm/morphoBlue/merkl.d.ts +5 -3
- package/esm/morphoBlue/merkl.js +7 -9
- package/esm/morphoMidnight/index.d.ts +5 -5
- package/esm/morphoMidnight/index.js +18 -18
- package/esm/portfolio/customDeFiData.js +47 -42
- package/esm/services/merkl.d.ts +36 -2
- package/esm/services/merkl.js +136 -18
- package/esm/services/priceService.d.ts +12 -12
- package/esm/services/priceService.js +31 -30
- package/esm/services/viem.d.ts +10 -2
- package/esm/services/viem.js +25 -0
- package/esm/spark/index.d.ts +4 -4
- package/esm/spark/index.js +10 -10
- package/esm/types/merkl.d.ts +18 -0
- package/esm/types/portfolio.d.ts +2 -0
- package/esm/umbrella/index.d.ts +2 -2
- package/esm/umbrella/index.js +5 -4
- package/package.json +1 -1
- package/src/aaveV2/index.ts +7 -7
- package/src/aaveV3/index.ts +15 -11
- package/src/aaveV3/merkl.ts +9 -4
- package/src/aaveV4/index.ts +19 -16
- package/src/aaveV4/merkl.ts +16 -7
- package/src/claiming/aaveV3.ts +5 -3
- package/src/claiming/king.ts +6 -3
- package/src/claiming/spark.ts +9 -6
- package/src/claiming/uniswap.ts +4 -3
- package/src/compoundV2/index.ts +10 -9
- package/src/compoundV3/index.ts +20 -14
- package/src/compoundV3/merkl.ts +5 -4
- package/src/curveUsd/index.ts +19 -17
- package/src/fluid/index.ts +88 -70
- package/src/fluid/merkl.ts +12 -7
- package/src/liquity/index.ts +23 -23
- package/src/liquityV2/index.ts +64 -56
- package/src/llamaLend/index.ts +15 -13
- package/src/maker/index.ts +19 -16
- package/src/morphoBlue/index.ts +23 -20
- package/src/morphoBlue/merkl.ts +9 -6
- package/src/morphoMidnight/index.ts +13 -13
- package/src/portfolio/customDeFiData.ts +48 -41
- package/src/services/merkl.ts +152 -19
- package/src/services/priceService.ts +33 -30
- package/src/services/viem.ts +16 -0
- package/src/spark/index.ts +11 -8
- package/src/types/merkl.ts +20 -0
- package/src/types/portfolio.ts +2 -0
- package/src/umbrella/index.ts +6 -5
package/cjs/fluid/index.js
CHANGED
|
@@ -51,7 +51,7 @@ const parseVaultType = (vaultType) => {
|
|
|
51
51
|
default: return types_1.FluidVaultType.Unknown;
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
|
-
const getChainLinkPricesForTokens = (
|
|
54
|
+
const getChainLinkPricesForTokens = (tokens_2, network_1, client_1, ...args_1) => __awaiter(void 0, [tokens_2, network_1, client_1, ...args_1], void 0, function* (tokens, network, client, blockNumber = 'latest') {
|
|
55
55
|
const isMainnet = (0, utils_1.isMainnetNetwork)(network);
|
|
56
56
|
const noDuplicateTokens = new Array(...new Set(tokens));
|
|
57
57
|
const btcFeedContract = (0, contracts_1.BTCPriceFeedContractViem)(client, network);
|
|
@@ -106,7 +106,7 @@ const getChainLinkPricesForTokens = (tokens, network, client) => __awaiter(void
|
|
|
106
106
|
});
|
|
107
107
|
const calls = [...staticCalls, ..._calls].filter((call) => call);
|
|
108
108
|
// @ts-ignore
|
|
109
|
-
const results = yield client.multicall({ contracts: calls });
|
|
109
|
+
const results = yield client.multicall(Object.assign({ contracts: calls }, (0, viem_1.setViemBlockNumber)(blockNumber)));
|
|
110
110
|
const ethPriceChainlink = new decimal_js_1.default(results[0].result).div(1e8).toString();
|
|
111
111
|
const btcPriceChainlink = new decimal_js_1.default(results[1].result).div(1e8).toString();
|
|
112
112
|
let offset = 2; // wstETH and weETH has 3 calls, while others have only 1, so we need to keep track. First 2 are static calls for eth and btc prices
|
|
@@ -215,7 +215,7 @@ const getChainLinkPricesForTokens = (tokens, network, client) => __awaiter(void
|
|
|
215
215
|
return acc;
|
|
216
216
|
}, {});
|
|
217
217
|
});
|
|
218
|
-
const getTokenPriceFromChainlink = (
|
|
218
|
+
const getTokenPriceFromChainlink = (asset_1, network_1, provider_1, ...args_1) => __awaiter(void 0, [asset_1, network_1, provider_1, ...args_1], void 0, function* (asset, network, provider, blockNumber = 'latest') {
|
|
219
219
|
if (asset.symbol === 'sUSDS') {
|
|
220
220
|
return new decimal_js_1.default('105276929').div(1e8).toString();
|
|
221
221
|
}
|
|
@@ -225,17 +225,17 @@ const getTokenPriceFromChainlink = (asset, network, provider) => __awaiter(void
|
|
|
225
225
|
let loanTokenPrice;
|
|
226
226
|
if (asset.symbol === 'wstETH') {
|
|
227
227
|
// need to handle wstETH for l2s inside getWstETHPrice
|
|
228
|
-
loanTokenPrice = yield (0, priceService_1.getWstETHPriceFluid)(provider, network);
|
|
228
|
+
loanTokenPrice = yield (0, priceService_1.getWstETHPriceFluid)(provider, network, blockNumber);
|
|
229
229
|
}
|
|
230
230
|
else if (isMainnet) {
|
|
231
231
|
const feedRegistryContract = (0, contracts_1.FeedRegistryContractViem)(provider, common_1.NetworkNumber.Eth);
|
|
232
|
-
loanTokenPrice = isTokenUSDA ? '100000000' : yield feedRegistryContract.read.latestAnswer([loanTokenFeedAddress, constants_1.USD_QUOTE]);
|
|
232
|
+
loanTokenPrice = isTokenUSDA ? '100000000' : yield feedRegistryContract.read.latestAnswer([loanTokenFeedAddress, constants_1.USD_QUOTE], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
233
233
|
}
|
|
234
234
|
else {
|
|
235
235
|
// Currently only base network is supported
|
|
236
236
|
const feedRegistryContract = (0, contracts_1.DFSFeedRegistryContractViem)(provider, network);
|
|
237
237
|
try {
|
|
238
|
-
const roundPriceData = isTokenUSDA ? [0, '100000000'] : yield feedRegistryContract.read.latestRoundData([loanTokenFeedAddress, constants_1.USD_QUOTE]);
|
|
238
|
+
const roundPriceData = isTokenUSDA ? [0, '100000000'] : yield feedRegistryContract.read.latestRoundData([loanTokenFeedAddress, constants_1.USD_QUOTE], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
239
239
|
loanTokenPrice = roundPriceData[1].toString();
|
|
240
240
|
}
|
|
241
241
|
catch (err) {
|
|
@@ -276,7 +276,7 @@ const getTradingApy = (poolAddress) => __awaiter(void 0, void 0, void 0, functio
|
|
|
276
276
|
const data = yield res.json();
|
|
277
277
|
return new decimal_js_1.default(data.tradingApy).div(100).toString();
|
|
278
278
|
});
|
|
279
|
-
const parseT1MarketData = (provider_1, data_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, data_1, network_1, ...args_1], void 0, function* (provider, data, network, tokenPrices = null) {
|
|
279
|
+
const parseT1MarketData = (provider_1, data_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, data_1, network_1, ...args_1], void 0, function* (provider, data, network, tokenPrices = null, blockNumber = 'latest') {
|
|
280
280
|
var _a, _b;
|
|
281
281
|
const collAssetContract = (0, tokens_1.getAssetInfoByAddress)(data.supplyToken0, network);
|
|
282
282
|
const collAsset = (0, tokens_1.getAssetInfo)((0, utils_1.getNativeAssetFromWrapped)(collAssetContract.symbol), network);
|
|
@@ -292,7 +292,7 @@ const parseT1MarketData = (provider_1, data_1, network_1, ...args_1) => __awaite
|
|
|
292
292
|
debtPriceParsed = tokenPrices[debtAsset.symbol] || '0';
|
|
293
293
|
}
|
|
294
294
|
else {
|
|
295
|
-
debtPriceParsed = yield getTokenPriceFromChainlink(debtAssetContract, network, provider);
|
|
295
|
+
debtPriceParsed = yield getTokenPriceFromChainlink(debtAssetContract, network, provider, blockNumber);
|
|
296
296
|
}
|
|
297
297
|
const collAssetData = {
|
|
298
298
|
symbol: collAsset.symbol,
|
|
@@ -388,7 +388,7 @@ const parseT1MarketData = (provider_1, data_1, network_1, ...args_1) => __awaite
|
|
|
388
388
|
marketData,
|
|
389
389
|
};
|
|
390
390
|
});
|
|
391
|
-
const parseT2MarketData = (provider_1, data_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, data_1, network_1, ...args_1], void 0, function* (provider, data, network, tokenPrices = null) {
|
|
391
|
+
const parseT2MarketData = (provider_1, data_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, data_1, network_1, ...args_1], void 0, function* (provider, data, network, tokenPrices = null, blockNumber = 'latest') {
|
|
392
392
|
var _a, _b, _c;
|
|
393
393
|
const collAsset0Contract = (0, tokens_1.getAssetInfoByAddress)(data.supplyToken0, network);
|
|
394
394
|
const collAsset0 = (0, tokens_1.getAssetInfo)((0, utils_1.getNativeAssetFromWrapped)(collAsset0Contract.symbol), network);
|
|
@@ -405,7 +405,7 @@ const parseT2MarketData = (provider_1, data_1, network_1, ...args_1) => __awaite
|
|
|
405
405
|
prices = tokenPrices;
|
|
406
406
|
}
|
|
407
407
|
else {
|
|
408
|
-
prices = yield getChainLinkPricesForTokens([collAsset0Contract.address, collAsset1Contract.address, debtAssetContract.address], network, provider);
|
|
408
|
+
prices = yield getChainLinkPricesForTokens([collAsset0Contract.address, collAsset1Contract.address, debtAssetContract.address], network, provider, blockNumber);
|
|
409
409
|
}
|
|
410
410
|
const { supplyDexFee, totalSupplyShares, supplyRate1, totalSupplyToken1, token0PerSupplyShare, token1PerSupplyShare, totalSupplyToken0, maxSupplyShares, withdrawableToken0, withdrawable0, withdrawableToken1, withdrawable1, supplyRate0, utilizationSupply0, utilizationSupply1, withdrawableShares, reservesSupplyToken0, reservesSupplyToken1, } = (0, fluidHelpers_1.parseDexSupplyData)(data.dexSupplyData, collAsset0.symbol, collAsset1.symbol);
|
|
411
411
|
const collFirstAssetData = {
|
|
@@ -544,7 +544,7 @@ const parseT2MarketData = (provider_1, data_1, network_1, ...args_1) => __awaite
|
|
|
544
544
|
marketData,
|
|
545
545
|
};
|
|
546
546
|
});
|
|
547
|
-
const parseT3MarketData = (provider_1, data_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, data_1, network_1, ...args_1], void 0, function* (provider, data, network, tokenPrices = null) {
|
|
547
|
+
const parseT3MarketData = (provider_1, data_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, data_1, network_1, ...args_1], void 0, function* (provider, data, network, tokenPrices = null, blockNumber = 'latest') {
|
|
548
548
|
var _a, _b, _c, _d;
|
|
549
549
|
const collAssetContract = (0, tokens_1.getAssetInfoByAddress)(data.supplyToken0, network);
|
|
550
550
|
const collAsset = (0, tokens_1.getAssetInfo)((0, utils_1.getNativeAssetFromWrapped)(collAssetContract.symbol), network);
|
|
@@ -562,7 +562,7 @@ const parseT3MarketData = (provider_1, data_1, network_1, ...args_1) => __awaite
|
|
|
562
562
|
prices = tokenPrices;
|
|
563
563
|
}
|
|
564
564
|
else {
|
|
565
|
-
prices = yield getChainLinkPricesForTokens([collAssetContract.address, debtAsset0Contract.address, debtAsset1Contract.address], network, provider);
|
|
565
|
+
prices = yield getChainLinkPricesForTokens([collAssetContract.address, debtAsset0Contract.address, debtAsset1Contract.address], network, provider, blockNumber);
|
|
566
566
|
}
|
|
567
567
|
const supplyRate = new decimal_js_1.default(data.supplyRateVault).div(100).toString();
|
|
568
568
|
const collAssetData = {
|
|
@@ -696,7 +696,7 @@ const parseT3MarketData = (provider_1, data_1, network_1, ...args_1) => __awaite
|
|
|
696
696
|
marketData,
|
|
697
697
|
};
|
|
698
698
|
});
|
|
699
|
-
const parseT4MarketData = (provider_1, data_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, data_1, network_1, ...args_1], void 0, function* (provider, data, network, tokenPrices = null) {
|
|
699
|
+
const parseT4MarketData = (provider_1, data_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, data_1, network_1, ...args_1], void 0, function* (provider, data, network, tokenPrices = null, blockNumber = 'latest') {
|
|
700
700
|
var _a, _b, _c, _d;
|
|
701
701
|
const collAsset0Contract = (0, tokens_1.getAssetInfoByAddress)(data.supplyToken0, network);
|
|
702
702
|
const collAsset0 = (0, tokens_1.getAssetInfo)((0, utils_1.getNativeAssetFromWrapped)(collAsset0Contract.symbol), network);
|
|
@@ -716,7 +716,7 @@ const parseT4MarketData = (provider_1, data_1, network_1, ...args_1) => __awaite
|
|
|
716
716
|
prices = tokenPrices;
|
|
717
717
|
}
|
|
718
718
|
else {
|
|
719
|
-
prices = yield getChainLinkPricesForTokens([collAsset0Contract.address, collAsset1Contract.address, debtAsset0Contract.address, debtAsset1Contract.address], network, provider);
|
|
719
|
+
prices = yield getChainLinkPricesForTokens([collAsset0Contract.address, collAsset1Contract.address, debtAsset0Contract.address, debtAsset1Contract.address], network, provider, blockNumber);
|
|
720
720
|
}
|
|
721
721
|
const { supplyDexFee, totalSupplyShares, supplyRate1, token0PerSupplyShare, token1PerSupplyShare, totalSupplyToken0, totalSupplyToken1, maxSupplyShares, withdrawableToken0, withdrawable0, withdrawableToken1, withdrawable1, supplyRate0, utilizationSupply0, utilizationSupply1, withdrawableShares, reservesSupplyToken0, reservesSupplyToken1, } = (0, fluidHelpers_1.parseDexSupplyData)(data.dexSupplyData, collAsset0.symbol, collAsset1.symbol);
|
|
722
722
|
const { borrowableShares, maxBorrowShares, borrowDexFee, utilizationBorrow0, utilizationBorrow1, borrowable0, borrowable1, borrowRate0, borrowRate1, totalBorrowShares, token0PerBorrowShare, token1PerBorrowShare, borrowableToken0, borrowableToken1, totalBorrowToken0, totalBorrowToken1, quoteTokensPerShare, reservesBorrowToken0, reservesBorrowToken1, } = (0, fluidHelpers_1.parseDexBorrowData)(data.dexBorrowData, debtAsset0.symbol, debtAsset1.symbol);
|
|
@@ -893,7 +893,7 @@ const parseT4MarketData = (provider_1, data_1, network_1, ...args_1) => __awaite
|
|
|
893
893
|
marketData,
|
|
894
894
|
};
|
|
895
895
|
});
|
|
896
|
-
const parseMarketData = (provider_1, data_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, data_1, network_1, ...args_1], void 0, function* (provider, data, network, tokenPrices = null) {
|
|
896
|
+
const parseMarketData = (provider_1, data_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, data_1, network_1, ...args_1], void 0, function* (provider, data, network, tokenPrices = null, blockNumber = 'latest') {
|
|
897
897
|
const marketInfo = (0, markets_1.getFluidMarketInfoById)(+(data.vaultId.toString()), network);
|
|
898
898
|
if (!marketInfo) {
|
|
899
899
|
console.error(`Fluid market with address ${data.vault} not supported.`);
|
|
@@ -902,13 +902,13 @@ const parseMarketData = (provider_1, data_1, network_1, ...args_1) => __awaiter(
|
|
|
902
902
|
const vaultType = parseVaultType(+(data.vaultType.toString()));
|
|
903
903
|
switch (vaultType) {
|
|
904
904
|
case types_1.FluidVaultType.T1:
|
|
905
|
-
return parseT1MarketData(provider, data, network, tokenPrices);
|
|
905
|
+
return parseT1MarketData(provider, data, network, tokenPrices, blockNumber);
|
|
906
906
|
case types_1.FluidVaultType.T2:
|
|
907
|
-
return parseT2MarketData(provider, data, network, tokenPrices);
|
|
907
|
+
return parseT2MarketData(provider, data, network, tokenPrices, blockNumber);
|
|
908
908
|
case types_1.FluidVaultType.T3:
|
|
909
|
-
return parseT3MarketData(provider, data, network, tokenPrices);
|
|
909
|
+
return parseT3MarketData(provider, data, network, tokenPrices, blockNumber);
|
|
910
910
|
case types_1.FluidVaultType.T4:
|
|
911
|
-
return parseT4MarketData(provider, data, network, tokenPrices);
|
|
911
|
+
return parseT4MarketData(provider, data, network, tokenPrices, blockNumber);
|
|
912
912
|
default:
|
|
913
913
|
throw new Error(`Unknown vault type: ${vaultType}`);
|
|
914
914
|
}
|
|
@@ -1113,41 +1113,41 @@ const parseUserData = (userPositionData, vaultData) => {
|
|
|
1113
1113
|
throw new Error(`Unknown vault type: ${vaultType}`);
|
|
1114
1114
|
}
|
|
1115
1115
|
};
|
|
1116
|
-
const _getFluidMarketData = (
|
|
1116
|
+
const _getFluidMarketData = (provider_1, network_1, market_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, market_1, ...args_1], void 0, function* (provider, network, market, blockNumber = 'latest') {
|
|
1117
1117
|
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1118
1118
|
const [data, merklCampaigns] = yield Promise.all([
|
|
1119
|
-
view.read.getVaultData([market.marketAddress]),
|
|
1119
|
+
view.read.getVaultData([market.marketAddress], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
1120
1120
|
(0, merkl_1.getFluidMerklCampaigns)(network),
|
|
1121
1121
|
]);
|
|
1122
|
-
const marketData = yield parseMarketData(provider, data, network);
|
|
1122
|
+
const marketData = yield parseMarketData(provider, data, network, null, blockNumber);
|
|
1123
1123
|
return marketData ? (0, merkl_1.attachFluidMerklIncentives)(marketData, merklCampaigns) : marketData;
|
|
1124
1124
|
});
|
|
1125
1125
|
exports._getFluidMarketData = _getFluidMarketData;
|
|
1126
|
-
const getFluidMarketData = (
|
|
1126
|
+
const getFluidMarketData = (provider_1, network_1, market_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, market_1, ...args_1], void 0, function* (provider, network, market, blockNumber = 'latest') { return (0, exports._getFluidMarketData)((0, viem_1.getViemProvider)(provider, network), network, market, blockNumber); });
|
|
1127
1127
|
exports.getFluidMarketData = getFluidMarketData;
|
|
1128
|
-
const _getFluidVaultIdsForUser = (
|
|
1128
|
+
const _getFluidVaultIdsForUser = (provider_1, network_1, user_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, user_1, ...args_1], void 0, function* (provider, network, user, blockNumber = 'latest') {
|
|
1129
1129
|
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1130
|
-
return (yield view.read.getUserNftIds([user])).map((item) => item.toString());
|
|
1130
|
+
return (yield view.read.getUserNftIds([user], (0, viem_1.setViemBlockNumber)(blockNumber))).map((item) => item.toString());
|
|
1131
1131
|
});
|
|
1132
1132
|
exports._getFluidVaultIdsForUser = _getFluidVaultIdsForUser;
|
|
1133
|
-
const getFluidVaultIdsForUser = (
|
|
1133
|
+
const getFluidVaultIdsForUser = (provider_1, network_1, user_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, user_1, ...args_1], void 0, function* (provider, network, user, blockNumber = 'latest') { return (0, exports._getFluidVaultIdsForUser)((0, viem_1.getViemProvider)(provider, network), network, user, blockNumber); });
|
|
1134
1134
|
exports.getFluidVaultIdsForUser = getFluidVaultIdsForUser;
|
|
1135
|
-
const _getFluidPosition = (
|
|
1135
|
+
const _getFluidPosition = (provider_1, network_1, vaultId_1, extractedState_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, vaultId_1, extractedState_1, ...args_1], void 0, function* (provider, network, vaultId, extractedState, blockNumber = 'latest') {
|
|
1136
1136
|
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1137
|
-
const data = yield view.read.getPositionByNftId([BigInt(vaultId)]);
|
|
1137
|
+
const data = yield view.read.getPositionByNftId([BigInt(vaultId)], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
1138
1138
|
const userPositionData = data[0];
|
|
1139
1139
|
return parseUserData(userPositionData, extractedState);
|
|
1140
1140
|
});
|
|
1141
1141
|
exports._getFluidPosition = _getFluidPosition;
|
|
1142
|
-
const getFluidPosition = (
|
|
1142
|
+
const getFluidPosition = (provider_1, network_1, vaultId_1, extractedState_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, vaultId_1, extractedState_1, ...args_1], void 0, function* (provider, network, vaultId, extractedState, blockNumber = 'latest') { return (0, exports._getFluidPosition)((0, viem_1.getViemProvider)(provider, network), network, vaultId, extractedState, blockNumber); });
|
|
1143
1143
|
exports.getFluidPosition = getFluidPosition;
|
|
1144
|
-
const _getFluidPositionWithMarket = (
|
|
1144
|
+
const _getFluidPositionWithMarket = (provider_1, network_1, vaultId_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, vaultId_1, ...args_1], void 0, function* (provider, network, vaultId, blockNumber = 'latest') {
|
|
1145
1145
|
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1146
1146
|
const [data, merklCampaigns] = yield Promise.all([
|
|
1147
|
-
view.read.getPositionByNftId([BigInt(vaultId)]),
|
|
1147
|
+
view.read.getPositionByNftId([BigInt(vaultId)], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
1148
1148
|
(0, merkl_1.getFluidMerklCampaigns)(network),
|
|
1149
1149
|
]);
|
|
1150
|
-
const parsedMarketData = yield parseMarketData(provider, data[1], network);
|
|
1150
|
+
const parsedMarketData = yield parseMarketData(provider, data[1], network, null, blockNumber);
|
|
1151
1151
|
if (!parsedMarketData) {
|
|
1152
1152
|
return;
|
|
1153
1153
|
}
|
|
@@ -1159,29 +1159,29 @@ const _getFluidPositionWithMarket = (provider, network, vaultId) => __awaiter(vo
|
|
|
1159
1159
|
};
|
|
1160
1160
|
});
|
|
1161
1161
|
exports._getFluidPositionWithMarket = _getFluidPositionWithMarket;
|
|
1162
|
-
const getFluidPositionWithMarket = (
|
|
1162
|
+
const getFluidPositionWithMarket = (provider_1, network_1, vaultId_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, vaultId_1, ...args_1], void 0, function* (provider, network, vaultId, blockNumber = 'latest') { return (0, exports._getFluidPositionWithMarket)((0, viem_1.getViemProvider)(provider, network), network, vaultId, blockNumber); });
|
|
1163
1163
|
exports.getFluidPositionWithMarket = getFluidPositionWithMarket;
|
|
1164
|
-
const _getAllFluidMarketDataChunked = (
|
|
1164
|
+
const _getAllFluidMarketDataChunked = (network_1, provider_1, ...args_1) => __awaiter(void 0, [network_1, provider_1, ...args_1], void 0, function* (network, provider, blockNumber = 'latest') {
|
|
1165
1165
|
const versions = (0, markets_1.getFluidVersionsDataForNetwork)(network);
|
|
1166
1166
|
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1167
1167
|
const [data, merklCampaigns] = yield Promise.all([
|
|
1168
|
-
Promise.all(versions.map((version) => view.read.getVaultData([version.marketAddress]))),
|
|
1168
|
+
Promise.all(versions.map((version) => view.read.getVaultData([version.marketAddress], (0, viem_1.setViemBlockNumber)(blockNumber)))),
|
|
1169
1169
|
(0, merkl_1.getFluidMerklCampaigns)(network),
|
|
1170
1170
|
]);
|
|
1171
1171
|
return Promise.all(data.map((item) => __awaiter(void 0, void 0, void 0, function* () {
|
|
1172
|
-
const marketData = yield parseMarketData(provider, item, network);
|
|
1172
|
+
const marketData = yield parseMarketData(provider, item, network, null, blockNumber);
|
|
1173
1173
|
return marketData ? (0, merkl_1.attachFluidMerklIncentives)(marketData, merklCampaigns) : marketData;
|
|
1174
1174
|
})));
|
|
1175
1175
|
});
|
|
1176
1176
|
exports._getAllFluidMarketDataChunked = _getAllFluidMarketDataChunked;
|
|
1177
|
-
const getAllFluidMarketDataChunked = (
|
|
1177
|
+
const getAllFluidMarketDataChunked = (network_1, provider_1, ...args_1) => __awaiter(void 0, [network_1, provider_1, ...args_1], void 0, function* (network, provider, blockNumber = 'latest') { return (0, exports._getAllFluidMarketDataChunked)(network, (0, viem_1.getViemProvider)(provider, network, { batch: { multicall: true } }), blockNumber); });
|
|
1178
1178
|
exports.getAllFluidMarketDataChunked = getAllFluidMarketDataChunked;
|
|
1179
|
-
const _getFluidTokenData = (
|
|
1179
|
+
const _getFluidTokenData = (provider_1, network_1, token_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, token_1, ...args_1], void 0, function* (provider, network, token, blockNumber = 'latest') {
|
|
1180
1180
|
var _a, _b;
|
|
1181
1181
|
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1182
1182
|
const fTokenAddress = (0, markets_1.getFTokenAddress)(token, network);
|
|
1183
1183
|
const [data, rewardsApiResponse,] = yield Promise.all([
|
|
1184
|
-
yield view.read.getFTokenData([fTokenAddress]),
|
|
1184
|
+
yield view.read.getFTokenData([fTokenAddress], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
1185
1185
|
fetch(`https://api.fluid.instadapp.io/v2/lending/${network}/tokens/${fTokenAddress}`),
|
|
1186
1186
|
]);
|
|
1187
1187
|
let rewardsData = { rewards: [] };
|
|
@@ -1209,7 +1209,7 @@ const _getFluidTokenData = (provider, network, token) => __awaiter(void 0, void
|
|
|
1209
1209
|
};
|
|
1210
1210
|
});
|
|
1211
1211
|
exports._getFluidTokenData = _getFluidTokenData;
|
|
1212
|
-
const getFluidTokenData = (
|
|
1212
|
+
const getFluidTokenData = (provider_1, network_1, token_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, token_1, ...args_1], void 0, function* (provider, network, token, blockNumber = 'latest') { return (0, exports._getFluidTokenData)((0, viem_1.getViemProvider)(provider, network), network, token, blockNumber); });
|
|
1213
1213
|
exports.getFluidTokenData = getFluidTokenData;
|
|
1214
1214
|
const parseFDepositTokenData = (fTokenData, userPosition, apiData, fTokenAddress) => {
|
|
1215
1215
|
var _a, _b;
|
|
@@ -1232,11 +1232,11 @@ const parseFDepositTokenData = (fTokenData, userPosition, apiData, fTokenAddress
|
|
|
1232
1232
|
depositedShares: (0, utils_1.getEthAmountForDecimals)(userPosition.fTokenShares.toString(), decimals),
|
|
1233
1233
|
};
|
|
1234
1234
|
};
|
|
1235
|
-
const _getFluidDepositData = (
|
|
1235
|
+
const _getFluidDepositData = (provider_1, network_1, token_1, address_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, token_1, address_1, ...args_1], void 0, function* (provider, network, token, address, blockNumber = 'latest') {
|
|
1236
1236
|
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1237
1237
|
const fTokenAddress = (0, markets_1.getFTokenAddress)(token, network);
|
|
1238
1238
|
const [[userPosition, fTokenData], rewardsApiResponse,] = yield Promise.all([
|
|
1239
|
-
view.read.getUserEarnPositionWithFToken([fTokenAddress, address]),
|
|
1239
|
+
view.read.getUserEarnPositionWithFToken([fTokenAddress, address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
1240
1240
|
fetch(`https://api.fluid.instadapp.io/v2/lending/${network}/tokens/${fTokenAddress}`),
|
|
1241
1241
|
]);
|
|
1242
1242
|
let rewardsData = { rewards: [] };
|
|
@@ -1249,12 +1249,12 @@ const _getFluidDepositData = (provider, network, token, address) => __awaiter(vo
|
|
|
1249
1249
|
return parseFDepositTokenData(fTokenData, userPosition, rewardsData, fTokenAddress);
|
|
1250
1250
|
});
|
|
1251
1251
|
exports._getFluidDepositData = _getFluidDepositData;
|
|
1252
|
-
const getFluidDepositData = (
|
|
1252
|
+
const getFluidDepositData = (provider_1, network_1, token_1, address_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, token_1, address_1, ...args_1], void 0, function* (provider, network, token, address, blockNumber = 'latest') { return (0, exports._getFluidDepositData)((0, viem_1.getViemProvider)(provider, network), network, token, address, blockNumber); });
|
|
1253
1253
|
exports.getFluidDepositData = getFluidDepositData;
|
|
1254
|
-
const _getAllUserEarnPositionsWithFTokens = (
|
|
1254
|
+
const _getAllUserEarnPositionsWithFTokens = (provider_1, network_1, user_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, user_1, ...args_1], void 0, function* (provider, network, user, blockNumber = 'latest') {
|
|
1255
1255
|
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1256
1256
|
const [[userPositions, fTokensData], rewardsApiResponse,] = yield Promise.all([
|
|
1257
|
-
view.read.getAllUserEarnPositionsWithFTokens([user]),
|
|
1257
|
+
view.read.getAllUserEarnPositionsWithFTokens([user], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
1258
1258
|
fetch(`https://api.fluid.instadapp.io/v2/lending/${network}/tokens`),
|
|
1259
1259
|
]);
|
|
1260
1260
|
let rewardsData = {
|
|
@@ -1279,15 +1279,15 @@ const _getAllUserEarnPositionsWithFTokens = (provider, network, user) => __await
|
|
|
1279
1279
|
return parsedRes;
|
|
1280
1280
|
});
|
|
1281
1281
|
exports._getAllUserEarnPositionsWithFTokens = _getAllUserEarnPositionsWithFTokens;
|
|
1282
|
-
const getAllUserEarnPositionsWithFTokens = (
|
|
1282
|
+
const getAllUserEarnPositionsWithFTokens = (provider_1, network_1, user_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, user_1, ...args_1], void 0, function* (provider, network, user, blockNumber = 'latest') { return (0, exports._getAllUserEarnPositionsWithFTokens)((0, viem_1.getViemProvider)(provider, network), network, user, blockNumber); });
|
|
1283
1283
|
exports.getAllUserEarnPositionsWithFTokens = getAllUserEarnPositionsWithFTokens;
|
|
1284
|
-
const _getUserPositions = (
|
|
1284
|
+
const _getUserPositions = (provider_1, network_1, user_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, user_1, ...args_1], void 0, function* (provider, network, user, blockNumber = 'latest') {
|
|
1285
1285
|
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1286
1286
|
const [data, merklCampaigns] = yield Promise.all([
|
|
1287
|
-
view.read.getUserPositions([user]),
|
|
1287
|
+
view.read.getUserPositions([user], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
1288
1288
|
(0, merkl_1.getFluidMerklCampaigns)(network),
|
|
1289
1289
|
]);
|
|
1290
|
-
const parsedMarketData = (yield Promise.all(data[1].map((vaultData) => __awaiter(void 0, void 0, void 0, function* () { return parseMarketData(provider, vaultData, network); }))))
|
|
1290
|
+
const parsedMarketData = (yield Promise.all(data[1].map((vaultData) => __awaiter(void 0, void 0, void 0, function* () { return parseMarketData(provider, vaultData, network, null, blockNumber); }))))
|
|
1291
1291
|
.map(marketData => (marketData ? (0, merkl_1.attachFluidMerklIncentives)(marketData, merklCampaigns) : marketData));
|
|
1292
1292
|
const userData = data[0].map((position, i) => (parsedMarketData[i] && Object.assign({}, parseUserData(position, parsedMarketData[i]))));
|
|
1293
1293
|
return parsedMarketData.map((market, i) => ({
|
|
@@ -1296,40 +1296,40 @@ const _getUserPositions = (provider, network, user) => __awaiter(void 0, void 0,
|
|
|
1296
1296
|
})).filter(md => md.marketData !== undefined);
|
|
1297
1297
|
});
|
|
1298
1298
|
exports._getUserPositions = _getUserPositions;
|
|
1299
|
-
const getUserPositions = (
|
|
1299
|
+
const getUserPositions = (provider_1, network_1, user_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, user_1, ...args_1], void 0, function* (provider, network, user, blockNumber = 'latest') { return (0, exports._getUserPositions)((0, viem_1.getViemProvider)(provider, network), network, user, blockNumber); });
|
|
1300
1300
|
exports.getUserPositions = getUserPositions;
|
|
1301
|
-
const getTokenPricePortfolio = (
|
|
1301
|
+
const getTokenPricePortfolio = (token_1, provider_1, network_1, ...args_1) => __awaiter(void 0, [token_1, provider_1, network_1, ...args_1], void 0, function* (token, provider, network, blockNumber = 'latest') {
|
|
1302
1302
|
if (token === 'ETH') {
|
|
1303
1303
|
const ethFeedContract = (0, contracts_1.ETHPriceFeedContractViem)(provider, network);
|
|
1304
|
-
return ethFeedContract.read.latestAnswer();
|
|
1304
|
+
return ethFeedContract.read.latestAnswer((0, viem_1.setViemBlockNumber)(blockNumber));
|
|
1305
1305
|
}
|
|
1306
1306
|
if (token === 'WBTC') {
|
|
1307
1307
|
const wbtcFeedContract = (0, contracts_1.BTCPriceFeedContractViem)(provider, network);
|
|
1308
|
-
return wbtcFeedContract.read.latestAnswer();
|
|
1308
|
+
return wbtcFeedContract.read.latestAnswer((0, viem_1.setViemBlockNumber)(blockNumber));
|
|
1309
1309
|
}
|
|
1310
1310
|
if (token === 'wstETH') {
|
|
1311
|
-
return (0, priceService_1.getWstETHPrice)(provider, network);
|
|
1311
|
+
return (0, priceService_1.getWstETHPrice)(provider, network, blockNumber);
|
|
1312
1312
|
}
|
|
1313
1313
|
if (token === 'weETH' && network !== common_1.NetworkNumber.Plasma) {
|
|
1314
|
-
return (0, priceService_1.getWeETHPrice)(provider, network);
|
|
1314
|
+
return (0, priceService_1.getWeETHPrice)(provider, network, blockNumber);
|
|
1315
1315
|
}
|
|
1316
1316
|
if (token === 'wrsETH') {
|
|
1317
|
-
return (0, priceService_1.getWsrETHPrice)(provider, network);
|
|
1317
|
+
return (0, priceService_1.getWsrETHPrice)(provider, network, blockNumber);
|
|
1318
1318
|
}
|
|
1319
1319
|
if (token === 'syrupUSDT') {
|
|
1320
|
-
return (0, priceService_1.getSyrupUSDTPrice)(provider, network);
|
|
1320
|
+
return (0, priceService_1.getSyrupUSDTPrice)(provider, network, blockNumber);
|
|
1321
1321
|
}
|
|
1322
1322
|
if (token === 'wstUSR') {
|
|
1323
|
-
return (0, priceService_1.getWstUSRPrice)(provider, network);
|
|
1323
|
+
return (0, priceService_1.getWstUSRPrice)(provider, network, blockNumber);
|
|
1324
1324
|
}
|
|
1325
1325
|
const isMainnet = (0, utils_1.isMainnetNetwork)(network);
|
|
1326
1326
|
const chainLinkFeedAddress = (0, priceService_1.getChainlinkAssetAddress)(token, network);
|
|
1327
1327
|
if (isMainnet) {
|
|
1328
1328
|
const feedRegistryContract = (0, contracts_1.FeedRegistryContractViem)(provider, common_1.NetworkNumber.Eth);
|
|
1329
|
-
return feedRegistryContract.read.latestAnswer([chainLinkFeedAddress, constants_1.USD_QUOTE]);
|
|
1329
|
+
return feedRegistryContract.read.latestAnswer([chainLinkFeedAddress, constants_1.USD_QUOTE], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
1330
1330
|
}
|
|
1331
1331
|
const feedRegistryContract = (0, contracts_1.DFSFeedRegistryContractViem)(provider, network);
|
|
1332
|
-
return feedRegistryContract.read.latestRoundData([chainLinkFeedAddress, constants_1.USD_QUOTE]);
|
|
1332
|
+
return feedRegistryContract.read.latestRoundData([chainLinkFeedAddress, constants_1.USD_QUOTE], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
1333
1333
|
});
|
|
1334
1334
|
const tokensWithoutChainlinkPrices = ['sUSDS', 'USDA', 'ezETH', 'rsETH', 'weETHs', 'LBTC'];
|
|
1335
1335
|
const handleTokenWithoutChainlinkPrice = (token, prices) => {
|
|
@@ -1356,12 +1356,12 @@ const handleTokenWithoutChainlinkPrice = (token, prices) => {
|
|
|
1356
1356
|
}
|
|
1357
1357
|
return '0';
|
|
1358
1358
|
};
|
|
1359
|
-
const getTokensPricesForPortfolio = (
|
|
1359
|
+
const getTokensPricesForPortfolio = (tokens_2, provider_1, network_1, ...args_1) => __awaiter(void 0, [tokens_2, provider_1, network_1, ...args_1], void 0, function* (tokens, provider, network, blockNumber = 'latest') {
|
|
1360
1360
|
const tokensWithChainlinkPrices = tokens.filter((token) => !tokensWithoutChainlinkPrices.includes(token));
|
|
1361
1361
|
const pricesFromChainlink = {};
|
|
1362
1362
|
yield Promise.all(tokensWithChainlinkPrices.map((token) => __awaiter(void 0, void 0, void 0, function* () {
|
|
1363
1363
|
try {
|
|
1364
|
-
const price = yield getTokenPricePortfolio(token, provider, network);
|
|
1364
|
+
const price = yield getTokenPricePortfolio(token, provider, network, blockNumber);
|
|
1365
1365
|
if (typeof price === 'string')
|
|
1366
1366
|
pricesFromChainlink[token] = price;
|
|
1367
1367
|
else if (typeof price === 'bigint')
|
|
@@ -1380,9 +1380,9 @@ const getTokensPricesForPortfolio = (tokens, provider, network) => __awaiter(voi
|
|
|
1380
1380
|
});
|
|
1381
1381
|
return pricesFromChainlink;
|
|
1382
1382
|
});
|
|
1383
|
-
const _getUserPositionsPortfolio = (
|
|
1383
|
+
const _getUserPositionsPortfolio = (provider_1, network_1, user_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, user_1, ...args_1], void 0, function* (provider, network, user, blockNumber = 'latest') {
|
|
1384
1384
|
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1385
|
-
const data = yield view.read.getUserPositions([user]);
|
|
1385
|
+
const data = yield view.read.getUserPositions([user], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
1386
1386
|
const tokens = Array.from(new Set(data[1].map((vaultData) => {
|
|
1387
1387
|
const vaultTokens = [(0, tokens_1.getAssetInfoByAddress)(vaultData.supplyToken0, network).symbol, (0, tokens_1.getAssetInfoByAddress)(vaultData.borrowToken0, network).symbol];
|
|
1388
1388
|
if (vaultData.supplyToken1 && !(0, utils_1.compareAddresses)(constants_1.ZERO_ADDRESS, vaultData.supplyToken1))
|
|
@@ -1399,10 +1399,10 @@ const _getUserPositionsPortfolio = (provider, network, user) => __awaiter(void 0
|
|
|
1399
1399
|
if (!tokens.includes('WBTC'))
|
|
1400
1400
|
tokens.push('WBTC');
|
|
1401
1401
|
const [tokenPrices, merklCampaigns] = yield Promise.all([
|
|
1402
|
-
getTokensPricesForPortfolio(tokens, provider, network),
|
|
1402
|
+
getTokensPricesForPortfolio(tokens, provider, network, blockNumber),
|
|
1403
1403
|
(0, merkl_1.getFluidMerklCampaigns)(network),
|
|
1404
1404
|
]);
|
|
1405
|
-
const parsedMarketData = (yield Promise.all(data[1].map((vaultData) => __awaiter(void 0, void 0, void 0, function* () { return parseMarketData(provider, vaultData, network, tokenPrices); }))))
|
|
1405
|
+
const parsedMarketData = (yield Promise.all(data[1].map((vaultData) => __awaiter(void 0, void 0, void 0, function* () { return parseMarketData(provider, vaultData, network, tokenPrices, blockNumber); }))))
|
|
1406
1406
|
.map(marketData => (marketData ? (0, merkl_1.attachFluidMerklIncentives)(marketData, merklCampaigns) : marketData));
|
|
1407
1407
|
const userData = data[0].map((position, i) => (parsedMarketData[i] && Object.assign({}, parseUserData(position, parsedMarketData[i]))));
|
|
1408
1408
|
return parsedMarketData.map((market, i) => ({
|
|
@@ -1411,12 +1411,13 @@ const _getUserPositionsPortfolio = (provider, network, user) => __awaiter(void 0
|
|
|
1411
1411
|
})).filter(md => md.marketData !== undefined);
|
|
1412
1412
|
});
|
|
1413
1413
|
exports._getUserPositionsPortfolio = _getUserPositionsPortfolio;
|
|
1414
|
-
|
|
1414
|
+
/** `blockTimestamp` (unix seconds) is the historical block's timestamp when already known; otherwise it is read from the block. */
|
|
1415
|
+
const _getAllFluidMarketDataPortfolio = (provider_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, ...args_1], void 0, function* (provider, network, blockNumber = 'latest', blockTimestamp) {
|
|
1415
1416
|
const versions = (0, markets_1.getFluidVersionsDataForNetwork)(network);
|
|
1416
1417
|
if (versions.length === 0)
|
|
1417
1418
|
return {};
|
|
1418
1419
|
const view = (0, contracts_1.FluidViewContractViem)(provider, network);
|
|
1419
|
-
const vaultsData = yield Promise.all(versions.map((version) => view.read.getVaultData([version.marketAddress])));
|
|
1420
|
+
const vaultsData = yield Promise.all(versions.map((version) => view.read.getVaultData([version.marketAddress], (0, viem_1.setViemBlockNumber)(blockNumber))));
|
|
1420
1421
|
const tokens = Array.from(new Set(vaultsData.map((vaultData) => {
|
|
1421
1422
|
const vaultTokens = [(0, tokens_1.getAssetInfoByAddress)(vaultData.supplyToken0, network).symbol, (0, tokens_1.getAssetInfoByAddress)(vaultData.borrowToken0, network).symbol];
|
|
1422
1423
|
if (vaultData.supplyToken1 && !(0, utils_1.compareAddresses)(constants_1.ZERO_ADDRESS, vaultData.supplyToken1))
|
|
@@ -1431,10 +1432,12 @@ const _getAllFluidMarketDataPortfolio = (provider, network) => __awaiter(void 0,
|
|
|
1431
1432
|
if (!tokens.includes('WBTC'))
|
|
1432
1433
|
tokens.push('WBTC');
|
|
1433
1434
|
const [tokenPrices, merklCampaigns] = yield Promise.all([
|
|
1434
|
-
getTokensPricesForPortfolio(tokens, provider, network),
|
|
1435
|
-
(
|
|
1435
|
+
getTokensPricesForPortfolio(tokens, provider, network, blockNumber),
|
|
1436
|
+
// Merkl rewards are keyed by time: a historical block resolves to its timestamp first (one RPC
|
|
1437
|
+
// call unless given, none for 'latest') so the rewards in force at that moment are attached.
|
|
1438
|
+
(0, viem_1.getBlockTimestamp)(provider, blockNumber, blockTimestamp).then((asOfTimestamp) => (0, merkl_1.getFluidMerklCampaigns)(network, asOfTimestamp)),
|
|
1436
1439
|
]);
|
|
1437
|
-
const parsedMarketsData = yield Promise.all(vaultsData.map((vaultData) => __awaiter(void 0, void 0, void 0, function* () { return parseMarketData(provider, vaultData, network, tokenPrices); })));
|
|
1440
|
+
const parsedMarketsData = yield Promise.all(vaultsData.map((vaultData) => __awaiter(void 0, void 0, void 0, function* () { return parseMarketData(provider, vaultData, network, tokenPrices, blockNumber); })));
|
|
1438
1441
|
const marketsData = {};
|
|
1439
1442
|
parsedMarketsData.forEach((marketData, i) => {
|
|
1440
1443
|
if (!marketData)
|
|
@@ -1444,5 +1447,5 @@ const _getAllFluidMarketDataPortfolio = (provider, network) => __awaiter(void 0,
|
|
|
1444
1447
|
return marketsData;
|
|
1445
1448
|
});
|
|
1446
1449
|
exports._getAllFluidMarketDataPortfolio = _getAllFluidMarketDataPortfolio;
|
|
1447
|
-
const getAllFluidMarketDataPortfolio = (
|
|
1450
|
+
const getAllFluidMarketDataPortfolio = (provider_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, ...args_1], void 0, function* (provider, network, blockNumber = 'latest', blockTimestamp) { return (0, exports._getAllFluidMarketDataPortfolio)((0, viem_1.getViemProvider)(provider, network, { batch: { multicall: true } }), network, blockNumber, blockTimestamp); });
|
|
1448
1451
|
exports.getAllFluidMarketDataPortfolio = getAllFluidMarketDataPortfolio;
|
package/cjs/fluid/merkl.d.ts
CHANGED
|
@@ -20,10 +20,12 @@ export declare enum FluidMerklOpportunityType {
|
|
|
20
20
|
}
|
|
21
21
|
export declare const buildFluidMerklRewardMap: (opportunities: MerklOpportunity[], chainId: NetworkNumber) => FluidMerklRewardMap;
|
|
22
22
|
/**
|
|
23
|
-
* Fetches live vault-scoped Fluid campaigns for the chain, keyed by vault address.
|
|
24
|
-
*
|
|
23
|
+
* Fetches live vault-scoped Fluid campaigns for the chain, keyed by vault address. With
|
|
24
|
+
* `asOfTimestamp` (unix seconds) the campaigns and APRs are the ones Merkl had at that moment
|
|
25
|
+
* instead. Never throws — on any failure it returns an empty map, so Merkl being down can't break
|
|
26
|
+
* market data.
|
|
25
27
|
*/
|
|
26
|
-
export declare const getFluidMerklCampaigns: ((chainId: NetworkNumber) => Promise<FluidMerklRewardMap>) & memoize.Memoized<(chainId: NetworkNumber) => Promise<FluidMerklRewardMap>>;
|
|
28
|
+
export declare const getFluidMerklCampaigns: ((chainId: NetworkNumber, asOfTimestamp?: number) => Promise<FluidMerklRewardMap>) & memoize.Memoized<(chainId: NetworkNumber, asOfTimestamp?: number) => Promise<FluidMerklRewardMap>>;
|
|
27
29
|
/**
|
|
28
30
|
* Appends the vault's Merkl campaigns to its assets' incentive arrays — supply rewards on every
|
|
29
31
|
* suppliable asset and borrow rewards on every borrowable one. Smart collateral/debt vaults hold
|
package/cjs/fluid/merkl.js
CHANGED
|
@@ -70,23 +70,28 @@ const buildFluidMerklRewardMap = (opportunities, chainId) => {
|
|
|
70
70
|
};
|
|
71
71
|
exports.buildFluidMerklRewardMap = buildFluidMerklRewardMap;
|
|
72
72
|
/**
|
|
73
|
-
* Fetches live vault-scoped Fluid campaigns for the chain, keyed by vault address.
|
|
74
|
-
*
|
|
73
|
+
* Fetches live vault-scoped Fluid campaigns for the chain, keyed by vault address. With
|
|
74
|
+
* `asOfTimestamp` (unix seconds) the campaigns and APRs are the ones Merkl had at that moment
|
|
75
|
+
* instead. Never throws — on any failure it returns an empty map, so Merkl being down can't break
|
|
76
|
+
* market data.
|
|
75
77
|
*/
|
|
76
|
-
exports.getFluidMerklCampaigns = (0, memoizee_1.default)((chainId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
78
|
+
exports.getFluidMerklCampaigns = (0, memoizee_1.default)((chainId, asOfTimestamp) => __awaiter(void 0, void 0, void 0, function* () {
|
|
77
79
|
try {
|
|
78
|
-
const opportunities = yield (0, merkl_1.
|
|
80
|
+
const opportunities = yield (0, merkl_1.fetchMerklOpportunities)({
|
|
79
81
|
mainProtocolId: 'fluid',
|
|
82
|
+
chainId: chainId.toString(),
|
|
80
83
|
type: Object.values(FluidMerklOpportunityType).join(','),
|
|
81
84
|
status: types_1.OpportunityStatus.LIVE,
|
|
82
|
-
});
|
|
85
|
+
}, asOfTimestamp);
|
|
83
86
|
return (0, exports.buildFluidMerklRewardMap)(opportunities, chainId);
|
|
84
87
|
}
|
|
85
88
|
catch (e) {
|
|
86
89
|
console.error('Failed to fetch Fluid Merkl campaigns', e);
|
|
87
90
|
return {};
|
|
88
91
|
}
|
|
89
|
-
|
|
92
|
+
// memoizee keys on the declared arity, which excludes optional params — `length: 2` keeps the
|
|
93
|
+
// timestamp in the cache key so a historical lookup never serves (or is served by) the live one
|
|
94
|
+
}), { promise: true, maxAge: 60 * 1000, length: 2 });
|
|
90
95
|
/**
|
|
91
96
|
* Appends the vault's Merkl campaigns to its assets' incentive arrays — supply rewards on every
|
|
92
97
|
* suppliable asset and borrow rewards on every borrowable one. Smart collateral/debt vaults hold
|
package/cjs/liquity/index.d.ts
CHANGED
|
@@ -5,10 +5,10 @@ export declare const LIQUITY_NORMAL_MODE_RATIO = 110;
|
|
|
5
5
|
export declare const LIQUITY_RECOVERY_MODE_RATIO = 150;
|
|
6
6
|
export declare const _getLiquityAccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
|
|
7
7
|
export declare const getLiquityAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
|
|
8
|
-
export declare const getDebtInFront: (provider: EthereumProvider, address: EthAddress) => Promise<string>;
|
|
9
|
-
export declare const _getLiquityTroveInfo: (provider: Client, network: NetworkNumber, address: EthAddress) => Promise<LiquityTroveInfo>;
|
|
10
|
-
export declare const getLiquityTroveInfo: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress) => Promise<LiquityTroveInfo>;
|
|
11
|
-
export declare const getLiquityStakingData: (provider: Client, network: NetworkNumber, address: EthAddress) => Promise<{
|
|
8
|
+
export declare const getDebtInFront: (provider: EthereumProvider, address: EthAddress, blockNumber?: Blockish) => Promise<string>;
|
|
9
|
+
export declare const _getLiquityTroveInfo: (provider: Client, network: NetworkNumber, address: EthAddress, blockNumber?: Blockish) => Promise<LiquityTroveInfo>;
|
|
10
|
+
export declare const getLiquityTroveInfo: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, blockNumber?: Blockish) => Promise<LiquityTroveInfo>;
|
|
11
|
+
export declare const getLiquityStakingData: (provider: Client, network: NetworkNumber, address: EthAddress, blockNumber?: Blockish) => Promise<{
|
|
12
12
|
totalLUSDDeposited: string;
|
|
13
13
|
totalLQTYStaked: string;
|
|
14
14
|
stakedLQTY: string;
|
package/cjs/liquity/index.js
CHANGED
|
@@ -48,34 +48,34 @@ const _getLiquityAccountBalances = (provider, network, block, addressMapping, ad
|
|
|
48
48
|
exports._getLiquityAccountBalances = _getLiquityAccountBalances;
|
|
49
49
|
const getLiquityAccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () { return (0, exports._getLiquityAccountBalances)((0, viem_1.getViemProvider)(provider, network), network, block, addressMapping, address); });
|
|
50
50
|
exports.getLiquityAccountBalances = getLiquityAccountBalances;
|
|
51
|
-
const _getDebtInFront = (viewContract_1, address_1, ...args_1) => __awaiter(void 0, [viewContract_1, address_1, ...args_1], void 0, function* (viewContract, address, accumulatedSum = '0', iterations = 2000) {
|
|
52
|
-
const res = yield viewContract.read.getDebtInFront([address, accumulatedSum, iterations]);
|
|
51
|
+
const _getDebtInFront = (viewContract_1, address_1, ...args_1) => __awaiter(void 0, [viewContract_1, address_1, ...args_1], void 0, function* (viewContract, address, accumulatedSum = '0', iterations = 2000, blockNumber = 'latest') {
|
|
52
|
+
const res = yield viewContract.read.getDebtInFront([address, accumulatedSum, iterations], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
53
53
|
const debt = res[1].toString();
|
|
54
54
|
const next = res[0];
|
|
55
55
|
if (next === constants_1.ZERO_ADDRESS)
|
|
56
56
|
return (0, tokens_1.assetAmountInEth)(debt, 'LUSD');
|
|
57
|
-
return _getDebtInFront(viewContract, next, debt, iterations);
|
|
57
|
+
return _getDebtInFront(viewContract, next, debt, iterations, blockNumber);
|
|
58
58
|
});
|
|
59
|
-
const getDebtInFront = (
|
|
59
|
+
const getDebtInFront = (provider_1, address_1, ...args_1) => __awaiter(void 0, [provider_1, address_1, ...args_1], void 0, function* (provider, address, blockNumber = 'latest') {
|
|
60
60
|
const client = (0, viem_1.getViemProvider)(provider, common_1.NetworkNumber.Eth);
|
|
61
61
|
const viewContract = (0, contracts_1.LiquityViewContractViem)(client, common_1.NetworkNumber.Eth);
|
|
62
|
-
return _getDebtInFront(viewContract, address);
|
|
62
|
+
return _getDebtInFront(viewContract, address, '0', 2000, blockNumber);
|
|
63
63
|
});
|
|
64
64
|
exports.getDebtInFront = getDebtInFront;
|
|
65
|
-
const _getLiquityTroveInfo = (
|
|
65
|
+
const _getLiquityTroveInfo = (provider_1, network_1, address_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, ...args_1], void 0, function* (provider, network, address, blockNumber = 'latest') {
|
|
66
66
|
const viewContract = (0, contracts_1.LiquityViewContractViem)(provider, network);
|
|
67
67
|
const collSurplusPoolContract = (0, contracts_1.LiquityCollSurplusPoolContractViem)(provider, network);
|
|
68
68
|
const troveManagerContract = (0, contracts_1.LiquityTroveManagerContractViem)(provider, network);
|
|
69
69
|
const priceFeedContract = (0, contracts_1.LiquityPriceFeedContractViem)(provider, network);
|
|
70
70
|
const activePoolContract = (0, contracts_1.LiquityActivePoolContractViem)(provider, network);
|
|
71
71
|
const [troveInfo, collSurplusInfo, borrowingRateWithDecay, assetPrice, totalETH, totalLUSD, debtInFront,] = yield Promise.all([
|
|
72
|
-
viewContract.read.getTroveInfo([address]),
|
|
73
|
-
collSurplusPoolContract.read.getCollateral([address]),
|
|
74
|
-
troveManagerContract.read.getBorrowingRateWithDecay(),
|
|
75
|
-
priceFeedContract.read.fetchPrice(),
|
|
76
|
-
activePoolContract.read.getETH(),
|
|
77
|
-
activePoolContract.read.getLUSDDebt(),
|
|
78
|
-
_getDebtInFront(viewContract, address),
|
|
72
|
+
viewContract.read.getTroveInfo([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
73
|
+
collSurplusPoolContract.read.getCollateral([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
74
|
+
troveManagerContract.read.getBorrowingRateWithDecay((0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
75
|
+
priceFeedContract.read.fetchPrice((0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
76
|
+
activePoolContract.read.getETH((0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
77
|
+
activePoolContract.read.getLUSDDebt((0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
78
|
+
_getDebtInFront(viewContract, address, '0', 2000, blockNumber),
|
|
79
79
|
]);
|
|
80
80
|
const recoveryMode = troveInfo[6];
|
|
81
81
|
const minCollateralRatio = recoveryMode ? exports.LIQUITY_RECOVERY_MODE_RATIO : exports.LIQUITY_NORMAL_MODE_RATIO;
|
|
@@ -110,20 +110,20 @@ const _getLiquityTroveInfo = (provider, network, address) => __awaiter(void 0, v
|
|
|
110
110
|
return payload;
|
|
111
111
|
});
|
|
112
112
|
exports._getLiquityTroveInfo = _getLiquityTroveInfo;
|
|
113
|
-
const getLiquityTroveInfo = (
|
|
113
|
+
const getLiquityTroveInfo = (provider_1, network_1, address_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, ...args_1], void 0, function* (provider, network, address, blockNumber = 'latest') { return (0, exports._getLiquityTroveInfo)((0, viem_1.getViemProvider)(provider, network, { batch: { multicall: true } }), network, address, blockNumber); });
|
|
114
114
|
exports.getLiquityTroveInfo = getLiquityTroveInfo;
|
|
115
|
-
const getLiquityStakingData = (
|
|
115
|
+
const getLiquityStakingData = (provider_1, network_1, address_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, ...args_1], void 0, function* (provider, network, address, blockNumber = 'latest') {
|
|
116
116
|
const lqtyStakingView = (0, contracts_1.LiquityLQTYStakingViem)(provider, network);
|
|
117
117
|
const stabilityPoolView = (0, contracts_1.LiquityStabilityPoolViem)(provider, network);
|
|
118
118
|
const [stakes, pendingETHGain, pendingLUSDGain, totalLQTYStakes, stabilityPoolETHGain, stabilityPoolLQTYGain, compoundedLUSDDeposit, totalLUSDDeposits,] = yield Promise.all([
|
|
119
|
-
lqtyStakingView.read.stakes([address]),
|
|
120
|
-
lqtyStakingView.read.getPendingETHGain([address]),
|
|
121
|
-
lqtyStakingView.read.getPendingLUSDGain([address]),
|
|
122
|
-
lqtyStakingView.read.totalLQTYStaked(),
|
|
123
|
-
stabilityPoolView.read.getDepositorETHGain([address]),
|
|
124
|
-
stabilityPoolView.read.getDepositorLQTYGain([address]),
|
|
125
|
-
stabilityPoolView.read.getCompoundedLUSDDeposit([address]),
|
|
126
|
-
stabilityPoolView.read.getTotalLUSDDeposits(),
|
|
119
|
+
lqtyStakingView.read.stakes([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
120
|
+
lqtyStakingView.read.getPendingETHGain([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
121
|
+
lqtyStakingView.read.getPendingLUSDGain([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
122
|
+
lqtyStakingView.read.totalLQTYStaked((0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
123
|
+
stabilityPoolView.read.getDepositorETHGain([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
124
|
+
stabilityPoolView.read.getDepositorLQTYGain([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
125
|
+
stabilityPoolView.read.getCompoundedLUSDDeposit([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
126
|
+
stabilityPoolView.read.getTotalLUSDDeposits((0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
127
127
|
]);
|
|
128
128
|
const totalLUSDDeposited = (0, utils_1.getEthAmountForDecimals)(totalLUSDDeposits, 18);
|
|
129
129
|
const totalLQTYStaked = (0, utils_1.getEthAmountForDecimals)(totalLQTYStakes, 18);
|