@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.
Files changed (145) hide show
  1. package/cjs/aaveV2/index.d.ts +4 -4
  2. package/cjs/aaveV2/index.js +7 -7
  3. package/cjs/aaveV3/index.d.ts +4 -3
  4. package/cjs/aaveV3/index.js +14 -10
  5. package/cjs/aaveV3/merkl.d.ts +5 -1
  6. package/cjs/aaveV3/merkl.js +8 -3
  7. package/cjs/aaveV4/index.d.ts +4 -3
  8. package/cjs/aaveV4/index.js +19 -16
  9. package/cjs/aaveV4/merkl.d.ts +10 -2
  10. package/cjs/aaveV4/merkl.js +15 -6
  11. package/cjs/claiming/aaveV3.d.ts +2 -2
  12. package/cjs/claiming/aaveV3.js +5 -4
  13. package/cjs/claiming/king.d.ts +2 -2
  14. package/cjs/claiming/king.js +3 -2
  15. package/cjs/claiming/spark.d.ts +3 -3
  16. package/cjs/claiming/spark.js +8 -7
  17. package/cjs/claiming/uniswap.d.ts +2 -2
  18. package/cjs/claiming/uniswap.js +3 -2
  19. package/cjs/compoundV2/index.d.ts +4 -4
  20. package/cjs/compoundV2/index.js +9 -9
  21. package/cjs/compoundV3/index.d.ts +5 -4
  22. package/cjs/compoundV3/index.js +17 -13
  23. package/cjs/compoundV3/merkl.d.ts +1 -1
  24. package/cjs/compoundV3/merkl.js +2 -5
  25. package/cjs/curveUsd/index.d.ts +5 -5
  26. package/cjs/curveUsd/index.js +17 -17
  27. package/cjs/fluid/index.d.ts +23 -22
  28. package/cjs/fluid/index.js +75 -72
  29. package/cjs/fluid/merkl.d.ts +5 -3
  30. package/cjs/fluid/merkl.js +11 -6
  31. package/cjs/liquity/index.d.ts +4 -4
  32. package/cjs/liquity/index.js +23 -23
  33. package/cjs/liquityV2/index.d.ts +10 -10
  34. package/cjs/liquityV2/index.js +59 -59
  35. package/cjs/llamaLend/index.d.ts +5 -5
  36. package/cjs/llamaLend/index.js +13 -13
  37. package/cjs/maker/index.d.ts +6 -6
  38. package/cjs/maker/index.js +16 -16
  39. package/cjs/morphoBlue/index.d.ts +7 -7
  40. package/cjs/morphoBlue/index.js +28 -26
  41. package/cjs/morphoBlue/merkl.d.ts +5 -3
  42. package/cjs/morphoBlue/merkl.js +6 -8
  43. package/cjs/morphoMidnight/index.d.ts +5 -5
  44. package/cjs/morphoMidnight/index.js +18 -18
  45. package/cjs/portfolio/customDeFiData.js +45 -40
  46. package/cjs/services/merkl.d.ts +36 -2
  47. package/cjs/services/merkl.js +142 -19
  48. package/cjs/services/priceService.d.ts +12 -12
  49. package/cjs/services/priceService.js +30 -29
  50. package/cjs/services/viem.d.ts +10 -2
  51. package/cjs/services/viem.js +27 -1
  52. package/cjs/spark/index.d.ts +4 -4
  53. package/cjs/spark/index.js +9 -9
  54. package/cjs/types/merkl.d.ts +18 -0
  55. package/cjs/types/portfolio.d.ts +2 -0
  56. package/cjs/umbrella/index.d.ts +2 -2
  57. package/cjs/umbrella/index.js +5 -4
  58. package/esm/aaveV2/index.d.ts +4 -4
  59. package/esm/aaveV2/index.js +8 -8
  60. package/esm/aaveV3/index.d.ts +4 -3
  61. package/esm/aaveV3/index.js +15 -11
  62. package/esm/aaveV3/merkl.d.ts +5 -1
  63. package/esm/aaveV3/merkl.js +9 -4
  64. package/esm/aaveV4/index.d.ts +4 -3
  65. package/esm/aaveV4/index.js +20 -17
  66. package/esm/aaveV4/merkl.d.ts +10 -2
  67. package/esm/aaveV4/merkl.js +16 -7
  68. package/esm/claiming/aaveV3.d.ts +2 -2
  69. package/esm/claiming/aaveV3.js +5 -4
  70. package/esm/claiming/king.d.ts +2 -2
  71. package/esm/claiming/king.js +3 -2
  72. package/esm/claiming/spark.d.ts +3 -3
  73. package/esm/claiming/spark.js +8 -7
  74. package/esm/claiming/uniswap.d.ts +2 -2
  75. package/esm/claiming/uniswap.js +3 -2
  76. package/esm/compoundV2/index.d.ts +4 -4
  77. package/esm/compoundV2/index.js +9 -9
  78. package/esm/compoundV3/index.d.ts +5 -4
  79. package/esm/compoundV3/index.js +19 -15
  80. package/esm/compoundV3/merkl.d.ts +1 -1
  81. package/esm/compoundV3/merkl.js +3 -6
  82. package/esm/curveUsd/index.d.ts +5 -5
  83. package/esm/curveUsd/index.js +17 -17
  84. package/esm/fluid/index.d.ts +23 -22
  85. package/esm/fluid/index.js +76 -73
  86. package/esm/fluid/merkl.d.ts +5 -3
  87. package/esm/fluid/merkl.js +12 -7
  88. package/esm/liquity/index.d.ts +4 -4
  89. package/esm/liquity/index.js +23 -23
  90. package/esm/liquityV2/index.d.ts +10 -10
  91. package/esm/liquityV2/index.js +60 -60
  92. package/esm/llamaLend/index.d.ts +5 -5
  93. package/esm/llamaLend/index.js +13 -13
  94. package/esm/maker/index.d.ts +6 -6
  95. package/esm/maker/index.js +16 -16
  96. package/esm/morphoBlue/index.d.ts +7 -7
  97. package/esm/morphoBlue/index.js +29 -27
  98. package/esm/morphoBlue/merkl.d.ts +5 -3
  99. package/esm/morphoBlue/merkl.js +7 -9
  100. package/esm/morphoMidnight/index.d.ts +5 -5
  101. package/esm/morphoMidnight/index.js +18 -18
  102. package/esm/portfolio/customDeFiData.js +47 -42
  103. package/esm/services/merkl.d.ts +36 -2
  104. package/esm/services/merkl.js +136 -18
  105. package/esm/services/priceService.d.ts +12 -12
  106. package/esm/services/priceService.js +31 -30
  107. package/esm/services/viem.d.ts +10 -2
  108. package/esm/services/viem.js +25 -0
  109. package/esm/spark/index.d.ts +4 -4
  110. package/esm/spark/index.js +10 -10
  111. package/esm/types/merkl.d.ts +18 -0
  112. package/esm/types/portfolio.d.ts +2 -0
  113. package/esm/umbrella/index.d.ts +2 -2
  114. package/esm/umbrella/index.js +5 -4
  115. package/package.json +1 -1
  116. package/src/aaveV2/index.ts +7 -7
  117. package/src/aaveV3/index.ts +15 -11
  118. package/src/aaveV3/merkl.ts +9 -4
  119. package/src/aaveV4/index.ts +19 -16
  120. package/src/aaveV4/merkl.ts +16 -7
  121. package/src/claiming/aaveV3.ts +5 -3
  122. package/src/claiming/king.ts +6 -3
  123. package/src/claiming/spark.ts +9 -6
  124. package/src/claiming/uniswap.ts +4 -3
  125. package/src/compoundV2/index.ts +10 -9
  126. package/src/compoundV3/index.ts +20 -14
  127. package/src/compoundV3/merkl.ts +5 -4
  128. package/src/curveUsd/index.ts +19 -17
  129. package/src/fluid/index.ts +88 -70
  130. package/src/fluid/merkl.ts +12 -7
  131. package/src/liquity/index.ts +23 -23
  132. package/src/liquityV2/index.ts +64 -56
  133. package/src/llamaLend/index.ts +15 -13
  134. package/src/maker/index.ts +19 -16
  135. package/src/morphoBlue/index.ts +23 -20
  136. package/src/morphoBlue/merkl.ts +9 -6
  137. package/src/morphoMidnight/index.ts +13 -13
  138. package/src/portfolio/customDeFiData.ts +48 -41
  139. package/src/services/merkl.ts +152 -19
  140. package/src/services/priceService.ts +33 -30
  141. package/src/services/viem.ts +16 -0
  142. package/src/spark/index.ts +11 -8
  143. package/src/types/merkl.ts +20 -0
  144. package/src/types/portfolio.ts +2 -0
  145. package/src/umbrella/index.ts +6 -5
