@defisaver/positions-sdk 2.1.169-custom-fetching-2-dev → 2.1.169-custom-fetching-4-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 +47 -43
- package/cjs/services/merkl.d.ts +44 -2
- package/cjs/services/merkl.js +181 -19
- package/cjs/services/priceService.d.ts +12 -12
- package/cjs/services/priceService.js +30 -29
- package/cjs/services/viem.d.ts +10 -4
- package/cjs/services/viem.js +18 -18
- 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 +1 -1
- 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 +49 -45
- package/esm/services/merkl.d.ts +44 -2
- package/esm/services/merkl.js +171 -18
- package/esm/services/priceService.d.ts +12 -12
- package/esm/services/priceService.js +31 -30
- package/esm/services/viem.d.ts +10 -4
- package/esm/services/viem.js +16 -16
- 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 +1 -1
- 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 +50 -44
- package/src/services/merkl.ts +200 -19
- package/src/services/priceService.ts +33 -30
- package/src/services/viem.ts +14 -12
- package/src/spark/index.ts +11 -8
- package/src/types/merkl.ts +20 -0
- package/src/types/portfolio.ts +1 -1
- package/src/umbrella/index.ts +6 -5
package/cjs/aaveV2/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Client } from 'viem';
|
|
2
2
|
import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
|
|
3
3
|
import { AaveMarketInfo, AaveV2AssetsData, AaveV2PositionData } from '../types';
|
|
4
|
-
export declare const _getAaveV2MarketsData: (provider: Client, network: NetworkNumber, selectedMarket: AaveMarketInfo) => Promise<{
|
|
4
|
+
export declare const _getAaveV2MarketsData: (provider: Client, network: NetworkNumber, selectedMarket: AaveMarketInfo, blockNumber?: Blockish) => Promise<{
|
|
5
5
|
assetsData: AaveV2AssetsData;
|
|
6
6
|
}>;
|
|
7
|
-
export declare const getAaveV2MarketsData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: AaveMarketInfo) => Promise<{
|
|
7
|
+
export declare const getAaveV2MarketsData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: AaveMarketInfo, blockNumber?: Blockish) => Promise<{
|
|
8
8
|
assetsData: AaveV2AssetsData;
|
|
9
9
|
}>;
|
|
10
10
|
export declare const _getAaveV2AccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
|
|
11
11
|
export declare const getAaveV2AccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
|
|
12
|
-
export declare const _getAaveV2AccountData: (provider: Client, network: NetworkNumber, address: EthAddress, assetsData: AaveV2AssetsData, market: AaveMarketInfo) => Promise<AaveV2PositionData>;
|
|
13
|
-
export declare const getAaveV2AccountData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, assetsData: AaveV2AssetsData, market: AaveMarketInfo) => Promise<AaveV2PositionData>;
|
|
12
|
+
export declare const _getAaveV2AccountData: (provider: Client, network: NetworkNumber, address: EthAddress, assetsData: AaveV2AssetsData, market: AaveMarketInfo, blockNumber?: Blockish) => Promise<AaveV2PositionData>;
|
|
13
|
+
export declare const getAaveV2AccountData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, assetsData: AaveV2AssetsData, market: AaveMarketInfo, blockNumber?: Blockish) => Promise<AaveV2PositionData>;
|
|
14
14
|
export declare const getAaveV2FullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, market: AaveMarketInfo) => Promise<AaveV2PositionData>;
|
package/cjs/aaveV2/index.js
CHANGED
|
@@ -26,13 +26,13 @@ const aave_1 = require("../markets/aave");
|
|
|
26
26
|
const aaveHelpers_1 = require("../helpers/aaveHelpers");
|
|
27
27
|
const priceService_1 = require("../services/priceService");
|
|
28
28
|
const viem_1 = require("../services/viem");
|
|
29
|
-
const _getAaveV2MarketsData = (
|
|
29
|
+
const _getAaveV2MarketsData = (provider_1, network_1, selectedMarket_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, selectedMarket_1, ...args_1], void 0, function* (provider, network, selectedMarket, blockNumber = 'latest') {
|
|
30
30
|
const _addresses = selectedMarket.assets.map(a => (0, tokens_1.getAssetInfo)((0, utils_1.ethToWeth)(a)).address);
|
|
31
31
|
const loanInfoContract = (0, contracts_1.AaveLoanInfoV2ContractViem)(provider, network);
|
|
32
32
|
const marketAddress = selectedMarket.providerAddress;
|
|
33
33
|
const [loanInfo, ethPrice] = yield Promise.all([
|
|
34
|
-
loanInfoContract.read.getFullTokensInfo([marketAddress, _addresses]),
|
|
35
|
-
(0, priceService_1.getEthPrice)(provider),
|
|
34
|
+
loanInfoContract.read.getFullTokensInfo([marketAddress, _addresses], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
35
|
+
(0, priceService_1.getEthPrice)(provider, blockNumber),
|
|
36
36
|
]);
|
|
37
37
|
const markets = loanInfo
|
|
38
38
|
.map((market, i) => ({
|
|
@@ -91,7 +91,7 @@ const _getAaveV2MarketsData = (provider, network, selectedMarket) => __awaiter(v
|
|
|
91
91
|
return { assetsData: payload };
|
|
92
92
|
});
|
|
93
93
|
exports._getAaveV2MarketsData = _getAaveV2MarketsData;
|
|
94
|
-
const getAaveV2MarketsData = (
|
|
94
|
+
const getAaveV2MarketsData = (provider_1, network_1, selectedMarket_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, selectedMarket_1, ...args_1], void 0, function* (provider, network, selectedMarket, blockNumber = 'latest') { return (0, exports._getAaveV2MarketsData)((0, viem_1.getViemProvider)(provider, network), network, selectedMarket, blockNumber); });
|
|
95
95
|
exports.getAaveV2MarketsData = getAaveV2MarketsData;
|
|
96
96
|
const _getAaveV2AccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () {
|
|
97
97
|
var _a;
|
|
@@ -107,14 +107,14 @@ const _getAaveV2AccountBalances = (provider, network, block, addressMapping, add
|
|
|
107
107
|
exports._getAaveV2AccountBalances = _getAaveV2AccountBalances;
|
|
108
108
|
const getAaveV2AccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () { return (0, exports._getAaveV2AccountBalances)((0, viem_1.getViemProvider)(provider, network), network, block, addressMapping, address); });
|
|
109
109
|
exports.getAaveV2AccountBalances = getAaveV2AccountBalances;
|
|
110
|
-
const _getAaveV2AccountData = (
|
|
110
|
+
const _getAaveV2AccountData = (provider_1, network_1, address_1, assetsData_1, market_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, assetsData_1, market_1, ...args_1], void 0, function* (provider, network, address, assetsData, market, blockNumber = 'latest') {
|
|
111
111
|
if (!address)
|
|
112
112
|
throw new Error('Address is required');
|
|
113
113
|
let payload = Object.assign(Object.assign({}, aaveV3_1.EMPTY_AAVE_DATA), { lastUpdated: Date.now() });
|
|
114
114
|
const loanInfoContract = (0, contracts_1.AaveLoanInfoV2ContractViem)(provider, network);
|
|
115
115
|
const marketAddress = market.providerAddress;
|
|
116
116
|
const _addresses = market.assets.map(a => (0, tokens_1.getAssetInfo)((0, utils_1.ethToWeth)(a)).address);
|
|
117
|
-
const loanInfo = yield loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses]);
|
|
117
|
+
const loanInfo = yield loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
118
118
|
const usedAssets = {};
|
|
119
119
|
loanInfo.forEach((_tokenInfo, i) => {
|
|
120
120
|
const asset = market.assets[i];
|
|
@@ -176,7 +176,7 @@ const _getAaveV2AccountData = (provider, network, address, assetsData, market) =
|
|
|
176
176
|
return payload;
|
|
177
177
|
});
|
|
178
178
|
exports._getAaveV2AccountData = _getAaveV2AccountData;
|
|
179
|
-
const getAaveV2AccountData = (
|
|
179
|
+
const getAaveV2AccountData = (provider_1, network_1, address_1, assetsData_1, market_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, assetsData_1, market_1, ...args_1], void 0, function* (provider, network, address, assetsData, market, blockNumber = 'latest') { return (0, exports._getAaveV2AccountData)((0, viem_1.getViemProvider)(provider, network), network, address, assetsData, market, blockNumber); });
|
|
180
180
|
exports.getAaveV2AccountData = getAaveV2AccountData;
|
|
181
181
|
const getAaveV2FullPositionData = (provider, network, address, market) => __awaiter(void 0, void 0, void 0, function* () {
|
|
182
182
|
const marketData = yield (0, exports.getAaveV2MarketsData)(provider, network, market);
|
package/cjs/aaveV3/index.d.ts
CHANGED
|
@@ -6,8 +6,9 @@ import { getMerkleCampaigns } from './merkl';
|
|
|
6
6
|
export declare const aaveV3EmodeCategoriesMapping: (extractedState: any, usedAssets: AaveV3UsedAssets) => {
|
|
7
7
|
[key: number]: EModeCategoryDataMapping;
|
|
8
8
|
};
|
|
9
|
-
|
|
10
|
-
export declare function
|
|
9
|
+
/** `blockTimestamp` (unix seconds) is the historical block's timestamp when already known; otherwise it is read from the block. */
|
|
10
|
+
export declare function _getAaveV3MarketData(provider: Client, network: NetworkNumber, market: AaveMarketInfo, blockNumber?: 'latest' | number, blockTimestamp?: number): Promise<AaveV3MarketData>;
|
|
11
|
+
export declare function getAaveV3MarketData(provider: EthereumProvider, network: NetworkNumber, market: AaveMarketInfo, blockNumber?: 'latest' | number, blockTimestamp?: number): Promise<AaveV3MarketData>;
|
|
11
12
|
export declare const EMPTY_AAVE_DATA: {
|
|
12
13
|
usedAssets: {};
|
|
13
14
|
suppliedUsd: string;
|
|
@@ -76,7 +77,7 @@ export declare const getAaveV3AccountData: (provider: EthereumProvider, network:
|
|
|
76
77
|
export declare const getAaveV3FullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, market: AaveMarketInfo) => Promise<AaveV3PositionData>;
|
|
77
78
|
export declare const REWARDABLE_ASSETS: readonly ["0x028171bCA77440897B824Ca71D1c56caC55b68A3", "0x6C3c78838c761c6Ac7bE9F59fe808ea2A6E4379d", "0xD37EE7e4f452C6638c96536e68090De8cBcdb583", "0x279AF5b99540c1A3A7E3CDd326e19659401eF99e", "0xBcca60bB61934080951369a648Fb03DF4F96263C", "0x619beb58998eD2278e08620f97007e1116D5D25b", "0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811", "0x531842cEbbdD378f8ee36D171d6cC9C4fcf475Ec", "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656", "0x9c39809Dec7F95F5e0713634a4D0701329B3b4d2", "0x030bA81f1c18d280636F32af80b9AAd02Cf0854e", "0xF63B34710400CAd3e044cFfDcAb00a0f32E33eCf", "0xa06bC25B5805d5F8d82847D191Cb4Af5A3e873E0", "0x0b8f12b1788BFdE65Aa1ca52E3e9F3Ba401be16D", "0x6C5024Cd4F8A59110119C56f8933403A539555EB", "0xdC6a3Ab17299D9C2A412B0e0a4C1f55446AE0817", "0x5165d24277cD063F5ac44Efd447B27025e888f37", "0x7EbD09022Be45AD993BAA1CEc61166Fcc8644d97", "0xF256CC7847E919FAc9B808cC216cAc87CCF2f47a", "0xfAFEDF95E21184E3d880bd56D4806c4b8d31c69A", "0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1", "0x5BdB050A92CADcCfCDcCCBFC17204a1C9cC0Ab73", "0xc713e5E149D5D0715DcD1c156a020976e7E56B88", "0xba728eAd5e496BE00DCF66F650b6d7758eCB50f8", "0x101cc05f4A51C0319f570d5E146a8C625198e636", "0x01C0eb1f8c6F1C1bF74ae028697ce7AA2a8b0E92", "0xc9BC48c72154ef3e5425641a3c747242112a46AF", "0xB5385132EE8321977FfF44b60cDE9fE9AB0B4e6b", "0x272F97b7a56a387aE942350bBC7Df5700f8a4576", "0x13210D4Fe0d5402bd7Ecbc4B5bC5cFcA3b71adB0", "0x2e8f4bdbe3d47d7d7de490437aea9915d930f1a3", "0xfdb93b3b10936cf81fa59a02a7523b6e2149b2b7", "0xA361718326c15715591c299427c62086F69923D9", "0xbA429f7011c9fa04cDd46a2Da24dc0FF0aC6099c", "0xd4937682df3C8aEF4FE912A96A74121C0829E664", "0xfE8F19B17fFeF0fDbfe2671F248903055AFAA8Ca", "0x683923dB55Fead99A79Fa01A27EeC3cB19679cC3", "0xC2e10006AccAb7B45D9184FcF5b7EC7763f5BaAe", "0x8dAE6Cb04688C62d939ed9B68d32Bc62e49970b1", "0x00ad8eBF64F141f1C81e9f8f792d3d1631c6c684", "0x6F634c6135D2EBD550000ac92F494F9CB8183dAe", "0x4dDff5885a67E4EffeC55875a3977D7E60F82ae0"];
|
|
78
79
|
export declare const fetchYearlyMeritApyForStakingGho: () => Promise<string>;
|
|
79
|
-
export declare const getStakeAaveData: (provider: Client, network: NetworkNumber, address: EthAddress) => Promise<{
|
|
80
|
+
export declare const getStakeAaveData: (provider: Client, network: NetworkNumber, address: EthAddress, blockNumber?: Blockish) => Promise<{
|
|
80
81
|
activatedCooldown: string;
|
|
81
82
|
activatedCooldownAmount: string;
|
|
82
83
|
stkAaveRewardsBalance: string;
|
package/cjs/aaveV3/index.js
CHANGED
|
@@ -61,8 +61,9 @@ const aaveV3EmodeCategoriesMapping = (extractedState, usedAssets) => {
|
|
|
61
61
|
return categoriesMapping;
|
|
62
62
|
};
|
|
63
63
|
exports.aaveV3EmodeCategoriesMapping = aaveV3EmodeCategoriesMapping;
|
|
64
|
+
/** `blockTimestamp` (unix seconds) is the historical block's timestamp when already known; otherwise it is read from the block. */
|
|
64
65
|
function _getAaveV3MarketData(provider_1, network_1, market_1) {
|
|
65
|
-
return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest') {
|
|
66
|
+
return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest', blockTimestamp) {
|
|
66
67
|
var _a;
|
|
67
68
|
const _addresses = market.assets.map(a => (0, tokens_1.getAssetInfo)((0, utils_1.getWrappedNativeAssetFromUnwrapped)(a), network).address);
|
|
68
69
|
const loanInfoContract = (0, contracts_1.AaveV3ViewContractViem)(provider, network);
|
|
@@ -75,12 +76,15 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
|
|
|
75
76
|
? Array.from({ length: Math.ceil(_addresses.length / addressesPerRequest) }, (_, index) => _addresses.slice(index * addressesPerRequest, (index + 1) * addressesPerRequest))
|
|
76
77
|
: [_addresses];
|
|
77
78
|
const loanInfoPromise = Promise.all(addressChunks.map((addresses) => loanInfoContract.read.getFullTokensInfo([marketAddress, addresses], (0, viem_1.setViemBlockNumber)(blockNumber)))).then((loanInfoChunks) => loanInfoChunks.flat());
|
|
79
|
+
// Merkl rewards are keyed by time, so a historical block resolves to its timestamp first (one
|
|
80
|
+
// RPC call unless given, none for 'latest') and the rewards in force at that moment are attached.
|
|
81
|
+
const merkleRewardsPromise = (0, viem_1.getBlockTimestamp)(provider, blockNumber, blockTimestamp).then((asOfTimestamp) => (0, merkl_1.getMerkleCampaigns)(network, asOfTimestamp));
|
|
78
82
|
// eslint-disable-next-line prefer-const
|
|
79
83
|
let [loanInfo, eModesInfo, rewardInfo, merkleRewardsMap, meritRewardsMap] = yield Promise.all([
|
|
80
84
|
loanInfoPromise,
|
|
81
85
|
loanInfoContract.read.getAllEmodes([marketAddress], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
82
86
|
networksWithIncentives.includes(network) ? aaveIncentivesContract.read.getReservesIncentivesData([marketAddress], (0, viem_1.setViemBlockNumber)(blockNumber)) : null,
|
|
83
|
-
|
|
87
|
+
merkleRewardsPromise,
|
|
84
88
|
(0, merit_1.getMeritCampaigns)(network, market.value),
|
|
85
89
|
]);
|
|
86
90
|
// same break logic as view contract
|
|
@@ -319,8 +323,8 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
|
|
|
319
323
|
});
|
|
320
324
|
}
|
|
321
325
|
function getAaveV3MarketData(provider_1, network_1, market_1) {
|
|
322
|
-
return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest') {
|
|
323
|
-
return _getAaveV3MarketData((0, viem_1.getViemProvider)(provider, network), network, market, blockNumber);
|
|
326
|
+
return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest', blockTimestamp) {
|
|
327
|
+
return _getAaveV3MarketData((0, viem_1.getViemProvider)(provider, network), network, market, blockNumber, blockTimestamp);
|
|
324
328
|
});
|
|
325
329
|
}
|
|
326
330
|
exports.EMPTY_AAVE_DATA = {
|
|
@@ -726,18 +730,18 @@ const fetchYearlyMeritApyForStakingGho = () => __awaiter(void 0, void 0, void 0,
|
|
|
726
730
|
}
|
|
727
731
|
});
|
|
728
732
|
exports.fetchYearlyMeritApyForStakingGho = fetchYearlyMeritApyForStakingGho;
|
|
729
|
-
const getStakeAaveData = (
|
|
733
|
+
const getStakeAaveData = (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') {
|
|
730
734
|
const stkGhoAddress = (0, tokens_1.getAssetInfo)('stkGHO').address;
|
|
731
735
|
const stkAaveAddress = (0, tokens_1.getAssetInfo)('stkAAVE').address;
|
|
732
736
|
const AaveIncentivesController = (0, contracts_1.AaveIncentivesControllerViem)(provider, network);
|
|
733
737
|
const stkAAVE = (0, contracts_1.StkAAVEViem)(provider, network);
|
|
734
738
|
const stkGHO = (0, contracts_1.createViemContractFromConfigFunc)('Erc20', stkGhoAddress)(provider, network);
|
|
735
739
|
const [aaveRewardsBalance, emissionsPerSecond, stkAAVEBalance, stkAAVETotalSupply, stkGHOBalance, ghoMeritApy, sgho] = yield Promise.all([
|
|
736
|
-
AaveIncentivesController.read.getRewardsBalance([exports.REWARDABLE_ASSETS, address]),
|
|
737
|
-
stkAAVE.read.assets([stkAaveAddress]),
|
|
738
|
-
stkAAVE.read.balanceOf([address]),
|
|
739
|
-
stkAAVE.read.totalSupply(),
|
|
740
|
-
stkGHO.read.balanceOf([address]),
|
|
740
|
+
AaveIncentivesController.read.getRewardsBalance([exports.REWARDABLE_ASSETS, address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
741
|
+
stkAAVE.read.assets([stkAaveAddress], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
742
|
+
stkAAVE.read.balanceOf([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
743
|
+
stkAAVE.read.totalSupply((0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
744
|
+
stkGHO.read.balanceOf([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
741
745
|
(0, exports.fetchYearlyMeritApyForStakingGho)(),
|
|
742
746
|
(0, sgho_1.getSghoData)(network, address),
|
|
743
747
|
]);
|
package/cjs/aaveV3/merkl.d.ts
CHANGED
|
@@ -5,4 +5,8 @@ export declare const getAaveUnderlyingSymbol: (_symbol?: string) => string;
|
|
|
5
5
|
* USDC -> USDC
|
|
6
6
|
*/
|
|
7
7
|
export declare const formatAaveAsset: (_symbol: string) => string;
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Live Merkl reward campaigns for Aave V3 on the chain, keyed by aToken. With `asOfTimestamp` (unix
|
|
10
|
+
* seconds) the campaigns and APRs are the ones Merkl had at that moment instead.
|
|
11
|
+
*/
|
|
12
|
+
export declare const getMerkleCampaigns: (chainId: NetworkNumber, asOfTimestamp?: number) => Promise<MerkleRewardMap>;
|
package/cjs/aaveV3/merkl.js
CHANGED
|
@@ -39,12 +39,17 @@ const formatAaveAsset = (_symbol) => {
|
|
|
39
39
|
return _symbol;
|
|
40
40
|
};
|
|
41
41
|
exports.formatAaveAsset = formatAaveAsset;
|
|
42
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Live Merkl reward campaigns for Aave V3 on the chain, keyed by aToken. With `asOfTimestamp` (unix
|
|
44
|
+
* seconds) the campaigns and APRs are the ones Merkl had at that moment instead.
|
|
45
|
+
*/
|
|
46
|
+
const getMerkleCampaigns = (chainId, asOfTimestamp) => __awaiter(void 0, void 0, void 0, function* () {
|
|
43
47
|
try {
|
|
44
|
-
const opportunities = yield (0, merkl_1.
|
|
48
|
+
const opportunities = yield (0, merkl_1.fetchMerklOpportunities)({
|
|
45
49
|
mainProtocolId: 'aave',
|
|
50
|
+
chainId: chainId.toString(),
|
|
46
51
|
status: types_1.OpportunityStatus.LIVE,
|
|
47
|
-
});
|
|
52
|
+
}, asOfTimestamp, (o) => { var _a; return !((_a = o.type) === null || _a === void 0 ? void 0 : _a.startsWith('AAVE_V4_')); });
|
|
48
53
|
const relevantOpportunities = opportunities
|
|
49
54
|
.filter((o) => o.chainId === chainId)
|
|
50
55
|
.filter((o) => o.status === types_1.OpportunityStatus.LIVE);
|
package/cjs/aaveV4/index.d.ts
CHANGED
|
@@ -2,8 +2,9 @@ import { Client } from 'viem';
|
|
|
2
2
|
import { AaveV4AccountData, AaveV4SpokeData, AaveV4SpokeInfo, EthAddress, EthereumProvider, NetworkNumber, Blockish, PositionBalances } from '../types';
|
|
3
3
|
export * as lend from './lend';
|
|
4
4
|
export { getAaveV4MerkleCampaigns } from './merkl';
|
|
5
|
-
|
|
6
|
-
export declare function
|
|
5
|
+
/** `blockTimestamp` (unix seconds) is the historical block's timestamp when already known; otherwise it is read from the block. */
|
|
6
|
+
export declare function _getAaveV4SpokeData(provider: Client, network: NetworkNumber, market: AaveV4SpokeInfo, blockNumber?: 'latest' | number, blockTimestamp?: number): Promise<AaveV4SpokeData>;
|
|
7
|
+
export declare function getAaveV4SpokeData(provider: EthereumProvider, network: NetworkNumber, spoke: AaveV4SpokeInfo, blockNumber?: 'latest' | number, blockTimestamp?: number): Promise<AaveV4SpokeData>;
|
|
7
8
|
export declare function _getAaveV4AccountData(provider: Client, network: NetworkNumber, spokeData: AaveV4SpokeData, address: EthAddress, blockNumber?: 'latest' | number): Promise<AaveV4AccountData>;
|
|
8
9
|
/** Shared raw read; no spoke metadata or market enrichment. */
|
|
9
10
|
export declare const _getAaveV4LoanBalances: (provider: Client, network: NetworkNumber, block: Blockish, address: EthAddress, spoke: EthAddress) => Promise<{
|
|
@@ -39,4 +40,4 @@ export declare const _getAaveV4AccountHasAnyBalance: (provider: Client, network:
|
|
|
39
40
|
export declare function getAaveV4AccountData(provider: EthereumProvider, network: NetworkNumber, marketData: AaveV4SpokeData, address: EthAddress, blockNumber?: 'latest' | number): Promise<any>;
|
|
40
41
|
export declare const _getAaveV4AccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, spokeAddress: EthAddress, spokeData?: AaveV4SpokeData) => Promise<PositionBalances>;
|
|
41
42
|
export declare const getAaveV4AccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, spokeAddress: EthAddress, spokeData?: AaveV4SpokeData) => Promise<PositionBalances>;
|
|
42
|
-
export declare function getAaveV4UnderlyingFromReserveId(provider: EthereumProvider, network: NetworkNumber, spoke: EthAddress, reserveId: number): Promise<any>;
|
|
43
|
+
export declare function getAaveV4UnderlyingFromReserveId(provider: EthereumProvider, network: NetworkNumber, spoke: EthAddress, reserveId: number, blockNumber?: Blockish): Promise<any>;
|
package/cjs/aaveV4/index.js
CHANGED
|
@@ -65,8 +65,8 @@ const merkl_1 = require("./merkl");
|
|
|
65
65
|
exports.lend = __importStar(require("./lend"));
|
|
66
66
|
var merkl_2 = require("./merkl");
|
|
67
67
|
Object.defineProperty(exports, "getAaveV4MerkleCampaigns", { enumerable: true, get: function () { return merkl_2.getAaveV4MerkleCampaigns; } });
|
|
68
|
-
const fetchHubData = (
|
|
69
|
-
const hubData = yield viewContract.read.getHubAllAssetsData([hubAddress]);
|
|
68
|
+
const fetchHubData = (viewContract_1, hubAddress_1, ...args_1) => __awaiter(void 0, [viewContract_1, hubAddress_1, ...args_1], void 0, function* (viewContract, hubAddress, blockNumber = 'latest') {
|
|
69
|
+
const hubData = yield viewContract.read.getHubAllAssetsData([hubAddress], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
70
70
|
return {
|
|
71
71
|
assets: hubData.reduce((acc, assetOnChainData) => {
|
|
72
72
|
acc[assetOnChainData.assetId] = {
|
|
@@ -188,18 +188,21 @@ const formatReserveAsset = (reserveAsset, hubAsset, reserveId, oracleDecimals, n
|
|
|
188
188
|
liquidityFee: liquidityFee.toString(),
|
|
189
189
|
});
|
|
190
190
|
});
|
|
191
|
+
/** `blockTimestamp` (unix seconds) is the historical block's timestamp when already known; otherwise it is read from the block. */
|
|
191
192
|
function _getAaveV4SpokeData(provider_1, network_1, market_1) {
|
|
192
|
-
return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest') {
|
|
193
|
+
return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest', blockTimestamp) {
|
|
193
194
|
const viewContract = (0, contracts_1.AaveV4ViewContractViem)(provider, network, blockNumber);
|
|
194
195
|
const hubsData = {};
|
|
195
196
|
const loadHubData = (hubAddress) => __awaiter(this, void 0, void 0, function* () {
|
|
196
|
-
hubsData[hubAddress.toLowerCase()] = yield fetchHubData(viewContract, hubAddress);
|
|
197
|
+
hubsData[hubAddress.toLowerCase()] = yield fetchHubData(viewContract, hubAddress, blockNumber);
|
|
197
198
|
});
|
|
198
199
|
// market.hubs is only a prefetch hint (lets known hubs load in parallel with the spoke data), so
|
|
199
200
|
// failures are tolerated here — any hub the reserves actually reference is (re)fetched below.
|
|
200
201
|
const [spokeData, merklCampaigns] = yield Promise.all([
|
|
201
|
-
viewContract.read.getSpokeDataFull([market.address]),
|
|
202
|
-
(
|
|
202
|
+
viewContract.read.getSpokeDataFull([market.address], (0, viem_1.setViemBlockNumber)(blockNumber)),
|
|
203
|
+
// Merkl rewards are keyed by time: a historical block resolves to its timestamp first (one RPC
|
|
204
|
+
// call unless given, none for 'latest') so the rewards in force at that moment are attached.
|
|
205
|
+
(0, viem_1.getBlockTimestamp)(provider, blockNumber, blockTimestamp).then((asOfTimestamp) => (0, merkl_1.getAaveV4MerkleCampaigns)(network, asOfTimestamp)),
|
|
203
206
|
...market.hubs.map((hubAddress) => loadHubData(hubAddress).catch(() => { })),
|
|
204
207
|
]);
|
|
205
208
|
// The on-chain reserves are the source of truth for which hubs the spoke uses — fetch any hub
|
|
@@ -229,14 +232,14 @@ function _getAaveV4SpokeData(provider_1, network_1, market_1) {
|
|
|
229
232
|
});
|
|
230
233
|
}
|
|
231
234
|
function getAaveV4SpokeData(provider_1, network_1, spoke_1) {
|
|
232
|
-
return __awaiter(this, arguments, void 0, function* (provider, network, spoke, blockNumber = 'latest') {
|
|
233
|
-
return _getAaveV4SpokeData((0, viem_1.getViemProvider)(provider, network), network, spoke, blockNumber);
|
|
235
|
+
return __awaiter(this, arguments, void 0, function* (provider, network, spoke, blockNumber = 'latest', blockTimestamp) {
|
|
236
|
+
return _getAaveV4SpokeData((0, viem_1.getViemProvider)(provider, network), network, spoke, blockNumber, blockTimestamp);
|
|
234
237
|
});
|
|
235
238
|
}
|
|
236
239
|
function _getAaveV4AccountData(provider_1, network_1, spokeData_1, address_1) {
|
|
237
240
|
return __awaiter(this, arguments, void 0, function* (provider, network, spokeData, address, blockNumber = 'latest') {
|
|
238
241
|
const viewContract = (0, contracts_1.AaveV4ViewContractViem)(provider, network, blockNumber);
|
|
239
|
-
const loanData = yield viewContract.read.getLoanData([spokeData.address, address]);
|
|
242
|
+
const loanData = yield viewContract.read.getLoanData([spokeData.address, address], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
240
243
|
const healthFactorFromContract = new decimal_js_1.default(loanData.healthFactor.toString());
|
|
241
244
|
const healthFactor = (0, utils_1.isMaxUint)(healthFactorFromContract.toString()) ? 'Infinity' : healthFactorFromContract.div(1e18).toString();
|
|
242
245
|
const usedAssets = loanData.reserves.reduce((acc, usedReserveAsset) => {
|
|
@@ -309,7 +312,7 @@ const _getAaveV4AccountHasAnyBalance = (provider, network, block, address, spoke
|
|
|
309
312
|
return false;
|
|
310
313
|
const blockNumber = block === 'latest' ? 'latest' : Number(block);
|
|
311
314
|
const viewContract = (0, contracts_1.AaveV4ViewContractViem)(provider, network, blockNumber);
|
|
312
|
-
const loanData = yield viewContract.read.getLoanData([spokeAddress, address]);
|
|
315
|
+
const loanData = yield viewContract.read.getLoanData([spokeAddress, address], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
313
316
|
const reserves = (loanData === null || loanData === void 0 ? void 0 : loanData.reserves) || [];
|
|
314
317
|
return reserves.some((reserveAsset) => {
|
|
315
318
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
@@ -364,13 +367,13 @@ const getAaveV4AccountBalances = (provider, network, block, addressMapping, addr
|
|
|
364
367
|
return (0, exports._getAaveV4AccountBalances)((0, viem_1.getViemProvider)(provider, network), network, block, addressMapping, address, spokeAddress, spokeData);
|
|
365
368
|
});
|
|
366
369
|
exports.getAaveV4AccountBalances = getAaveV4AccountBalances;
|
|
367
|
-
const _getAaveV4UnderlyingFromReserveId = (
|
|
368
|
-
const viewContract = (0, contracts_1.AaveV4ViewContractViem)(provider, network);
|
|
369
|
-
const reserveData = yield viewContract.read.getReserveData([spoke, BigInt(reserveId)]);
|
|
370
|
+
const _getAaveV4UnderlyingFromReserveId = (provider_1, network_1, spoke_1, reserveId_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, spoke_1, reserveId_1, ...args_1], void 0, function* (provider, network, spoke, reserveId, blockNumber = 'latest') {
|
|
371
|
+
const viewContract = (0, contracts_1.AaveV4ViewContractViem)(provider, network, blockNumber);
|
|
372
|
+
const reserveData = yield viewContract.read.getReserveData([spoke, BigInt(reserveId)], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
370
373
|
return reserveData.underlying;
|
|
371
374
|
});
|
|
372
|
-
function getAaveV4UnderlyingFromReserveId(
|
|
373
|
-
return __awaiter(this,
|
|
374
|
-
return _getAaveV4UnderlyingFromReserveId((0, viem_1.getViemProvider)(provider, network), network, spoke, reserveId);
|
|
375
|
+
function getAaveV4UnderlyingFromReserveId(provider_1, network_1, spoke_1, reserveId_1) {
|
|
376
|
+
return __awaiter(this, arguments, void 0, function* (provider, network, spoke, reserveId, blockNumber = 'latest') {
|
|
377
|
+
return _getAaveV4UnderlyingFromReserveId((0, viem_1.getViemProvider)(provider, network), network, spoke, reserveId, blockNumber);
|
|
375
378
|
});
|
|
376
379
|
}
|
package/cjs/aaveV4/merkl.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { AaveV4MerklRewardMap, AaveV4ReserveAssetData, MerklOpportunity, NetworkNumber } from '../types';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* `asOfTimestamp` (unix seconds, defaults to now) decides which of an opportunity's campaigns count
|
|
4
|
+
* as running, so historical opportunity lists are judged at their own moment rather than today's.
|
|
5
|
+
*/
|
|
6
|
+
export declare const buildAaveV4MerklRewardMap: (opportunities: MerklOpportunity[], chainId: NetworkNumber, asOfTimestamp?: number) => AaveV4MerklRewardMap;
|
|
7
|
+
/**
|
|
8
|
+
* Live Aave V4 Merkl reward campaigns for the chain, split by hub/spoke scope. With `asOfTimestamp`
|
|
9
|
+
* (unix seconds) the campaigns and APRs are the ones Merkl had at that moment instead.
|
|
10
|
+
*/
|
|
11
|
+
export declare const getAaveV4MerkleCampaigns: (chainId: NetworkNumber, asOfTimestamp?: number) => Promise<AaveV4MerklRewardMap>;
|
|
4
12
|
/**
|
|
5
13
|
* Returns a copy of the asset with scope-specific incentive arrays pre-combined with the asset's
|
|
6
14
|
* intrinsic (staking) incentives, so each surface can render base yield + the rewards that apply to it.
|
package/cjs/aaveV4/merkl.js
CHANGED
|
@@ -45,7 +45,11 @@ const buildIncentive = (opportunity) => {
|
|
|
45
45
|
description: opportunity.description || `Eligible for ${token} rewards through Merkl.`,
|
|
46
46
|
};
|
|
47
47
|
};
|
|
48
|
-
|
|
48
|
+
/**
|
|
49
|
+
* `asOfTimestamp` (unix seconds, defaults to now) decides which of an opportunity's campaigns count
|
|
50
|
+
* as running, so historical opportunity lists are judged at their own moment rather than today's.
|
|
51
|
+
*/
|
|
52
|
+
const buildAaveV4MerklRewardMap = (opportunities, chainId, asOfTimestamp = Date.now() / 1000) => {
|
|
49
53
|
const result = { hub: {}, spoke: {} };
|
|
50
54
|
const endByCampaignId = {};
|
|
51
55
|
opportunities.forEach((o) => {
|
|
@@ -63,7 +67,7 @@ const buildAaveV4MerklRewardMap = (opportunities, chainId) => {
|
|
|
63
67
|
.forEach((o) => {
|
|
64
68
|
var _a, _b, _c;
|
|
65
69
|
const side = o.action === types_1.OpportunityAction.BORROW ? types_1.IncentiveSide.Borrow : types_1.IncentiveSide.Supply;
|
|
66
|
-
const now =
|
|
70
|
+
const now = asOfTimestamp;
|
|
67
71
|
const methods = (_a = o.campaigns) === null || _a === void 0 ? void 0 : _a.filter((c) => (c.startTimestamp === undefined || c.startTimestamp <= now)
|
|
68
72
|
&& (c.endTimestamp === undefined || c.endTimestamp > now)).map((c) => { var _a, _b; return (_b = (_a = c.params) === null || _a === void 0 ? void 0 : _a.distributionMethodParameters) === null || _b === void 0 ? void 0 : _b.distributionMethod; });
|
|
69
73
|
// An opportunity-level APR cannot be split between simultaneous net and additive campaigns.
|
|
@@ -142,15 +146,20 @@ const buildAaveV4MerklRewardMap = (opportunities, chainId) => {
|
|
|
142
146
|
return result;
|
|
143
147
|
};
|
|
144
148
|
exports.buildAaveV4MerklRewardMap = buildAaveV4MerklRewardMap;
|
|
145
|
-
|
|
149
|
+
/**
|
|
150
|
+
* Live Aave V4 Merkl reward campaigns for the chain, split by hub/spoke scope. With `asOfTimestamp`
|
|
151
|
+
* (unix seconds) the campaigns and APRs are the ones Merkl had at that moment instead.
|
|
152
|
+
*/
|
|
153
|
+
const getAaveV4MerkleCampaigns = (chainId, asOfTimestamp) => __awaiter(void 0, void 0, void 0, function* () {
|
|
146
154
|
try {
|
|
147
|
-
const opportunities = yield (0, merkl_1.
|
|
155
|
+
const opportunities = yield (0, merkl_1.fetchMerklOpportunities)({
|
|
148
156
|
mainProtocolId: 'aave',
|
|
157
|
+
chainId: chainId.toString(),
|
|
149
158
|
type: 'AAVE_V4_HUB_SUPPLY,AAVE_V4_HUB_BORROW,AAVE_V4_SPOKE_SUPPLY,AAVE_V4_SPOKE_BORROW,AAVE_V4_HUB_NET_LENDING,AAVE_V4_HUB_NET_BORROWING,AAVE_V4_SPOKE_NET_LENDING,AAVE_V4_SPOKE_NET_BORROWING',
|
|
150
159
|
status: types_1.OpportunityStatus.LIVE,
|
|
151
160
|
campaigns: 'true',
|
|
152
|
-
});
|
|
153
|
-
return (0, exports.buildAaveV4MerklRewardMap)(opportunities, chainId);
|
|
161
|
+
}, asOfTimestamp);
|
|
162
|
+
return (0, exports.buildAaveV4MerklRewardMap)(opportunities, chainId, asOfTimestamp);
|
|
154
163
|
}
|
|
155
164
|
catch (e) {
|
|
156
165
|
console.error('Failed to fetch Aave V4 Merkle campaigns', e);
|
package/cjs/claiming/aaveV3.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Client } from 'viem';
|
|
2
|
-
import { EthAddress, NetworkNumber } from '../types';
|
|
2
|
+
import { Blockish, EthAddress, NetworkNumber } from '../types';
|
|
3
3
|
import { ClaimableToken, MerklRewardsClaimableToken } from '../types/claiming';
|
|
4
|
-
export declare function getUnclaimedRewardsForAllMarkets(provider: Client, network: NetworkNumber, walletAddress: EthAddress, marketAddress: EthAddress): Promise<ClaimableToken[]>;
|
|
4
|
+
export declare function getUnclaimedRewardsForAllMarkets(provider: Client, network: NetworkNumber, walletAddress: EthAddress, marketAddress: EthAddress, blockNumber?: Blockish): Promise<ClaimableToken[]>;
|
|
5
5
|
export declare function getMerklUnclaimedRewards(account: EthAddress, network: NetworkNumber): Promise<MerklRewardsClaimableToken[]>;
|
|
6
6
|
export declare function getMeritUnclaimedRewards(account: EthAddress, network: NetworkNumber): Promise<ClaimableToken[]>;
|
package/cjs/claiming/aaveV3.js
CHANGED
|
@@ -19,6 +19,7 @@ const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
|
19
19
|
const claiming_1 = require("../types/claiming");
|
|
20
20
|
const contracts_1 = require("../contracts");
|
|
21
21
|
const utils_1 = require("../services/utils");
|
|
22
|
+
const viem_1 = require("../services/viem");
|
|
22
23
|
const aaveHelpers_1 = require("../helpers/aaveHelpers");
|
|
23
24
|
const mapAaveRewardsToClaimableTokens = (aaveRewards, marketAddress, walletAddress) => aaveRewards.map(reward => ({
|
|
24
25
|
symbol: reward.symbol,
|
|
@@ -34,10 +35,10 @@ const mapAaveRewardsToClaimableTokens = (aaveRewards, marketAddress, walletAddre
|
|
|
34
35
|
isAaveToken: reward.symbol.startsWith('a'),
|
|
35
36
|
},
|
|
36
37
|
}));
|
|
37
|
-
function getUnclaimedRewardsForAllMarkets(
|
|
38
|
-
return __awaiter(this,
|
|
38
|
+
function getUnclaimedRewardsForAllMarkets(provider_1, network_1, walletAddress_1, marketAddress_1) {
|
|
39
|
+
return __awaiter(this, arguments, void 0, function* (provider, network, walletAddress, marketAddress, blockNumber = 'latest') {
|
|
39
40
|
const contract = (0, contracts_1.AaveIncentiveDataProviderV3ContractViem)(provider, network);
|
|
40
|
-
const tokensData = yield contract.read.getUserReservesIncentivesData([marketAddress, walletAddress]);
|
|
41
|
+
const tokensData = yield contract.read.getUserReservesIncentivesData([marketAddress, walletAddress], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
41
42
|
const allTokensDataArrays = tokensData.reduce((acc, val) => {
|
|
42
43
|
acc.push(val.aTokenIncentivesUserData.userRewardsInformation);
|
|
43
44
|
acc.push(val.vTokenIncentivesUserData.userRewardsInformation);
|
|
@@ -51,7 +52,7 @@ function getUnclaimedRewardsForAllMarkets(provider, network, walletAddress, mark
|
|
|
51
52
|
// array of rewards for each market (aToken/vToken)
|
|
52
53
|
// reward can be any token like wstETH, but also aToken like aWETH
|
|
53
54
|
const aaveRewardsController = (0, contracts_1.AaveRewardsControllerViem)(provider, network);
|
|
54
|
-
const rewardsPerAAsset = yield Promise.all(allATokens.map((token) => aaveRewardsController.read.getAllUserRewards([[token], walletAddress])));
|
|
55
|
+
const rewardsPerAAsset = yield Promise.all(allATokens.map((token) => aaveRewardsController.read.getAllUserRewards([[token], walletAddress], (0, viem_1.setViemBlockNumber)(blockNumber))));
|
|
55
56
|
// match amounts to token symbol, parse decimal amounts
|
|
56
57
|
const rewardsPerAAssetWithInfo = rewardsPerAAsset.map((rewardForAAsset, aaIndex) => {
|
|
57
58
|
const rewardsList = rewardForAAsset[0];
|
package/cjs/claiming/king.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Client } from 'viem';
|
|
2
|
-
import { EthAddress, NetworkNumber } from '../types/common';
|
|
2
|
+
import { Blockish, EthAddress, NetworkNumber } from '../types/common';
|
|
3
3
|
export declare const fetchKingRewards: (walletAddress: EthAddress) => Promise<any>;
|
|
4
|
-
export declare const getKingRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[]) => Promise<Record<string, any[]>>;
|
|
4
|
+
export declare const getKingRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[], blockNumber?: Blockish) => Promise<Record<string, any[]>>;
|
package/cjs/claiming/king.js
CHANGED
|
@@ -16,6 +16,7 @@ exports.getKingRewards = exports.fetchKingRewards = 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");
|
|
19
|
+
const viem_1 = require("../services/viem");
|
|
19
20
|
const claiming_1 = require("../types/claiming");
|
|
20
21
|
const fetchKingRewards = (walletAddress) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
22
|
try {
|
|
@@ -30,13 +31,13 @@ const fetchKingRewards = (walletAddress) => __awaiter(void 0, void 0, void 0, fu
|
|
|
30
31
|
}
|
|
31
32
|
});
|
|
32
33
|
exports.fetchKingRewards = fetchKingRewards;
|
|
33
|
-
const getKingRewards = (
|
|
34
|
+
const getKingRewards = (provider_1, network_1, walletAddresses_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, walletAddresses_1, ...args_1], void 0, function* (provider, network, walletAddresses, blockNumber = 'latest') {
|
|
34
35
|
// Fetch all API data in parallel (these are external API calls, can't be batched with multicall)
|
|
35
36
|
const apiDataPromises = walletAddresses.map(address => (0, exports.fetchKingRewards)(address));
|
|
36
37
|
const apiDataArray = yield Promise.all(apiDataPromises);
|
|
37
38
|
// Batch all contract calls using multicall
|
|
38
39
|
const contract = (0, contracts_1.UUPSViem)(provider, network);
|
|
39
|
-
const cumulativePromises = walletAddresses.map(address => contract.read.cumulativeClaimed([address]));
|
|
40
|
+
const cumulativePromises = walletAddresses.map(address => contract.read.cumulativeClaimed([address], (0, viem_1.setViemBlockNumber)(blockNumber)));
|
|
40
41
|
const cumulativeResults = yield Promise.all(cumulativePromises);
|
|
41
42
|
// Process results
|
|
42
43
|
const results = {};
|
package/cjs/claiming/spark.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Client } from 'viem';
|
|
2
|
-
import { EthAddress, NetworkNumber } from '../types/common';
|
|
2
|
+
import { Blockish, EthAddress, NetworkNumber } from '../types/common';
|
|
3
3
|
import { SparkRewardsClaimableToken } from '../types/claiming';
|
|
4
4
|
export declare const fetchSpkAirdropRewards: (walletAddress: EthAddress) => Promise<any>;
|
|
5
|
-
export declare const fetchSparkAirdropRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[]) => Promise<Record<string, any[]>>;
|
|
6
|
-
export declare const fetchSparkRewards: (provider: Client, network: NetworkNumber, walletAddress: EthAddress, marketAddress: EthAddress) => Promise<SparkRewardsClaimableToken[]>;
|
|
5
|
+
export declare const fetchSparkAirdropRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[], blockNumber?: Blockish) => Promise<Record<string, any[]>>;
|
|
6
|
+
export declare const fetchSparkRewards: (provider: Client, network: NetworkNumber, walletAddress: EthAddress, marketAddress: EthAddress, blockNumber?: Blockish) => Promise<SparkRewardsClaimableToken[]>;
|
package/cjs/claiming/spark.js
CHANGED
|
@@ -18,6 +18,7 @@ const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
|
18
18
|
const contracts_1 = require("../contracts");
|
|
19
19
|
const claiming_1 = require("../types/claiming");
|
|
20
20
|
const utils_1 = require("../services/utils");
|
|
21
|
+
const viem_1 = require("../services/viem");
|
|
21
22
|
const IGNITION_REWARDS = '0xCBA0C0a2a0B6Bb11233ec4EA85C5bFfea33e724d';
|
|
22
23
|
const PFL3_REWARDS = '0x7ac96180C4d6b2A328D3a19ac059D0E7Fc3C6d41';
|
|
23
24
|
const fetchSpkAirdropRewards = (walletAddress) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -33,17 +34,17 @@ const fetchSpkAirdropRewards = (walletAddress) => __awaiter(void 0, void 0, void
|
|
|
33
34
|
}
|
|
34
35
|
});
|
|
35
36
|
exports.fetchSpkAirdropRewards = fetchSpkAirdropRewards;
|
|
36
|
-
const getCumulativeClaimedSpkAirdrop = (
|
|
37
|
+
const getCumulativeClaimedSpkAirdrop = (provider_1, network_1, data_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, data_1, ...args_1], void 0, function* (provider, network, data, blockNumber = 'latest') {
|
|
37
38
|
const contractIgnition = (0, contracts_1.createViemContractFromConfigFunc)('SparkAirdrop', IGNITION_REWARDS)(provider, network);
|
|
38
39
|
const contractPFL = (0, contracts_1.createViemContractFromConfigFunc)('SparkAirdrop', PFL3_REWARDS)(provider, network);
|
|
39
40
|
const cumulativeAmounts = yield Promise.all(data.map((airdrop) => {
|
|
40
41
|
const { user, tokenAddress, epoch, type, } = airdrop;
|
|
41
42
|
const contract = type === claiming_1.SparkAirdropType.SPARK_IGNITION ? contractIgnition : contractPFL;
|
|
42
|
-
return contract.read.cumulativeClaimed([user, tokenAddress, BigInt(epoch)]);
|
|
43
|
+
return contract.read.cumulativeClaimed([user, tokenAddress, BigInt(epoch)], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
43
44
|
}));
|
|
44
45
|
return cumulativeAmounts.map((amount, i) => (0, tokens_1.assetAmountInEth)(amount.toString(), (0, tokens_1.getAssetInfoByAddress)(data[i].tokenAddress).symbol).toString());
|
|
45
46
|
});
|
|
46
|
-
const fetchSparkAirdropRewards = (
|
|
47
|
+
const fetchSparkAirdropRewards = (provider_1, network_1, walletAddresses_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, walletAddresses_1, ...args_1], void 0, function* (provider, network, walletAddresses, blockNumber = 'latest') {
|
|
47
48
|
// Fetch all API data in parallel (these are external API calls, can't be batched with multicall)
|
|
48
49
|
const apiDataPromises = walletAddresses.map(address => (0, exports.fetchSpkAirdropRewards)(address));
|
|
49
50
|
const apiDataArray = yield Promise.all(apiDataPromises);
|
|
@@ -74,7 +75,7 @@ const fetchSparkAirdropRewards = (provider, network, walletAddresses) => __await
|
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
77
|
// Batch all contract calls
|
|
77
|
-
const cumulativeClaimedAmounts = yield getCumulativeClaimedSpkAirdrop(provider, network, contractCallsData);
|
|
78
|
+
const cumulativeClaimedAmounts = yield getCumulativeClaimedSpkAirdrop(provider, network, contractCallsData, blockNumber);
|
|
78
79
|
// Process results
|
|
79
80
|
const results = {};
|
|
80
81
|
let contractCallIndex = 0;
|
|
@@ -114,9 +115,9 @@ const fetchSparkAirdropRewards = (provider, network, walletAddresses) => __await
|
|
|
114
115
|
return results;
|
|
115
116
|
});
|
|
116
117
|
exports.fetchSparkAirdropRewards = fetchSparkAirdropRewards;
|
|
117
|
-
const fetchSparkRewards = (
|
|
118
|
+
const fetchSparkRewards = (provider_1, network_1, walletAddress_1, marketAddress_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, walletAddress_1, marketAddress_1, ...args_1], void 0, function* (provider, network, walletAddress, marketAddress, blockNumber = 'latest') {
|
|
118
119
|
const contract = (0, contracts_1.SparkIncentiveDataProviderContractViem)(provider, network);
|
|
119
|
-
const tokensData = yield contract.read.getUserReservesIncentivesData([marketAddress, walletAddress]);
|
|
120
|
+
const tokensData = yield contract.read.getUserReservesIncentivesData([marketAddress, walletAddress], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
120
121
|
const allTokensDataArrays = tokensData.reduce((acc, val) => {
|
|
121
122
|
acc.push(val.aTokenIncentivesUserData.userRewardsInformation);
|
|
122
123
|
acc.push(val.vTokenIncentivesUserData.userRewardsInformation);
|
|
@@ -129,7 +130,7 @@ const fetchSparkRewards = (provider, network, walletAddress, marketAddress) => _
|
|
|
129
130
|
}, []);
|
|
130
131
|
const rewardsPerAAsset = yield Promise.all(allATokens.map((token) => {
|
|
131
132
|
const sparkRewardsContract = (0, contracts_1.SparkRewardsControllerViem)(provider, network);
|
|
132
|
-
return sparkRewardsContract.read.getAllUserRewards([[token], walletAddress]);
|
|
133
|
+
return sparkRewardsContract.read.getAllUserRewards([[token], walletAddress], (0, viem_1.setViemBlockNumber)(blockNumber));
|
|
133
134
|
}));
|
|
134
135
|
// match amounts to token symbol, parse decimal amounts
|
|
135
136
|
const rewardsPerAAssetWithInfo = rewardsPerAAsset.map((rewardForAAsset, aaIndex) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Client } from 'viem';
|
|
2
|
-
import { EthAddress, NetworkNumber } from '../types';
|
|
2
|
+
import { Blockish, EthAddress, NetworkNumber } from '../types';
|
|
3
3
|
import { UniswapAirdropClaimableToken } from '../types/claiming';
|
|
4
4
|
export declare const fetchUniswapRewardsData: (walletAddress: EthAddress) => Promise<any>;
|
|
5
|
-
export declare const getUniswapRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[]) => Promise<Record<string, UniswapAirdropClaimableToken[]>>;
|
|
5
|
+
export declare const getUniswapRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[], blockNumber?: Blockish) => Promise<Record<string, UniswapAirdropClaimableToken[]>>;
|
package/cjs/claiming/uniswap.js
CHANGED
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.getUniswapRewards = exports.fetchUniswapRewardsData = void 0;
|
|
16
16
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
17
17
|
const tokens_1 = require("@defisaver/tokens");
|
|
18
|
+
const viem_1 = require("../services/viem");
|
|
18
19
|
const contracts_1 = require("../contracts");
|
|
19
20
|
const claiming_1 = require("../types/claiming");
|
|
20
21
|
const EMPTY_DATA = (walletAddress) => ({
|
|
@@ -35,13 +36,13 @@ const fetchUniswapRewardsData = (walletAddress) => __awaiter(void 0, void 0, voi
|
|
|
35
36
|
}
|
|
36
37
|
});
|
|
37
38
|
exports.fetchUniswapRewardsData = fetchUniswapRewardsData;
|
|
38
|
-
const getUniswapRewards = (
|
|
39
|
+
const getUniswapRewards = (provider_1, network_1, walletAddresses_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, walletAddresses_1, ...args_1], void 0, function* (provider, network, walletAddresses, blockNumber = 'latest') {
|
|
39
40
|
// Fetch all API data in parallel (these are external API calls, can't be batched with multicall)
|
|
40
41
|
const apiDataPromises = walletAddresses.map(address => (0, exports.fetchUniswapRewardsData)(address));
|
|
41
42
|
const apiDataArray = yield Promise.all(apiDataPromises);
|
|
42
43
|
// Batch all contract calls using multicall
|
|
43
44
|
const contract = (0, contracts_1.UniswapTokenDistributorViem)(provider, network);
|
|
44
|
-
const cumulativePromises = apiDataArray.map(data => (data.index ? contract.read.isClaimed([data.index]) : Promise.resolve(false)));
|
|
45
|
+
const cumulativePromises = apiDataArray.map(data => (data.index ? contract.read.isClaimed([data.index], (0, viem_1.setViemBlockNumber)(blockNumber)) : Promise.resolve(false)));
|
|
45
46
|
const cumulativeResults = yield Promise.all(cumulativePromises);
|
|
46
47
|
// Process results
|
|
47
48
|
const results = {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Client } from 'viem';
|
|
2
2
|
import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
|
|
3
3
|
import { CompoundV2AssetsData, CompoundV2MarketsData, CompoundV2PositionData } from '../types';
|
|
4
|
-
export declare const _getCompoundV2MarketsData: (provider: Client, network: NetworkNumber) => Promise<CompoundV2MarketsData>;
|
|
5
|
-
export declare const getCompoundV2MarketsData: (provider: EthereumProvider, network: NetworkNumber) => Promise<CompoundV2MarketsData>;
|
|
4
|
+
export declare const _getCompoundV2MarketsData: (provider: Client, network: NetworkNumber, blockNumber?: Blockish) => Promise<CompoundV2MarketsData>;
|
|
5
|
+
export declare const getCompoundV2MarketsData: (provider: EthereumProvider, network: NetworkNumber, blockNumber?: Blockish) => Promise<CompoundV2MarketsData>;
|
|
6
6
|
export declare const EMPTY_COMPOUND_DATA: {
|
|
7
7
|
usedAssets: {};
|
|
8
8
|
suppliedUsd: string;
|
|
@@ -19,6 +19,6 @@ export declare const EMPTY_COMPOUND_DATA: {
|
|
|
19
19
|
};
|
|
20
20
|
export declare const _getCompoundV2AccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, tokens?: EthAddress[]) => Promise<PositionBalances>;
|
|
21
21
|
export declare const getCompoundV2AccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
|
|
22
|
-
export declare const _getCompoundV2AccountData: (provider: Client, network: NetworkNumber, address: EthAddress, assetsData: CompoundV2AssetsData) => Promise<CompoundV2PositionData>;
|
|
23
|
-
export declare const getCompoundV2AccountData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, assetsData: CompoundV2AssetsData) => Promise<CompoundV2PositionData>;
|
|
22
|
+
export declare const _getCompoundV2AccountData: (provider: Client, network: NetworkNumber, address: EthAddress, assetsData: CompoundV2AssetsData, blockNumber?: Blockish) => Promise<CompoundV2PositionData>;
|
|
23
|
+
export declare const getCompoundV2AccountData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, assetsData: CompoundV2AssetsData, blockNumber?: Blockish) => Promise<CompoundV2PositionData>;
|
|
24
24
|
export declare const getCompoundV2FullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress) => Promise<CompoundV2PositionData>;
|