@defisaver/positions-sdk 1.0.26-dev-portfolio-15 → 1.0.26-dev-portfolio-16

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.
@@ -4,8 +4,8 @@ import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances
4
4
  export declare const aaveV3EmodeCategoriesMapping: (extractedState: any, usedAssets: AaveV3UsedAssets) => {
5
5
  [key: number]: EModeCategoryDataMapping;
6
6
  };
7
- export declare function _getAaveV3MarketData(provider: Client, network: NetworkNumber, market: AaveMarketInfo): Promise<AaveV3MarketData>;
8
- export declare function getAaveV3MarketData(provider: EthereumProvider, network: NetworkNumber, market: AaveMarketInfo): Promise<AaveV3MarketData>;
7
+ export declare function _getAaveV3MarketData(provider: Client, network: NetworkNumber, market: AaveMarketInfo, blockNumber?: 'latest' | number): Promise<AaveV3MarketData>;
8
+ export declare function getAaveV3MarketData(provider: EthereumProvider, network: NetworkNumber, market: AaveMarketInfo, blockNumber?: 'latest' | number): Promise<AaveV3MarketData>;
9
9
  export declare const EMPTY_AAVE_DATA: {
10
10
  usedAssets: {};
11
11
  suppliedUsd: string;
@@ -29,6 +29,6 @@ export declare const EMPTY_AAVE_DATA: {
29
29
  };
30
30
  export declare const _getAaveV3AccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
31
31
  export declare const getAaveV3AccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
32
- export declare const _getAaveV3AccountData: (provider: Client, network: NetworkNumber, address: EthAddress, extractedState: any) => Promise<AaveV3PositionData>;
33
- export declare const getAaveV3AccountData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, extractedState: any) => Promise<AaveV3PositionData>;
32
+ export declare const _getAaveV3AccountData: (provider: Client, network: NetworkNumber, address: EthAddress, extractedState: any, blockNumber?: "latest" | number) => Promise<AaveV3PositionData>;
33
+ export declare const getAaveV3AccountData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, extractedState: any, blockNumber?: "latest" | number) => Promise<AaveV3PositionData>;
34
34
  export declare const getAaveV3FullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, market: AaveMarketInfo) => Promise<AaveV3PositionData>;
@@ -51,8 +51,8 @@ const aaveV3EmodeCategoriesMapping = (extractedState, usedAssets) => {
51
51
  return categoriesMapping;
52
52
  };
53
53
  exports.aaveV3EmodeCategoriesMapping = aaveV3EmodeCategoriesMapping;