@@ -18,10 +18,10 @@ import { compoundV2CollateralAssets } from '../markets';
18
18
  import { getCompoundV2AggregatedData } from '../helpers/compoundHelpers';
19
19
  import { getViemProvider, setViemBlockNumber } from '../services/viem';
20
20
  const compAddress = '0xc00e94cb662c3520282e6f5717214004a7f26888';
21
- export const _getCompoundV2MarketsData = (provider, network) => __awaiter(void 0, void 0, void 0, function* () {
21
+ export const _getCompoundV2MarketsData = (provider_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, ...args_1], void 0, function* (provider, network, blockNumber = 'latest') {
22
22
  const cAddresses = compoundV2CollateralAssets.map(a => a.address);
23
23
  const loanInfoContract = CompoundLoanInfoContractViem(provider, network);
24
- const loanInfo = yield loanInfoContract.read.getFullTokensInfo([cAddresses]);
24
+ const loanInfo = yield loanInfoContract.read.getFullTokensInfo([cAddresses], setViemBlockNumber(blockNumber));
25
25
  const compPrice = loanInfo.find(m => compareAddresses(m.underlyingTokenAddress, compAddress)).price.toString();
26
26
  const assetsData = loanInfo
27
27
  .map((market, i) => {
@@ -78,7 +78,7 @@ export const _getCompoundV2MarketsData = (provider, network) => __awaiter(void 0
78
78
  .forEach((market, i) => { payload[market.symbol] = Object.assign(Object.assign({}, market), { sortIndex: i }); });
79
79
  return { assetsData: payload };
80
80
  });
81
- export const getCompoundV2MarketsData = (provider, network) => __awaiter(void 0, void 0, void 0, function* () { return _getCompoundV2MarketsData(getViemProvider(provider, network), network); });
81
+ export const getCompoundV2MarketsData = (provider_1, network_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, ...args_1], void 0, function* (provider, network, blockNumber = 'latest') { return _getCompoundV2MarketsData(getViemProvider(provider, network), network, blockNumber); });
82
82
  export const EMPTY_COMPOUND_DATA = {
83
83
  usedAssets: {},
84
84
  suppliedUsd: '0',
@@ -93,9 +93,9 @@ export const EMPTY_COMPOUND_DATA = {
93
93
  borrowStableSupplyUnstable: false,
94
94
  exposure: 'N/A',
95
95
  };
96
- const getCollateralAssetsAddresses = (provider, network, account) => __awaiter(void 0, void 0, void 0, function* () {
96
+ const getCollateralAssetsAddresses = (provider_1, network_1, account_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, account_1, ...args_1], void 0, function* (provider, network, account, blockNumber = 'latest') {
97
97
  const contract = ComptrollerContractViem(provider, network);
98
- return contract.read.getAssetsIn([account]);
98
+ return contract.read.getAssetsIn([account], setViemBlockNumber(blockNumber));
99
99
  });
100
100
  const getAllMarketAddresses = (provider, network, block) => __awaiter(void 0, void 0, void 0, function* () {
101
101
  const contract = ComptrollerContractViem(provider, network);
@@ -130,14 +130,14 @@ export const _getCompoundV2AccountBalances = (provider, network, block, addressM
130
130
  return balances;
131
131
  });
132
132
  export const getCompoundV2AccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () { return _getCompoundV2AccountBalances(getViemProvider(provider, network), network, block, addressMapping, address); });
133
- export const _getCompoundV2AccountData = (provider, network, address, assetsData) => __awaiter(void 0, void 0, void 0, function* () {
133
+ export const _getCompoundV2AccountData = (provider_1, network_1, address_1, assetsData_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, assetsData_1, ...args_1], void 0, function* (provider, network, address, assetsData, blockNumber = 'latest') {
134
134
  if (!address)
135
135
  throw new Error('No address provided');
136
136
  let payload = Object.assign(Object.assign({}, EMPTY_COMPOUND_DATA), { lastUpdated: Date.now() });
137
137
  const loanInfoContract = CompoundLoanInfoContractViem(provider, network);
138
138
  const [loanInfo, collateralAssetsAddresses] = yield Promise.all([
139
- loanInfoContract.read.getTokenBalances([address, compoundV2CollateralAssets.map(a => a.address)]),
140
- getCollateralAssetsAddresses(provider, network, address),
139
+ loanInfoContract.read.getTokenBalances([address, compoundV2CollateralAssets.map(a => a.address)], setViemBlockNumber(blockNumber)),
140
+ getCollateralAssetsAddresses(provider, network, address, blockNumber),
141
141
  ]);
142
142
  const usedAssets = {};
143
143
  loanInfo[0].forEach((weiAmount, i) => {
@@ -168,7 +168,7 @@ export const _getCompoundV2AccountData = (provider, network, address, assetsData
168
168
  }));
169
169
  return payload;
170
170
  });
171
- export const getCompoundV2AccountData = (provider, network, address, assetsData) => __awaiter(void 0, void 0, void 0, function* () { return _getCompoundV2AccountData(getViemProvider(provider, network), network, address, assetsData); });
171
+ export const getCompoundV2AccountData = (provider_1, network_1, address_1, assetsData_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, assetsData_1, ...args_1], void 0, function* (provider, network, address, assetsData, blockNumber = 'latest') { return _getCompoundV2AccountData(getViemProvider(provider, network), network, address, assetsData, blockNumber); });
172
172
  export const getCompoundV2FullPositionData = (provider, network, address) => __awaiter(void 0, void 0, void 0, function* () {
173
173
  const marketData = yield getCompoundV2MarketsData(provider, network);
174
174
  const positionData = yield getCompoundV2AccountData(provider, network, address, marketData.assetsData);
@@ -2,8 +2,9 @@ import { Client } from 'viem';
2
2
  import { CompoundMarketData, CompoundV3AssetsData, CompoundV3MarketsData, CompoundV3PositionData } from '../types';
3
3
  import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
4
4
  export { getCompoundV3MerklOpportunities, attachCompoundV3MerklIncentives } from './merkl';
5
- export declare const _getCompoundV3MarketsData: (provider: Client, network: NetworkNumber, selectedMarket: CompoundMarketData, defaultProvider: Client) => Promise<CompoundV3MarketsData>;
6
- export declare const getCompoundV3MarketsData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: CompoundMarketData, defaultProvider: EthereumProvider) => Promise<CompoundV3MarketsData>;
5
+ /** `blockTimestamp` (unix seconds) is the historical block's timestamp when already known; otherwise it is read from the block. */
6
+ export declare const _getCompoundV3MarketsData: (provider: Client, network: NetworkNumber, selectedMarket: CompoundMarketData, defaultProvider: Client, blockNumber?: Blockish, blockTimestamp?: number) => Promise<CompoundV3MarketsData>;
7
+ export declare const getCompoundV3MarketsData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: CompoundMarketData, defaultProvider: EthereumProvider, blockNumber?: Blockish, blockTimestamp?: number) => Promise<CompoundV3MarketsData>;
7
8
  export declare const EMPTY_COMPOUND_V3_DATA: {
8
9
  usedAssets: {};
9
10
  suppliedUsd: string;
@@ -37,9 +38,9 @@ export declare const getCompoundV3AccountBalances: (provider: EthereumProvider,
37
38
  export declare const _getCompoundV3AccountData: (provider: Client, network: NetworkNumber, address: EthAddress, proxyAddress: EthAddress, extractedState: ({
38
39
  selectedMarket: CompoundMarketData;
39
40
  assetsData: CompoundV3AssetsData;
40
- })) => Promise<CompoundV3PositionData>;
41
+ }), blockNumber?: Blockish) => Promise<CompoundV3PositionData>;
41
42
  export declare const getCompoundV3AccountData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, proxyAddress: EthAddress, extractedState: ({
42
43
  selectedMarket: CompoundMarketData;
43
44
  assetsData: CompoundV3AssetsData;
44
- })) => Promise<CompoundV3PositionData>;
45
+ }), blockNumber?: Blockish) => Promise<CompoundV3PositionData>;
45
46
  export declare const getCompoundV3FullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, proxyAddress: EthAddress, selectedMarket: CompoundMarketData, defaultProvider: EthereumProvider) => Promise<CompoundV3PositionData>;
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import Dec from 'decimal.js';
11
11
  import { assetAmountInEth, getAssetInfo, getAssetInfoByAddress, } from '@defisaver/tokens';
12
12
  import { CompV3ViewContractViem } from '../contracts';
13
- import { IncentiveKind, } from '../types/common';
13
+ import { IncentiveKind, NetworkNumber, } from '../types/common';
14
14
  import { getStakingApy, STAKING_ASSETS, } from '../staking';
15
15
  import { ethToWeth, wethToEth } from '../services/utils';
16
16
  import { ZERO_ADDRESS } from '../constants';
@@ -18,29 +18,33 @@ import { calculateBorrowingAssetLimit } from '../moneymarket';
18
18
  import { formatBaseData, formatMarketData, getCompoundV3AggregatedData, getIncentiveApys, } from '../helpers/compoundHelpers';
19
19
  import { CompoundMarkets } from '../markets/compound';
20
20
  import { getEthPrice, getCompPrice, getUSDCPrice, getWstETHPrice, } from '../services/priceService';
21
- import { getViemProvider, setViemBlockNumber } from '../services/viem';
21
+ import { getBlockTimestamp, getViemProvider, setViemBlockNumber } from '../services/viem';
22
22
  import { attachCompoundV3MerklIncentives, getCompoundV3MerklOpportunities } from './merkl';
23
23
  export { getCompoundV3MerklOpportunities, attachCompoundV3MerklIncentives } from './merkl';
24
24
  const getSupportedAssetsAddressesForMarket = (selectedMarket, network) => selectedMarket.collAssets.map(asset => getAssetInfo(ethToWeth(asset), network)).map(addr => addr.address.toLowerCase());
25
+ // Every branch takes (client, block) so the caller can pin the price read to the market block.
25
26
  const getBaseAssetPriceFunction = (asset) => {
26
27
  switch (asset) {
27
28
  case 'wstETH':
28
- return getWstETHPrice;
29
+ return (client, block) => getWstETHPrice(client, NetworkNumber.Eth, block);
29
30
  case 'ETH':
30
31
  return getEthPrice;
31
32
  default:
32
33
  return getUSDCPrice;
33
34
  }
34
35
  };