54
- function _getAaveV3MarketData(provider, network, market) {
55
- return __awaiter(this, void 0, void 0, function* () {
54
+ function _getAaveV3MarketData(provider_1, network_1, market_1) {
55
+ return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest') {
56
56
  const _addresses = market.assets.map(a => (0, tokens_1.getAssetInfo)((0, utils_1.ethToWeth)(a), network).address);
57
57
  const isL2 = (0, utils_1.isLayer2Network)(network);
58
58
  const loanInfoContract = (0, contracts_1.AaveV3ViewContractViem)(provider, network);
@@ -61,10 +61,10 @@ function _getAaveV3MarketData(provider, network, market) {
61
61
  const networksWithIncentives = [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Arb, common_1.NetworkNumber.Opt];
62
62
  // eslint-disable-next-line prefer-const
63
63
  let [loanInfo, eModesInfo, isBorrowAllowed, rewardInfo] = yield Promise.all([
64
- loanInfoContract.read.getFullTokensInfo([marketAddress, _addresses]),
65
- loanInfoContract.read.getAllEmodes([marketAddress]),
66
- loanInfoContract.read.isBorrowAllowed([marketAddress]), // Used on L2s check for PriceOracleSentinel (mainnet will always return true)
67
- networksWithIncentives.includes(network) ? aaveIncentivesContract.read.getReservesIncentivesData([marketAddress]) : null,
64
+ loanInfoContract.read.getFullTokensInfo([marketAddress, _addresses], (0, viem_1.setViemBlockNumber)(blockNumber)),
65
+ loanInfoContract.read.getAllEmodes([marketAddress], (0, viem_1.setViemBlockNumber)(blockNumber)),
66
+ loanInfoContract.read.isBorrowAllowed([marketAddress], (0, viem_1.setViemBlockNumber)(blockNumber)), // Used on L2s check for PriceOracleSentinel (mainnet will always return true)
67
+ networksWithIncentives.includes(network) ? aaveIncentivesContract.read.getReservesIncentivesData([marketAddress], (0, viem_1.setViemBlockNumber)(blockNumber)) : null,
68
68
  ]);
69
69
  isBorrowAllowed = (0, utils_1.isLayer2Network)(network) ? isBorrowAllowed : true;
70
70
  const eModeCategoriesData = {};
@@ -263,9 +263,9 @@ function _getAaveV3MarketData(provider, network, market) {
263
263
  return { assetsData: payload, eModeCategoriesData };
264
264
  });
265
265
  }
266
- function getAaveV3MarketData(provider, network, market) {
267
- return __awaiter(this, void 0, void 0, function* () {
268
- return _getAaveV3MarketData((0, viem_1.getViemProvider)(provider, network), network, market);
266
+ function getAaveV3MarketData(provider_1, network_1, market_1) {
267
+ return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest') {
268
+ return _getAaveV3MarketData((0, viem_1.getViemProvider)(provider, network), network, market, blockNumber);
269
269
  });
270
270
  }
271
271
  exports.EMPTY_AAVE_DATA = {
@@ -325,7 +325,7 @@ const _getAaveV3AccountBalances = (provider, network, block, addressMapping, add
325
325
  exports._getAaveV3AccountBalances = _getAaveV3AccountBalances;
326
326
  const getAaveV3AccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () { return (0, exports._getAaveV3AccountBalances)((0, viem_1.getViemProvider)(provider, network), network, block, addressMapping, address); });
327
327
  exports.getAaveV3AccountBalances = getAaveV3AccountBalances;
328
- const _getAaveV3AccountData = (provider, network, address, extractedState) => __awaiter(void 0, void 0, void 0, function* () {
328
+ const _getAaveV3AccountData = (provider_1, network_1, address_1, extractedState_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, extractedState_1, ...args_1], void 0, function* (provider, network, address, extractedState, blockNumber = 'latest') {
329
329
  const { selectedMarket: market, assetsData, } = extractedState;
330
330
  let payload = Object.assign(Object.assign({}, exports.EMPTY_AAVE_DATA), { lastUpdated: Date.now() });
331
331
  if (!address) {
@@ -337,9 +337,9 @@ const _getAaveV3AccountData = (provider, network, address, extractedState) => __
337
337
  const _addresses = market.assets.map((a) => (0, tokens_1.getAssetInfo)((0, utils_1.ethToWeth)(a), network).address);
338
338
  const middleAddressIndex = Math.floor(_addresses.length / 2); // split addresses in half to avoid gas limit by multicall
339
339
  const [eModeCategory, tokenBalances1, tokenBalances2] = yield Promise.all([
340
- lendingPoolContract.read.getUserEMode([address]),
341
- loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(0, middleAddressIndex)]),
342
- loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(middleAddressIndex, _addresses.length)]),
340
+ lendingPoolContract.read.getUserEMode([address], (0, viem_1.setViemBlockNumber)(blockNumber)),
341
+ loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(0, middleAddressIndex)], (0, viem_1.setViemBlockNumber)(blockNumber)),
342
+ loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(middleAddressIndex, _addresses.length)], (0, viem_1.setViemBlockNumber)(blockNumber)),
343
343
  ]);
344
344
  const loanInfo = [...tokenBalances1, ...tokenBalances2];
345
345
  const usedAssets = {};
@@ -398,7 +398,7 @@ const _getAaveV3AccountData = (provider, network, address, extractedState) => __
398
398
  return payload;
399
399
  });
400
400
  exports._getAaveV3AccountData = _getAaveV3AccountData;