35
- export const _getCompoundV3MarketsData = (provider, network, selectedMarket, defaultProvider) => __awaiter(void 0, void 0, void 0, function* () {
36
+ /** `blockTimestamp` (unix seconds) is the historical block's timestamp when already known; otherwise it is read from the block. */
37
+ export const _getCompoundV3MarketsData = (provider_1, network_1, selectedMarket_1, defaultProvider_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, selectedMarket_1, defaultProvider_1, ...args_1], void 0, function* (provider, network, selectedMarket, defaultProvider, blockNumber = 'latest', blockTimestamp) {
36
38
  const contract = CompV3ViewContractViem(provider, network);
37
39
  const [baseAssetPrice, compPrice, baseTokenInfo, collInfos, govInfo, merklOpportunities] = yield Promise.all([
38
- getBaseAssetPriceFunction(selectedMarket.baseAsset)(defaultProvider),
39
- getCompPrice(defaultProvider),
40
- contract.read.getFullBaseTokenInfo([selectedMarket.baseMarketAddress]),
41
- contract.read.getFullCollInfos([selectedMarket.baseMarketAddress]),
42
- contract.read.getGovernanceInfoFull([selectedMarket.baseMarketAddress]),
43
- getCompoundV3MerklOpportunities(),
40
+ getBaseAssetPriceFunction(selectedMarket.baseAsset)(defaultProvider, blockNumber),
41
+ getCompPrice(defaultProvider, blockNumber),
42
+ contract.read.getFullBaseTokenInfo([selectedMarket.baseMarketAddress], setViemBlockNumber(blockNumber)),
43
+ contract.read.getFullCollInfos([selectedMarket.baseMarketAddress], setViemBlockNumber(blockNumber)),
44
+ contract.read.getGovernanceInfoFull([selectedMarket.baseMarketAddress], setViemBlockNumber(blockNumber)),
45
+ // Merkl rewards are keyed by time: a historical block resolves to its timestamp first (one RPC
46
+ // call unless given, none for 'latest') so the rewards in force at that moment are attached.
47
+ getBlockTimestamp(provider, blockNumber, blockTimestamp).then((asOfTimestamp) => getCompoundV3MerklOpportunities(asOfTimestamp, network)),
44
48
  ]);
45
49
  const { isSupplyPaused, isWithdrawPaused } = govInfo;
46
50
  const supportedAssetsAddresses = getSupportedAssetsAddressesForMarket(selectedMarket, network);
@@ -75,7 +79,7 @@ export const _getCompoundV3MarketsData = (provider, network, selectedMarket, def
75
79
  assetsData: payload, isMarketBorrowPaused: isWithdrawPaused, isMarketSupplyPaused: isSupplyPaused, isMarketWithdrawPaused: isWithdrawPaused,
76
80
  };
77
81
  });
78
- export const getCompoundV3MarketsData = (provider, network, selectedMarket, defaultProvider) => __awaiter(void 0, void 0, void 0, function* () { return _getCompoundV3MarketsData(getViemProvider(provider, network), network, selectedMarket, getViemProvider(defaultProvider, network)); });
82
+ export const getCompoundV3MarketsData = (provider_1, network_1, selectedMarket_1, defaultProvider_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, selectedMarket_1, defaultProvider_1, ...args_1], void 0, function* (provider, network, selectedMarket, defaultProvider, blockNumber = 'latest', blockTimestamp) { return _getCompoundV3MarketsData(getViemProvider(provider, network), network, selectedMarket, getViemProvider(defaultProvider, network), blockNumber, blockTimestamp); });
79
83
  export const EMPTY_COMPOUND_V3_DATA = {
80
84
  usedAssets: {},
81
85
  suppliedUsd: '0',
@@ -135,15 +139,15 @@ export const _getCompoundV3AccountBalances = (provider, network, block, addressM
135
139
  return balances;
136
140
  });
137
141
  export const getCompoundV3AccountBalances = (provider, network, block, addressMapping, address, marketAddress) => __awaiter(void 0, void 0, void 0, function* () { return _getCompoundV3AccountBalances(getViemProvider(provider, network), network, block, addressMapping, address, marketAddress); });
138
- export const _getCompoundV3AccountData = (provider, network, address, proxyAddress, extractedState) => __awaiter(void 0, void 0, void 0, function* () {
142
+ export const _getCompoundV3AccountData = (provider_1, network_1, address_1, proxyAddress_1, extractedState_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, proxyAddress_1, extractedState_1, ...args_1], void 0, function* (provider, network, address, proxyAddress, extractedState, blockNumber = 'latest') {
139
143
  if (!address)
140
144
  throw new Error('No address provided');
141
145
  const { selectedMarket, assetsData, } = extractedState;
142
146
  let payload = Object.assign(Object.assign({}, EMPTY_COMPOUND_V3_DATA), { lastUpdated: Date.now() });
143
147
  const contract = CompV3ViewContractViem(provider, network);
144
148
  const [loanData, isAllowed] = yield Promise.all([
145
- contract.read.getLoanData([selectedMarket.baseMarketAddress, address]),
146
- contract.read.isAllowed([selectedMarket.baseMarketAddress, address, (proxyAddress || ZERO_ADDRESS)]),
149
+ contract.read.getLoanData([selectedMarket.baseMarketAddress, address], setViemBlockNumber(blockNumber)),
150
+ contract.read.isAllowed([selectedMarket.baseMarketAddress, address, (proxyAddress || ZERO_ADDRESS)], setViemBlockNumber(blockNumber)),
147
151
  ]);
148
152
  const usedAssets = {};
149
153
  const baseAssetInfo = getAssetInfo(selectedMarket.baseAsset);
@@ -188,7 +192,7 @@ export const _getCompoundV3AccountData = (provider, network, address, proxyAddre
188
192
  });
189
193
  return payload;
190
194
  });
191
- export const getCompoundV3AccountData = (provider, network, address, proxyAddress, extractedState) => __awaiter(void 0, void 0, void 0, function* () { return _getCompoundV3AccountData(getViemProvider(provider, network), network, address, proxyAddress, extractedState); });
195
+ export const getCompoundV3AccountData = (provider_1, network_1, address_1, proxyAddress_1, extractedState_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, proxyAddress_1, extractedState_1, ...args_1], void 0, function* (provider, network, address, proxyAddress, extractedState, blockNumber = 'latest') { return _getCompoundV3AccountData(getViemProvider(provider, network), network, address, proxyAddress, extractedState, blockNumber); });
192
196
  export const getCompoundV3FullPositionData = (provider, network, address, proxyAddress, selectedMarket, defaultProvider) => __awaiter(void 0, void 0, void 0, function* () {
193
197
  const marketData = yield getCompoundV3MarketsData(provider, network, selectedMarket, defaultProvider);
194
198
  const positionData = yield getCompoundV3AccountData(provider, network, address, proxyAddress, { selectedMarket, assetsData: marketData.assetsData });
@@ -7,7 +7,7 @@ import { CompoundV3AssetData, MerklOpportunity, NetworkNumber } from '../types';
7
7
  * be gated and sized by a curated check in EligibilityMapping; unknown ids apply
8
8
  * unconditionally, mirroring Aave V3.
9
9
  */
10
- export declare const getCompoundV3MerklOpportunities: () => Promise<MerklOpportunity[]>;
10
+ export declare const getCompoundV3MerklOpportunities: (asOfTimestamp?: number, chainId?: NetworkNumber) => Promise<MerklOpportunity[]>;
11
11
  /**
12
12
  * Appends the comet's Merkl campaigns to its assets' incentive arrays (mutating them, like the
13
13
  * staking incentives are attached). BORROW campaigns land on the base asset — the only borrowable
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { getAssetInfoByAddress } from '@defisaver/tokens';
11
11
  import { aprToApy } from '../moneymarket';
12
- import { fetchAllMerklOpportunities } from '../services/merkl';
12
+ import { fetchMerklOpportunities } from '../services/merkl';
13
13
  import { compareAddresses, wethToEth } from '../services/utils';
14
14
  import { IncentiveKind, OpportunityAction, OpportunityStatus, } from '../types';
15
15
  /**
@@ -20,12 +20,9 @@ import { IncentiveKind, OpportunityAction, OpportunityStatus, } from '../types';
20
20
  * be gated and sized by a curated check in EligibilityMapping; unknown ids apply
21
21
  * unconditionally, mirroring Aave V3.
22
22
  */
23
- export const getCompoundV3MerklOpportunities = () => __awaiter(void 0, void 0, void 0, function* () {
23
+ export const getCompoundV3MerklOpportunities = (asOfTimestamp, chainId) => __awaiter(void 0, void 0, void 0, function* () {
24
24
  try {
25
- return yield fetchAllMerklOpportunities({
26
- mainProtocolId: 'compound-v3',
27
- status: OpportunityStatus.LIVE,
28
- });
25
+ return yield fetchMerklOpportunities(Object.assign({ mainProtocolId: 'compound-v3', status: OpportunityStatus.LIVE }, (chainId ? { chainId: chainId.toString() } : {})), asOfTimestamp);
29
26
  }
30
27
  catch (e) {
31
28
  console.error('Failed to fetch Compound V3 Merkl campaigns', e);
@@ -1,13 +1,13 @@
1
1
  import { Client } from 'viem';
2
2
  import { CrvUSDGlobalMarketData, CrvUSDMarketData, CrvUSDUserData } from '../types';
3
3
  import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
4
- export declare const _getCurveUsdGlobalData: (provider: Client, network: NetworkNumber, selectedMarket: CrvUSDMarketData) => Promise<CrvUSDGlobalMarketData>;
5
- export declare const getCurveUsdGlobalData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: CrvUSDMarketData) => Promise<CrvUSDGlobalMarketData>;
4
+ export declare const _getCurveUsdGlobalData: (provider: Client, network: NetworkNumber, selectedMarket: CrvUSDMarketData, blockNumber?: Blockish) => Promise<CrvUSDGlobalMarketData>;
5
+ export declare const getCurveUsdGlobalData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: CrvUSDMarketData, blockNumber?: Blockish) => Promise<CrvUSDGlobalMarketData>;
6
6
  export declare const _getCrvUsdAccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress, includeDeposited?: boolean) => Promise<PositionBalances>;
7
7
  export declare const getCrvUsdAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
8
8
  /**
9
9
  * @param borrowRate market borrow APY in % (`CrvUSDGlobalMarketData.borrowRate`); when omitted it is read from the view contract
10
10
  */
11
- export declare const _getCurveUsdUserData: (provider: Client, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string, borrowRate?: string) => Promise<CrvUSDUserData>;
12
- export declare const getCurveUsdUserData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string, borrowRate?: string) => Promise<CrvUSDUserData>;
13
- export declare const getCurveUsdFullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData) => Promise<CrvUSDUserData>;
11
+ export declare const _getCurveUsdUserData: (provider: Client, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string, borrowRate?: string, blockNumber?: Blockish) => Promise<CrvUSDUserData>;
12
+ export declare const getCurveUsdUserData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string, borrowRate?: string, blockNumber?: Blockish) => Promise<CrvUSDUserData>;
13
+ export declare const getCurveUsdFullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, blockNumber?: Blockish) => Promise<CrvUSDUserData>;
@@ -22,7 +22,7 @@ const ammRateToBorrowApy = (rateWei) => {
22
22
  const exponent = new Dec(assetAmountInEth(rateWei)).mul(365).mul(86400);
23
23
  return new Dec(new Dec(2.718281828459).pow(exponent).minus(1)).mul(100).toString();
24
24
  };
25
- const getAndFormatBands = (provider, network, selectedMarket, _minBand, _maxBand) => __awaiter(void 0, void 0, void 0, function* () {
25
+ const getAndFormatBands = (provider_1, network_1, selectedMarket_1, _minBand_1, _maxBand_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, selectedMarket_1, _minBand_1, _maxBand_1, ...args_1], void 0, function* (provider, network, selectedMarket, _minBand, _maxBand, blockNumber = 'latest') {
26
26
  const contract = CrvUSDViewContractViem(provider, network);
27
27
  const minBand = parseInt(_minBand, 10);
28
28
  const maxBand = parseInt(_maxBand, 10);
@@ -46,7 +46,7 @@ const getAndFormatBands = (provider, network, selectedMarket, _minBand, _maxBand
46
46
  else {
47
47
  start = pivots[index - 1] + 1;
48
48
  }
49
- const pivotedBandsData = yield contract.read.getBandsData([selectedMarket.controllerAddress, BigInt(start), BigInt(pivot)]);
49
+ const pivotedBandsData = yield contract.read.getBandsData([selectedMarket.controllerAddress, BigInt(start), BigInt(pivot)], setViemBlockNumber(blockNumber));
50
50
  return pivotedBandsData;
51
51
  })))).flat();
52
52
  return bandsData.map((band) => ({
@@ -57,23 +57,23 @@ const getAndFormatBands = (provider, network, selectedMarket, _minBand, _maxBand
57
57
  highPrice: assetAmountInEth(band.highPrice.toString()),
58
58
  }));
59
59
  });