401
- const getAaveV3AccountData = (provider, network, address, extractedState) => __awaiter(void 0, void 0, void 0, function* () { return (0, exports._getAaveV3AccountData)((0, viem_1.getViemProvider)(provider, network), network, address, extractedState); });
401
+ const getAaveV3AccountData = (provider_1, network_1, address_1, extractedState_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, extractedState_1, ...args_1], void 0, function* (provider, network, address, extractedState, blockNumber = 'latest') { return (0, exports._getAaveV3AccountData)((0, viem_1.getViemProvider)(provider, network), network, address, extractedState, blockNumber); });
402
402
  exports.getAaveV3AccountData = getAaveV3AccountData;
403
403
  const getAaveV3FullPositionData = (provider, network, address, market) => __awaiter(void 0, void 0, void 0, function* () {
404
404
  const marketData = yield getAaveV3MarketData(provider, network, market);
@@ -10,7 +10,7 @@ exports.aaveV1AssetsDefaultMarket = [
10
10
  exports.aaveV2AssetsDefaultMarket = ['USDT', 'WBTC', 'ETH', 'YFI', 'ZRX', 'UNI', 'AAVE', 'BAT', 'BUSD', 'DAI', 'ENJ', 'KNCL', 'LINK', 'MANA', 'MKR', 'REN', 'SNX', 'SUSD', 'TUSD', 'USDC', 'CRV', 'GUSD', 'BAL', 'xSUSHI', 'RENFIL', 'RAI', 'AMPL', 'USDP', 'DPI', 'FRAX', 'FEI', 'stETH', 'ENS', 'UST', 'CVX', '1INCH', 'LUSD'];
11
11
  exports.aaveV3AssetsDefaultMarketEth = [
12
12
  'ETH', 'wstETH', 'WBTC', 'USDC', 'DAI', 'LINK', 'AAVE', 'cbETH', 'USDT', 'rETH', 'LUSD', 'CRV', 'MKR', 'SNX', 'BAL', 'UNI', 'LDO', 'ENS', '1INCH', 'FRAX', 'GHO', 'RPL', 'sDAI', 'STG', 'KNC', 'FXS', 'crvUSD', 'PYUSD', 'weETH', 'osETH', 'USDe', 'ETHx', 'sUSDe', 'tBTC', 'cbBTC', 'USDS', 'rsETH', 'LBTC', 'eBTC', 'RLUSD', 'PT eUSDe May', 'PT sUSDe July', 'USDtb',
13
- 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC',
13
+ 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC', 'PT sUSDe Sep',
14
14
  ];
15
15
  exports.aaveV3AssetsDefaultMarketOpt = [
16
16
  'DAI', 'USDC.e', 'USDT', 'SUSD', 'AAVE', 'LINK', 'WBTC', 'ETH', 'OP', 'wstETH', 'LUSD', 'MAI', 'rETH', 'USDC',
@@ -45,7 +45,7 @@ const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function*
45
45
  const data = yield res.json();
46
46
  return String(data.apy);
47
47
  });
48
- exports.STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'PT eUSDe May', 'PT sUSDe July', 'PT USDe July', 'PT eUSDe Aug', 'tETH'];
48
+ exports.STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'PT eUSDe May', 'PT sUSDe July', 'PT USDe July', 'PT eUSDe Aug', 'tETH', 'PT sUSDe Sep'];
49
49
  exports.getStakingApy = (0, memoizee_1.default)((asset) => __awaiter(void 0, void 0, void 0, function* () {
50
50
  try {
51
51
  if (asset === 'stETH' || asset === 'wstETH')
@@ -83,6 +83,8 @@ exports.getStakingApy = (0, memoizee_1.default)((asset) => __awaiter(void 0, voi
83
83
  return yield getApyFromDfsApi('PT USDe July');
84
84
  if (asset === 'PT eUSDe Aug')
85
85
  return yield getApyFromDfsApi('PT eUSDe Aug');
86
+ if (asset === 'PT sUSDe Sep')
87
+ return yield getApyFromDfsApi('PT sUSDe Sep');
86
88
  if (asset === 'tETH')
87
89
  return yield getApyFromDfsApi('tETH');
88
90
  }
@@ -4,8 +4,8 @@ import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances
4
4
  export declare const aaveV3EmodeCategoriesMapping: (extractedState: any, usedAssets: AaveV3UsedAssets) => {
5
5
  [key: number]: EModeCategoryDataMapping;
6
6
  };
7
- export declare function _getAaveV3MarketData(provider: Client, network: NetworkNumber, market: AaveMarketInfo): Promise<AaveV3MarketData>;
8
- export declare function getAaveV3MarketData(provider: EthereumProvider, network: NetworkNumber, market: AaveMarketInfo): Promise<AaveV3MarketData>;
7
+ export declare function _getAaveV3MarketData(provider: Client, network: NetworkNumber, market: AaveMarketInfo, blockNumber?: 'latest' | number): Promise<AaveV3MarketData>;
8
+ export declare function getAaveV3MarketData(provider: EthereumProvider, network: NetworkNumber, market: AaveMarketInfo, blockNumber?: 'latest' | number): Promise<AaveV3MarketData>;
9
9
  export declare const EMPTY_AAVE_DATA: {
10
10
  usedAssets: {};
11
11
  suppliedUsd: string;
@@ -29,6 +29,6 @@ export declare const EMPTY_AAVE_DATA: {
29
29
  };
30
30
  export declare const _getAaveV3AccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
31
31
  export declare const getAaveV3AccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
32
- export declare const _getAaveV3AccountData: (provider: Client, network: NetworkNumber, address: EthAddress, extractedState: any) => Promise<AaveV3PositionData>;
33
- export declare const getAaveV3AccountData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, extractedState: any) => Promise<AaveV3PositionData>;
32
+ export declare const _getAaveV3AccountData: (provider: Client, network: NetworkNumber, address: EthAddress, extractedState: any, blockNumber?: "latest" | number) => Promise<AaveV3PositionData>;
33
+ export declare const getAaveV3AccountData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, extractedState: any, blockNumber?: "latest" | number) => Promise<AaveV3PositionData>;
34
34
  export declare const getAaveV3FullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, market: AaveMarketInfo) => Promise<AaveV3PositionData>;
@@ -42,8 +42,8 @@ export const aaveV3EmodeCategoriesMapping = (extractedState, usedAssets) => {
42
42
  });
43
43
  return categoriesMapping;
44
44
  };
45
- export function _getAaveV3MarketData(provider, network, market) {
46
- return __awaiter(this, void 0, void 0, function* () {
45
+ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
46
+ return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest') {
47
47
  const _addresses = market.assets.map(a => getAssetInfo(ethToWeth(a), network).address);
48
48
  const isL2 = isLayer2Network(network);
49
49
  const loanInfoContract = AaveV3ViewContractViem(provider, network);
@@ -52,10 +52,10 @@ export function _getAaveV3MarketData(provider, network, market) {
52
52
  const networksWithIncentives = [NetworkNumber.Eth, NetworkNumber.Arb, NetworkNumber.Opt];
53
53
  // eslint-disable-next-line prefer-const
54
54
  let [loanInfo, eModesInfo, isBorrowAllowed, rewardInfo] = yield Promise.all([
55
- loanInfoContract.read.getFullTokensInfo([marketAddress, _addresses]),
56
- loanInfoContract.read.getAllEmodes([marketAddress]),
57
- loanInfoContract.read.isBorrowAllowed([marketAddress]), // Used on L2s check for PriceOracleSentinel (mainnet will always return true)
58
- networksWithIncentives.includes(network) ? aaveIncentivesContract.read.getReservesIncentivesData([marketAddress]) : null,
55
+ loanInfoContract.read.getFullTokensInfo([marketAddress, _addresses], setViemBlockNumber(blockNumber)),
56
+ loanInfoContract.read.getAllEmodes([marketAddress], setViemBlockNumber(blockNumber)),
57
+ loanInfoContract.read.isBorrowAllowed([marketAddress], setViemBlockNumber(blockNumber)), // Used on L2s check for PriceOracleSentinel (mainnet will always return true)
58
+ networksWithIncentives.includes(network) ? aaveIncentivesContract.read.getReservesIncentivesData([marketAddress], setViemBlockNumber(blockNumber)) : null,
59
59
  ]);
60
60
  isBorrowAllowed = isLayer2Network(network) ? isBorrowAllowed : true;
61
61
  const eModeCategoriesData = {};
@@ -254,9 +254,9 @@ export function _getAaveV3MarketData(provider, network, market) {
254
254
  return { assetsData: payload, eModeCategoriesData };
255
255
  });
256
256
  }
257
- export function getAaveV3MarketData(provider, network, market) {
258
- return __awaiter(this, void 0, void 0, function* () {
259
- return _getAaveV3MarketData(getViemProvider(provider, network), network, market);
257
+ export function getAaveV3MarketData(provider_1, network_1, market_1) {
258
+ return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest') {
259
+ return _getAaveV3MarketData(getViemProvider(provider, network), network, market, blockNumber);
260
260
  });
261
261
  }
262
262
  export const EMPTY_AAVE_DATA = {
@@ -314,7 +314,7 @@ export const _getAaveV3AccountBalances = (provider, network, block, addressMappi
314
314
  return balances;
315
315
  });
316
316
  export const getAaveV3AccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () { return _getAaveV3AccountBalances(getViemProvider(provider, network), network, block, addressMapping, address); });
317
- export const _getAaveV3AccountData = (provider, network, address, extractedState) => __awaiter(void 0, void 0, void 0, function* () {
317
+ export const _getAaveV3AccountData = (provider_1, network_1, address_1, extractedState_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, extractedState_1, ...args_1], void 0, function* (provider, network, address, extractedState, blockNumber = 'latest') {
318
318
  const { selectedMarket: market, assetsData, } = extractedState;
319
319
  let payload = Object.assign(Object.assign({}, EMPTY_AAVE_DATA), { lastUpdated: Date.now() });
320
320
  if (!address) {
@@ -326,9 +326,9 @@ export const _getAaveV3AccountData = (provider, network, address, extractedState
326
326
  const _addresses = market.assets.map((a) => getAssetInfo(ethToWeth(a), network).address);
327
327
  const middleAddressIndex = Math.floor(_addresses.length / 2); // split addresses in half to avoid gas limit by multicall
328
328
  const [eModeCategory, tokenBalances1, tokenBalances2] = yield Promise.all([
329
- lendingPoolContract.read.getUserEMode([address]),
330
- loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(0, middleAddressIndex)]),
331
- loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(middleAddressIndex, _addresses.length)]),
329
+ lendingPoolContract.read.getUserEMode([address], setViemBlockNumber(blockNumber)),
330
+ loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(0, middleAddressIndex)], setViemBlockNumber(blockNumber)),
331
+ loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(middleAddressIndex, _addresses.length)], setViemBlockNumber(blockNumber)),
332
332
  ]);