60
- export const _getCurveUsdGlobalData = (provider, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
60
+ export const _getCurveUsdGlobalData = (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') {
61
61
  const contract = CrvUSDViewContractViem(provider, network);
62
62
  const factoryContract = CrvUSDFactoryContractViem(provider, network);
63
63
  const cntrollerContract = createViemContractFromConfigFunc('crvUSDwstETHController', selectedMarket.controllerAddress)(provider, network);
64
64
  const debtAsset = selectedMarket.baseAsset;
65
65
  const [debtCeiling, _, data, loanDiscountWei] = yield Promise.all([
66
- factoryContract.read.debt_ceiling([selectedMarket.controllerAddress]),
67
- factoryContract.read.total_debt(),
68
- contract.read.globalData([selectedMarket.controllerAddress]),
69
- cntrollerContract.read.loan_discount(),
66
+ factoryContract.read.debt_ceiling([selectedMarket.controllerAddress], setViemBlockNumber(blockNumber)),
67
+ factoryContract.read.total_debt(setViemBlockNumber(blockNumber)),
68
+ contract.read.globalData([selectedMarket.controllerAddress], setViemBlockNumber(blockNumber)),
69
+ cntrollerContract.read.loan_discount(setViemBlockNumber(blockNumber)),
70
70
  ]);
71
71
  // all prices are in 18 decimals
72
72
  const totalDebt = assetAmountInEth(data.totalDebt.toString(), debtAsset);
73
73
  const ammPrice = assetAmountInEth(data.ammPrice.toString(), debtAsset);
74
74
  const borrowRate = ammRateToBorrowApy(data.ammRate.toString());
75
75
  const futureBorrowRate = ammRateToBorrowApy(data.monetaryPolicyRate.toString());
76
- const bandsData = yield getAndFormatBands(provider, network, selectedMarket, data.minBand.toString(), data.maxBand.toString());
76
+ const bandsData = yield getAndFormatBands(provider, network, selectedMarket, data.minBand.toString(), data.maxBand.toString(), blockNumber);
77
77
  const leftToBorrow = new Dec(debtCeiling.toString()).minus(totalDebt).toString();
78
78
  const loanDiscount = assetAmountInEth(loanDiscountWei.toString(), debtAsset);
79
79
  return Object.assign(Object.assign({}, data), { decimals: data.decimals.toString(), activeBand: data.activeBand.toString(), monetaryPolicyRate: data.monetaryPolicyRate.toString(), ammRate: data.ammRate.toString(), minBand: data.minBand.toString(), maxBand: data.maxBand.toString(), debtCeiling: debtCeiling.toString(), totalDebt,
@@ -81,7 +81,7 @@ export const _getCurveUsdGlobalData = (provider, network, selectedMarket) => __a
81
81
  futureBorrowRate, bands: bandsData, leftToBorrow,
82
82
  loanDiscount });
83
83
  });
84
- export const getCurveUsdGlobalData = (provider, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () { return _getCurveUsdGlobalData(getViemProvider(provider, network), network, selectedMarket); });
84
+ export const getCurveUsdGlobalData = (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 _getCurveUsdGlobalData(getViemProvider(provider, network), network, selectedMarket, blockNumber); });
85
85
  const getStatusForUser = (bandRange, activeBand, crvUSDSupplied, collSupplied, healthPercent) => {
86
86
  // if bands are equal, that can only be [0,0] which means user doesn't have loan (min number of bands is 4)
87
87
  if (new Dec(bandRange[0]).eq(bandRange[1]))
@@ -129,16 +129,16 @@ export const getCrvUsdAccountBalances = (provider, network, block, addressMappin
129
129
  /**
130
130
  * @param borrowRate market borrow APY in % (`CrvUSDGlobalMarketData.borrowRate`); when omitted it is read from the view contract
131
131
  */
132
- export const _getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand, borrowRate) => __awaiter(void 0, void 0, void 0, function* () {
132
+ export const _getCurveUsdUserData = (provider_1, network_1, address_1, selectedMarket_1, activeBand_1, borrowRate_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, selectedMarket_1, activeBand_1, borrowRate_1, ...args_1], void 0, function* (provider, network, address, selectedMarket, activeBand, borrowRate, blockNumber = 'latest') {
133
133
  const contract = CrvUSDViewContractViem(provider, network);
134
134
  const collAsset = selectedMarket.collAsset;
135
135
  const debtAsset = selectedMarket.baseAsset;
136
136
  const [data, collStakingApy, marketBorrowRate] = yield Promise.all([
137
- contract.read.userData([selectedMarket.controllerAddress, address]),
137
+ contract.read.userData([selectedMarket.controllerAddress, address], setViemBlockNumber(blockNumber)),
138
138
  STAKING_ASSETS.includes(collAsset) ? getStakingApy(collAsset) : Promise.resolve('0'),
139
139
  borrowRate !== undefined
140
140
  ? Promise.resolve(borrowRate)
141
- : contract.read.globalData([selectedMarket.controllerAddress]).then((globalData) => ammRateToBorrowApy(globalData.ammRate.toString())),
141
+ : contract.read.globalData([selectedMarket.controllerAddress], setViemBlockNumber(blockNumber)).then((globalData) => ammRateToBorrowApy(globalData.ammRate.toString())),
142
142
  ]);
143
143
  const health = assetAmountInEth(data.health.toString());
144
144
  const healthPercent = new Dec(health).mul(100).toString();
@@ -175,7 +175,7 @@ export const _getCurveUsdUserData = (provider, network, address, selectedMarket,
175
175
  } : {};
176
176
  const priceHigh = assetAmountInEth(data.priceHigh.toString());
177
177
  const priceLow = assetAmountInEth(data.priceLow.toString());
178
- const _userBands = data.loanExists ? (yield getAndFormatBands(provider, network, selectedMarket, data.bandRange[0].toString(), data.bandRange[1].toString())) : [];
178
+ const _userBands = data.loanExists ? (yield getAndFormatBands(provider, network, selectedMarket, data.bandRange[0].toString(), data.bandRange[1].toString(), blockNumber)) : [];
179
179
  const status = data.loanExists ? getStatusForUser(data.bandRange.map(b => b.toString()), activeBand, crvUSDSupplied, collSupplied, healthPercent) : CrvUSDStatus.Nonexistant;
180
180
  const userBands = _userBands.map((band, index) => (Object.assign(Object.assign({}, band), { userDebtAmount: assetAmountInEth(data.usersBands[0][index].toString(), debtAsset), userCollAmount: assetAmountInEth(data.usersBands[1][index].toString(), collAsset) }))).sort((a, b) => parseInt(b.id, 10) - parseInt(a.id, 10));
181
181
  return Object.assign(Object.assign(Object.assign(Object.assign({}, data), { collRatio, collateralPrice: collPrice, debtAmount: assetAmountInEth(data.debtAmount.toString(), debtAsset), health,
@@ -192,9 +192,9 @@ export const _getCurveUsdUserData = (provider, network, address, selectedMarket,
192
192
  collStakingApy,
193
193
  })), { userBands });
194
194
  });
195
- export const getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand, borrowRate) => __awaiter(void 0, void 0, void 0, function* () { return _getCurveUsdUserData(getViemProvider(provider, network), network, address, selectedMarket, activeBand, borrowRate); });
196
- export const getCurveUsdFullPositionData = (provider, network, address, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
197
- const marketData = yield getCurveUsdGlobalData(provider, network, selectedMarket);
198
- const positionData = yield getCurveUsdUserData(provider, network, address, selectedMarket, marketData.activeBand, marketData.borrowRate);
195
+ export const getCurveUsdUserData = (provider_1, network_1, address_1, selectedMarket_1, activeBand_1, borrowRate_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, selectedMarket_1, activeBand_1, borrowRate_1, ...args_1], void 0, function* (provider, network, address, selectedMarket, activeBand, borrowRate, blockNumber = 'latest') { return _getCurveUsdUserData(getViemProvider(provider, network), network, address, selectedMarket, activeBand, borrowRate, blockNumber); });
196
+ export const getCurveUsdFullPositionData = (provider_1, network_1, address_1, selectedMarket_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, selectedMarket_1, ...args_1], void 0, function* (provider, network, address, selectedMarket, blockNumber = 'latest') {
197
+ const marketData = yield getCurveUsdGlobalData(provider, network, selectedMarket, blockNumber);
198
+ const positionData = yield getCurveUsdUserData(provider, network, address, selectedMarket, marketData.activeBand, marketData.borrowRate, blockNumber);
199
199
  return positionData;
200
200
  });
@@ -1,6 +1,6 @@
1
1
  import { Client, PublicClient } from 'viem';
2
2
  import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
3
- import { FluidAssetsData, FluidMarketData, FluidMarketInfo, FluidUsedAssets, FluidVaultData, InnerFluidMarketData } from '../types';
3
+ import { FluidAssetsData, FluidMarketData, FluidMarketInfo, FluidUsedAssets, FluidVaultData, InnerFluidMarketData, Blockish } from '../types';
4
4
  export { FluidMerklOpportunityType, buildFluidMerklRewardMap, getFluidMerklCampaigns, attachFluidMerklIncentives, } from './merkl';
5
5
  export declare const EMPTY_USED_ASSET: {
6
6
  isSupplied: boolean;
@@ -29,29 +29,29 @@ export declare const EMPTY_FLUID_DATA: {
29
29
  automationResubscribeRequired: boolean;
30
30
  lastUpdated: number;
31
31
  };
32
- export declare const _getFluidMarketData: (provider: PublicClient, network: NetworkNumber, market: FluidMarketInfo) => Promise<FluidMarketData | undefined>;
33
- export declare const getFluidMarketData: (provider: EthereumProvider, network: NetworkNumber, market: FluidMarketInfo) => Promise<FluidMarketData | undefined>;
34
- export declare const _getFluidVaultIdsForUser: (provider: Client, network: NetworkNumber, user: EthAddress) => Promise<string[]>;
35
- export declare const getFluidVaultIdsForUser: (provider: EthereumProvider, network: NetworkNumber, user: EthAddress) => Promise<string[]>;
32
+ export declare const _getFluidMarketData: (provider: PublicClient, network: NetworkNumber, market: FluidMarketInfo, blockNumber?: Blockish) => Promise<FluidMarketData | undefined>;
33
+ export declare const getFluidMarketData: (provider: EthereumProvider, network: NetworkNumber, market: FluidMarketInfo, blockNumber?: Blockish) => Promise<FluidMarketData | undefined>;
34
+ export declare const _getFluidVaultIdsForUser: (provider: Client, network: NetworkNumber, user: EthAddress, blockNumber?: Blockish) => Promise<string[]>;
35
+ export declare const getFluidVaultIdsForUser: (provider: EthereumProvider, network: NetworkNumber, user: EthAddress, blockNumber?: Blockish) => Promise<string[]>;
36
36
  export declare const _getFluidPosition: (provider: Client, network: NetworkNumber, vaultId: string, extractedState: {
37
37
  assetsData: FluidAssetsData;
38
38
  marketData: InnerFluidMarketData;
39
- }) => Promise<FluidVaultData>;
39
+ }, blockNumber?: Blockish) => Promise<FluidVaultData>;
40
40
  export declare const getFluidPosition: (provider: EthereumProvider, network: NetworkNumber, vaultId: string, extractedState: {
41
41
  assetsData: FluidAssetsData;
42
42
  marketData: InnerFluidMarketData;
43
- }) => Promise<FluidVaultData>;
44
- export declare const _getFluidPositionWithMarket: (provider: PublicClient, network: NetworkNumber, vaultId: string) => Promise<{
43
+ }, blockNumber?: Blockish) => Promise<FluidVaultData>;
44
+ export declare const _getFluidPositionWithMarket: (provider: PublicClient, network: NetworkNumber, vaultId: string, blockNumber?: Blockish) => Promise<{
45
45
  userData: FluidVaultData;
46
46
  marketData: FluidMarketData;
47
47
  } | undefined>;