333
333
  const loanInfo = [...tokenBalances1, ...tokenBalances2];
334
334
  const usedAssets = {};
@@ -386,7 +386,7 @@ export const _getAaveV3AccountData = (provider, network, address, extractedState
386
386
  payload.automationResubscribeRequired = false;
387
387
  return payload;
388
388
  });
389
- export const getAaveV3AccountData = (provider, network, address, extractedState) => __awaiter(void 0, void 0, void 0, function* () { return _getAaveV3AccountData(getViemProvider(provider, network), network, address, extractedState); });
389
+ export const getAaveV3AccountData = (provider_1, network_1, address_1, extractedState_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, extractedState_1, ...args_1], void 0, function* (provider, network, address, extractedState, blockNumber = 'latest') { return _getAaveV3AccountData(getViemProvider(provider, network), network, address, extractedState, blockNumber); });
390
390
  export const getAaveV3FullPositionData = (provider, network, address, market) => __awaiter(void 0, void 0, void 0, function* () {
391
391
  const marketData = yield getAaveV3MarketData(provider, network, market);
392
392
  const positionData = yield getAaveV3AccountData(provider, network, address, { assetsData: marketData.assetsData, selectedMarket: market, eModeCategoriesData: marketData.eModeCategoriesData });
@@ -7,7 +7,7 @@ export const aaveV1AssetsDefaultMarket = [
7
7
  export const aaveV2AssetsDefaultMarket = ['USDT', 'WBTC', 'ETH', 'YFI', 'ZRX', 'UNI', 'AAVE', 'BAT', 'BUSD', 'DAI', 'ENJ', 'KNCL', 'LINK', 'MANA', 'MKR', 'REN', 'SNX', 'SUSD', 'TUSD', 'USDC', 'CRV', 'GUSD', 'BAL', 'xSUSHI', 'RENFIL', 'RAI', 'AMPL', 'USDP', 'DPI', 'FRAX', 'FEI', 'stETH', 'ENS', 'UST', 'CVX', '1INCH', 'LUSD'];
8
8
  export const aaveV3AssetsDefaultMarketEth = [
9
9
  'ETH', 'wstETH', 'WBTC', 'USDC', 'DAI', 'LINK', 'AAVE', 'cbETH', 'USDT', 'rETH', 'LUSD', 'CRV', 'MKR', 'SNX', 'BAL', 'UNI', 'LDO', 'ENS', '1INCH', 'FRAX', 'GHO', 'RPL', 'sDAI', 'STG', 'KNC', 'FXS', 'crvUSD', 'PYUSD', 'weETH', 'osETH', 'USDe', 'ETHx', 'sUSDe', 'tBTC', 'cbBTC', 'USDS', 'rsETH', 'LBTC', 'eBTC', 'RLUSD', 'PT eUSDe May', 'PT sUSDe July', 'USDtb',
10
- 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC',
10
+ 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC', 'PT sUSDe Sep',
11
11
  ];
12
12
  export const aaveV3AssetsDefaultMarketOpt = [
13
13
  'DAI', 'USDC.e', 'USDT', 'SUSD', 'AAVE', 'LINK', 'WBTC', 'ETH', 'OP', 'wstETH', 'LUSD', 'MAI', 'rETH', 'USDC',
@@ -39,7 +39,7 @@ const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function*
39
39
  const data = yield res.json();
40
40
  return String(data.apy);
41
41
  });
42
- export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'PT eUSDe May', 'PT sUSDe July', 'PT USDe July', 'PT eUSDe Aug', 'tETH'];
42
+ export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'PT eUSDe May', 'PT sUSDe July', 'PT USDe July', 'PT eUSDe Aug', 'tETH', 'PT sUSDe Sep'];
43
43
  export const getStakingApy = memoize((asset) => __awaiter(void 0, void 0, void 0, function* () {
44
44
  try {
45
45
  if (asset === 'stETH' || asset === 'wstETH')
@@ -77,6 +77,8 @@ export const getStakingApy = memoize((asset) => __awaiter(void 0, void 0, void 0
77
77
  return yield getApyFromDfsApi('PT USDe July');
78
78
  if (asset === 'PT eUSDe Aug')
79
79
  return yield getApyFromDfsApi('PT eUSDe Aug');
80
+ if (asset === 'PT sUSDe Sep')
81
+ return yield getApyFromDfsApi('PT sUSDe Sep');
80
82
  if (asset === 'tETH')
81
83
  return yield getApyFromDfsApi('tETH');
82
84
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defisaver/positions-sdk",
3
- "version": "1.0.26-dev-portfolio-15",
3
+ "version": "1.0.26-dev-portfolio-16",
4
4
  "description": "",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
@@ -15,14 +15,14 @@
15
15
  "test": "mocha tests/portfolio.ts",
16
16
  "test-single": "mocha ./tests/$npm_config_name.ts",
17
17
  "test:debugger": "mocha --inspect-brk tests/*",
18
- "build-test": "npm run build && npm run test",
18
+ "test-single": "mocha ./tests/$npm_config_name.ts",
19
19
  "version-bump": "git commit -am \"Version bump to $(npm version patch | cut -c 2-)\""
20
20
  },
21
21
  "keywords": [],
22
22
  "author": "",
23
23
  "license": "ISC",
24
24
  "dependencies": {
25
- "@defisaver/tokens": "^1.6.14",
25
+ "@defisaver/tokens": "^1.6.16",
26
26
  "@types/lodash": "^4.17.15",
27
27
  "@types/memoizee": "^0.4.12",
28
28
  "decimal.js": "^10.6.0",
@@ -60,7 +60,7 @@ export const aaveV3EmodeCategoriesMapping = (extractedState: any, usedAssets: Aa
60
60
  return categoriesMapping;
61
61
  };
62
62
 
63
- export async function _getAaveV3MarketData(provider: Client, network: NetworkNumber, market: AaveMarketInfo): Promise<AaveV3MarketData> {
63
+ export async function _getAaveV3MarketData(provider: Client, network: NetworkNumber, market: AaveMarketInfo, blockNumber: 'latest' | number = 'latest'): Promise<AaveV3MarketData> {
64
64
  const _addresses = market.assets.map(a => getAssetInfo(ethToWeth(a), network).address);
65
65
 
66
66
  const isL2 = isLayer2Network(network);
@@ -72,10 +72,10 @@ export async function _getAaveV3MarketData(provider: Client, network: NetworkNum
72
72
 
73
73
  // eslint-disable-next-line prefer-const
74
74
  let [loanInfo, eModesInfo, isBorrowAllowed, rewardInfo] = await Promise.all([
75
- loanInfoContract.read.getFullTokensInfo([marketAddress, _addresses as EthAddress[]]),
76
- loanInfoContract.read.getAllEmodes([marketAddress]),
77
- loanInfoContract.read.isBorrowAllowed([marketAddress]), // Used on L2s check for PriceOracleSentinel (mainnet will always return true)
78
- networksWithIncentives.includes(network) ? aaveIncentivesContract.read.getReservesIncentivesData([marketAddress]) : null,
75
+ loanInfoContract.read.getFullTokensInfo([marketAddress, _addresses as EthAddress[]], setViemBlockNumber(blockNumber)),
76
+ loanInfoContract.read.getAllEmodes([marketAddress], setViemBlockNumber(blockNumber)),
77
+ loanInfoContract.read.isBorrowAllowed([marketAddress], setViemBlockNumber(blockNumber)), // Used on L2s check for PriceOracleSentinel (mainnet will always return true)
78
+ networksWithIncentives.includes(network) ? aaveIncentivesContract.read.getReservesIncentivesData([marketAddress], setViemBlockNumber(blockNumber)) : null,
79
79
  ]);
80
80
  isBorrowAllowed = isLayer2Network(network) ? isBorrowAllowed : true;
81
81
 
@@ -283,8 +283,8 @@ export async function _getAaveV3MarketData(provider: Client, network: NetworkNum
283
283
  return { assetsData: payload, eModeCategoriesData };
284
284
  }
285
285
 
286
- export async function getAaveV3MarketData(provider: EthereumProvider, network: NetworkNumber, market: AaveMarketInfo): Promise<AaveV3MarketData> {
287
- return _getAaveV3MarketData(getViemProvider(provider, network), network, market);
286
+ export async function getAaveV3MarketData(provider: EthereumProvider, network: NetworkNumber, market: AaveMarketInfo, blockNumber: 'latest' | number = 'latest'): Promise<AaveV3MarketData> {
287
+ return _getAaveV3MarketData(getViemProvider(provider, network), network, market, blockNumber);
288
288
  }
289
289
 
290
290
  export const EMPTY_AAVE_DATA = {
@@ -361,7 +361,7 @@ export const _getAaveV3AccountBalances = async (provider: Client, network: Netwo
361
361
 
362
362
  export const getAaveV3AccountBalances = async (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress): Promise<PositionBalances> => _getAaveV3AccountBalances(getViemProvider(provider, network), network, block, addressMapping, address);
363
363
 
364
- export const _getAaveV3AccountData = async (provider: Client, network: NetworkNumber, address: EthAddress, extractedState: any): Promise<AaveV3PositionData> => {
364
+ export const _getAaveV3AccountData = async (provider: Client, network: NetworkNumber, address: EthAddress, extractedState: any, blockNumber: 'latest' | number = 'latest'): Promise<AaveV3PositionData> => {
365
365
  const {
366
366
  selectedMarket: market, assetsData,
367
367
  } = extractedState;
@@ -381,9 +381,9 @@ export const _getAaveV3AccountData = async (provider: Client, network: NetworkNu
381
381
  const middleAddressIndex = Math.floor(_addresses.length / 2); // split addresses in half to avoid gas limit by multicall
382
382
 
383
383
  const [eModeCategory, tokenBalances1, tokenBalances2] = await Promise.all([
384
- lendingPoolContract.read.getUserEMode([address]),
385
- loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(0, middleAddressIndex) as EthAddress[]]),
386
- loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(middleAddressIndex, _addresses.length) as EthAddress[]]),
384
+ lendingPoolContract.read.getUserEMode([address], setViemBlockNumber(blockNumber)),
385
+ loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(0, middleAddressIndex) as EthAddress[]], setViemBlockNumber(blockNumber)),
386
+ loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(middleAddressIndex, _addresses.length) as EthAddress[]], setViemBlockNumber(blockNumber)),
387
387
  ]);
388
388
 
389
389
  const loanInfo = [...tokenBalances1, ...tokenBalances2];
@@ -468,7 +468,7 @@ export const _getAaveV3AccountData = async (provider: Client, network: NetworkNu
468
468
  return payload;
469
469
  };
470
470
 
471
- export const getAaveV3AccountData = async (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, extractedState: any): Promise<AaveV3PositionData> => _getAaveV3AccountData(getViemProvider(provider, network), network, address, extractedState);
471
+ export const getAaveV3AccountData = async (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, extractedState: any, blockNumber: 'latest' | number = 'latest'): Promise<AaveV3PositionData> => _getAaveV3AccountData(getViemProvider(provider, network), network, address, extractedState, blockNumber);
472
472
 
473
473
  export const getAaveV3FullPositionData = async (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, market: AaveMarketInfo): Promise<AaveV3PositionData> => {
474
474
  const marketData = await getAaveV3MarketData(provider, network, market);
@@ -10,7 +10,7 @@ export const aaveV2AssetsDefaultMarket = ['USDT', 'WBTC', 'ETH', 'YFI', 'ZRX', '
10
10
 
11
11
  export const aaveV3AssetsDefaultMarketEth = [
12
12
  'ETH', 'wstETH', 'WBTC', 'USDC', 'DAI', 'LINK', 'AAVE', 'cbETH', 'USDT', 'rETH', 'LUSD', 'CRV', 'MKR', 'SNX', 'BAL', 'UNI', 'LDO', 'ENS', '1INCH', 'FRAX', 'GHO', 'RPL', 'sDAI', 'STG', 'KNC', 'FXS', 'crvUSD', 'PYUSD', 'weETH', 'osETH', 'USDe', 'ETHx', 'sUSDe', 'tBTC', 'cbBTC', 'USDS', 'rsETH', 'LBTC', 'eBTC', 'RLUSD', 'PT eUSDe May', 'PT sUSDe July', 'USDtb',
13
- 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC',
13
+ 'eUSDe', 'PT USDe July', 'PT eUSDe Aug', 'EURC', 'FBTC', 'PT sUSDe Sep',
14
14
  ];
15
15
  export const aaveV3AssetsDefaultMarketOpt = [
16
16
  'DAI', 'USDC.e', 'USDT', 'SUSD', 'AAVE', 'LINK', 'WBTC', 'ETH', 'OP', 'wstETH', 'LUSD', 'MAI', 'rETH', 'USDC',
@@ -35,7 +35,7 @@ const getApyFromDfsApi = async (asset: string) => {
35
35
  return String(data.apy);
36
36
  };
37
37
 
38
- export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'PT eUSDe May', 'PT sUSDe July', 'PT USDe July', 'PT eUSDe Aug', 'tETH'];
38
+ export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'PT eUSDe May', 'PT sUSDe July', 'PT USDe July', 'PT eUSDe Aug', 'tETH', 'PT sUSDe Sep'];
39
39
 
40
40
  export const getStakingApy = memoize(async (asset: string) => {
41
41
  try {
@@ -57,6 +57,7 @@ export const getStakingApy = memoize(async (asset: string) => {
57
57
  if (asset === 'PT sUSDe July') return await getApyFromDfsApi('PT sUSDe July');
58
58
  if (asset === 'PT USDe July') return await getApyFromDfsApi('PT USDe July');
59
59
  if (asset === 'PT eUSDe Aug') return await getApyFromDfsApi('PT eUSDe Aug');
60
+ if (asset === 'PT sUSDe Sep') return await getApyFromDfsApi('PT sUSDe Sep');
60
61
  if (asset === 'tETH') return await getApyFromDfsApi('tETH');
61
62
  } catch (e) {
62
63
  console.error(`Failed to fetch APY for ${asset}`);