48
- export declare const getFluidPositionWithMarket: (provider: EthereumProvider, network: NetworkNumber, vaultId: string) => Promise<{
48
+ export declare const getFluidPositionWithMarket: (provider: EthereumProvider, network: NetworkNumber, vaultId: string, blockNumber?: Blockish) => Promise<{
49
49
  userData: FluidVaultData;
50
50
  marketData: FluidMarketData;
51
51
  } | undefined>;
52
- export declare const _getAllFluidMarketDataChunked: (network: NetworkNumber, provider: PublicClient) => Promise<(FluidMarketData | undefined)[]>;
53
- export declare const getAllFluidMarketDataChunked: (network: NetworkNumber, provider: EthereumProvider) => Promise<(FluidMarketData | undefined)[]>;
54
- export declare const _getFluidTokenData: (provider: Client, network: NetworkNumber, token: string) => Promise<{
52
+ export declare const _getAllFluidMarketDataChunked: (network: NetworkNumber, provider: PublicClient, blockNumber?: Blockish) => Promise<(FluidMarketData | undefined)[]>;
53
+ export declare const getAllFluidMarketDataChunked: (network: NetworkNumber, provider: EthereumProvider, blockNumber?: Blockish) => Promise<(FluidMarketData | undefined)[]>;
54
+ export declare const _getFluidTokenData: (provider: Client, network: NetworkNumber, token: string, blockNumber?: Blockish) => Promise<{
55
55
  fTokenAddress: any;
56
56
  fTokenSymbol: string;
57
57
  decimals: string;
@@ -61,7 +61,7 @@ export declare const _getFluidTokenData: (provider: Client, network: NetworkNumb
61
61
  depositRate: string;
62
62
  withdrawRate: string;
63
63
  }>;
64
- export declare const getFluidTokenData: (provider: EthereumProvider, network: NetworkNumber, token: string) => Promise<{
64
+ export declare const getFluidTokenData: (provider: EthereumProvider, network: NetworkNumber, token: string, blockNumber?: Blockish) => Promise<{
65
65
  fTokenAddress: any;
66
66
  fTokenSymbol: string;
67
67
  decimals: string;
@@ -71,7 +71,7 @@ export declare const getFluidTokenData: (provider: EthereumProvider, network: Ne
71
71
  depositRate: string;
72
72
  withdrawRate: string;
73
73
  }>;
74
- export declare const _getFluidDepositData: (provider: Client, network: NetworkNumber, token: string, address: EthAddress) => Promise<{
74
+ export declare const _getFluidDepositData: (provider: Client, network: NetworkNumber, token: string, address: EthAddress, blockNumber?: Blockish) => Promise<{
75
75
  fTokenAddress: string | undefined;
76
76
  fTokenSymbol: string;
77
77
  decimals: string;
@@ -83,7 +83,7 @@ export declare const _getFluidDepositData: (provider: Client, network: NetworkNu
83
83
  deposited: string;
84
84
  depositedShares: string;
85
85
  }>;
86
- export declare const getFluidDepositData: (provider: EthereumProvider, network: NetworkNumber, token: string, address: EthAddress) => Promise<{
86
+ export declare const getFluidDepositData: (provider: EthereumProvider, network: NetworkNumber, token: string, address: EthAddress, blockNumber?: Blockish) => Promise<{
87
87
  fTokenAddress: string | undefined;
88
88
  fTokenSymbol: string;
89
89
  decimals: string;
@@ -95,7 +95,7 @@ export declare const getFluidDepositData: (provider: EthereumProvider, network:
95
95
  deposited: string;
96
96
  depositedShares: string;
97
97
  }>;
98
- export declare const _getAllUserEarnPositionsWithFTokens: (provider: Client, network: NetworkNumber, user: EthAddress) => Promise<{
98
+ export declare const _getAllUserEarnPositionsWithFTokens: (provider: Client, network: NetworkNumber, user: EthAddress, blockNumber?: Blockish) => Promise<{
99
99
  fTokenAddress: string | undefined;
100
100
  fTokenSymbol: string;
101
101
  decimals: string;
@@ -107,7 +107,7 @@ export declare const _getAllUserEarnPositionsWithFTokens: (provider: Client, net
107
107
  deposited: string;
108
108
  depositedShares: string;
109
109
  }[]>;
110
- export declare const getAllUserEarnPositionsWithFTokens: (provider: EthereumProvider, network: NetworkNumber, user: EthAddress) => Promise<{
110
+ export declare const getAllUserEarnPositionsWithFTokens: (provider: EthereumProvider, network: NetworkNumber, user: EthAddress, blockNumber?: Blockish) => Promise<{
111
111
  fTokenAddress: string | undefined;
112
112
  fTokenSymbol: string;
113
113
  decimals: string;
@@ -119,7 +119,7 @@ export declare const getAllUserEarnPositionsWithFTokens: (provider: EthereumProv
119
119
  deposited: string;
120
120
  depositedShares: string;
121
121
  }[]>;
122
- export declare const _getUserPositions: (provider: PublicClient, network: NetworkNumber, user: EthAddress) => Promise<{
122
+ export declare const _getUserPositions: (provider: PublicClient, network: NetworkNumber, user: EthAddress, blockNumber?: Blockish) => Promise<{
123
123
  marketData: FluidMarketData | undefined;
124
124
  userData: {
125
125
  suppliedUsd: string;
@@ -154,7 +154,7 @@ export declare const _getUserPositions: (provider: PublicClient, network: Networ
154
154
  nftId: string;
155
155
  } | undefined;
156
156
  }[]>;
157
- export declare const getUserPositions: (provider: EthereumProvider, network: NetworkNumber, user: EthAddress) => Promise<{
157
+ export declare const getUserPositions: (provider: EthereumProvider, network: NetworkNumber, user: EthAddress, blockNumber?: Blockish) => Promise<{
158
158
  marketData: FluidMarketData | undefined;
159
159
  userData: {
160
160
  suppliedUsd: string;
@@ -189,7 +189,7 @@ export declare const getUserPositions: (provider: EthereumProvider, network: Net
189
189
  nftId: string;
190
190
  } | undefined;
191
191
  }[]>;
192
- export declare const _getUserPositionsPortfolio: (provider: PublicClient, network: NetworkNumber, user: EthAddress) => Promise<{
192
+ export declare const _getUserPositionsPortfolio: (provider: PublicClient, network: NetworkNumber, user: EthAddress, blockNumber?: Blockish) => Promise<{
193
193
  marketData: FluidMarketData | undefined;
194
194
  userData: {
195
195
  suppliedUsd: string;
@@ -224,5 +224,6 @@ export declare const _getUserPositionsPortfolio: (provider: PublicClient, networ
224
224
  nftId: string;
225
225
  } | undefined;
226
226
  }[]>;
227
- export declare const _getAllFluidMarketDataPortfolio: (provider: PublicClient, network: NetworkNumber) => Promise<Record<string, FluidMarketData>>;
228
- export declare const getAllFluidMarketDataPortfolio: (provider: EthereumProvider, network: NetworkNumber) => Promise<Record<string, FluidMarketData>>;
227
+ /** `blockTimestamp` (unix seconds) is the historical block's timestamp when already known; otherwise it is read from the block. */
228
+ export declare const _getAllFluidMarketDataPortfolio: (provider: PublicClient, network: NetworkNumber, blockNumber?: Blockish, blockTimestamp?: number) => Promise<Record<string, FluidMarketData>>;
229
+ export declare const getAllFluidMarketDataPortfolio: (provider: EthereumProvider, network: NetworkNumber, blockNumber?: Blockish, blockTimestamp?: number) => Promise<Record<string, FluidMarketData>>;