@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
@@ -1,5 +1,5 @@
1
1
  import { Client, PublicClient } from 'viem';
2
- import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
2
+ import { Blockish, EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
3
3
  import { LiquityV2AssetsData, LiquityV2MarketData, LiquityV2MarketInfo, LiquityV2TroveData, LiquityV2Versions } from '../types';
4
4
  export type SPYieldGainParameters = {
5
5
  P: string;
@@ -9,8 +9,8 @@ export type SPYieldGainParameters = {
9
9
  totalBoldDeposits: string;
10
10
  yieldGainsPending: string;
11
11
  };
12
- export declare const _getLiquityV2MarketData: (provider: Client, network: NetworkNumber, selectedMarket: LiquityV2MarketInfo) => Promise<LiquityV2MarketData>;
13
- export declare const getLiquityV2MarketData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: LiquityV2MarketInfo) => Promise<LiquityV2MarketData>;
12
+ export declare const _getLiquityV2MarketData: (provider: Client, network: NetworkNumber, selectedMarket: LiquityV2MarketInfo, blockNumber?: Blockish) => Promise<LiquityV2MarketData>;
13
+ export declare const getLiquityV2MarketData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: LiquityV2MarketInfo, blockNumber?: Blockish) => Promise<LiquityV2MarketData>;
14
14
  export declare const nftContractCreationBlockMapping: {
15
15
  liquityv2eth: number;
16
16
  liquityv2wsteth: number;
@@ -32,27 +32,27 @@ export declare const getLiquityV2UserTroveIds: (provider: EthereumProvider, netw
32
32
  nextFreeTroveIndex: string;
33
33
  }>;
34
34
  export declare const calculateDebtInFrontLiquityV2: (markets: Record<LiquityV2Versions, LiquityV2MarketData>, selectedMarket: LiquityV2Versions, allMarketsUnbackedDebts: Record<LiquityV2Versions, string>, interestRateDebtInFront: string) => string;
35
- export declare const getDebtInFrontForInterestRateIncludingNewDebtLiquityV2: (newDebt: string, markets: Record<LiquityV2Versions, LiquityV2MarketData>, selectedMarket: LiquityV2Versions, provider: Client, network: NetworkNumber, interestRate: string) => Promise<string>;
36
- export declare const getDebtInFrontForInterestRateLiquityV2: (markets: Record<LiquityV2Versions, LiquityV2MarketData>, selectedMarket: LiquityV2Versions, provider: EthereumProvider, network: NetworkNumber, isLegacy: boolean, interestRate: string, debtInFrontBeingMoved?: string) => Promise<string>;
35
+ export declare const getDebtInFrontForInterestRateIncludingNewDebtLiquityV2: (newDebt: string, markets: Record<LiquityV2Versions, LiquityV2MarketData>, selectedMarket: LiquityV2Versions, provider: Client, network: NetworkNumber, interestRate: string, blockNumber?: Blockish) => Promise<string>;
36
+ export declare const getDebtInFrontForInterestRateLiquityV2: (markets: Record<LiquityV2Versions, LiquityV2MarketData>, selectedMarket: LiquityV2Versions, provider: EthereumProvider, network: NetworkNumber, isLegacy: boolean, interestRate: string, debtInFrontBeingMoved?: string, blockNumber?: Blockish) => Promise<string>;
37
37
  export declare const _getLiquityV2TroveData: (provider: Client, network: NetworkNumber, { selectedMarket, assetsData, troveId, allMarketsData, }: {
38
38
  selectedMarket: LiquityV2MarketInfo;
39
39
  assetsData: LiquityV2AssetsData;
40
40
  troveId: string;
41
41
  allMarketsData: Record<LiquityV2Versions, LiquityV2MarketData>;
42
- }, fetchDebtInFront?: boolean) => Promise<LiquityV2TroveData>;
42
+ }, fetchDebtInFront?: boolean, blockNumber?: Blockish) => Promise<LiquityV2TroveData>;
43
43
  export declare const getLiquityV2TroveData: (provider: EthereumProvider, network: NetworkNumber, { selectedMarket, assetsData, troveId, allMarketsData, }: {
44
44
  selectedMarket: LiquityV2MarketInfo;
45
45
  assetsData: LiquityV2AssetsData;
46
46
  troveId: string;
47
47
  allMarketsData: Record<LiquityV2Versions, LiquityV2MarketData>;
48
- }, fetchDebtInFront?: boolean) => Promise<LiquityV2TroveData>;
49
- export declare const getLiquityV2ClaimableCollateral: (collSurplusPoolAddress: EthAddress, account: EthAddress, provider: EthereumProvider, network: NetworkNumber) => Promise<string>;
48
+ }, fetchDebtInFront?: boolean, blockNumber?: Blockish) => Promise<LiquityV2TroveData>;
49
+ export declare const getLiquityV2ClaimableCollateral: (collSurplusPoolAddress: EthAddress, account: EthAddress, provider: EthereumProvider, network: NetworkNumber, blockNumber?: Blockish) => Promise<string>;
50
50
  export type sBoldYieldParameters = {
51
51
  WETH: string;
52
52
  wsETH: string;
53
53
  rETH: string;
54
54
  };
55
- export declare const getLiquityV2Staking: (provider: Client, network: NetworkNumber, market: LiquityV2Versions, user: EthAddress) => Promise<{
55
+ export declare const getLiquityV2Staking: (provider: Client, network: NetworkNumber, market: LiquityV2Versions, user: EthAddress, blockNumber?: Blockish) => Promise<{
56
56
  totalBOLDDeposited: string;
57
57
  stakedBOLDBalance: string;
58
58
  stabilityRewardColl: string;
@@ -61,7 +61,7 @@ export declare const getLiquityV2Staking: (provider: Client, network: NetworkNum
61
61
  debtTokenBalance: string;
62
62
  stabilityPoolApy: string;
63
63
  }>;
64
- export declare const getLiquitySAndYBold: (provider: Client, network: NetworkNumber, markets: any, user: EthAddress) => Promise<{
64
+ export declare const getLiquitySAndYBold: (provider: Client, network: NetworkNumber, markets: any, user: EthAddress, blockNumber?: Blockish) => Promise<{
65
65
  spApy: string;
66
66
  yBoldApy: string;
67
67
  totalBoldDepositedSBold: string;
@@ -17,18 +17,18 @@ import { getLiquityV2AggregatedPositionData } from '../helpers/liquityV2Helpers'
17
17
  import { compareAddresses, ethToWeth, getEthAmountForDecimals, MAXUINT, } from '../services/utils';
18
18
  import { SECONDS_PER_YEAR, ZERO_ADDRESS } from '../constants';
19
19
  import { LiquityV2Markets } from '../markets';
20
- import { getViemProvider } from '../services/viem';
20
+ import { getViemProvider, setViemBlockNumber } from '../services/viem';
21
21
  const getLiquityV2ViewContract = (provider, network, isLegacy) => {
22
22
  if (isLegacy)
23
23
  return LiquityV2LegacyViewContractViem(provider, network);
24
24
  return LiquityV2ViewContractViem(provider, network);
25
25
  };
26
- export const _getLiquityV2MarketData = (provider, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
26
+ export const _getLiquityV2MarketData = (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') {
27
27
  var _a;
28
28
  const { marketAddress, debtToken, collateralToken, isLegacy, } = selectedMarket;
29
29
  const data = isLegacy
30
- ? yield LiquityV2LegacyViewContractViem(provider, network).read.getMarketData([marketAddress])
31
- : (yield LiquityV2ViewContractViem(provider, network).simulate.getMarketData([marketAddress])).result;
30
+ ? yield LiquityV2LegacyViewContractViem(provider, network).read.getMarketData([marketAddress], setViemBlockNumber(blockNumber))
31
+ : (yield LiquityV2ViewContractViem(provider, network).simulate.getMarketData([marketAddress], setViemBlockNumber(blockNumber))).result;
32
32
  const hintHelperAddress = data.hintHelpers;
33
33
  const troveNFTAddress = data.troveNFT;
34
34
  const borrowerOperationsAddress = data.borrowerOperations;
@@ -101,16 +101,16 @@ export const _getLiquityV2MarketData = (provider, network, selectedMarket) => __
101
101
  },
102
102
  };
103
103
  });
104
- export const getLiquityV2MarketData = (provider, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () { return _getLiquityV2MarketData(getViemProvider(provider, network), network, selectedMarket); });
105
- const getUserTroves = (provider_1, network_1, isLegacy_1, account_1, marketAddress_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, isLegacy_1, account_1, marketAddress_1, ...args_1], void 0, function* (provider, network, isLegacy, account, marketAddress, startIndex = 0, endIndex = 100, troves = []) {
104
+ export const getLiquityV2MarketData = (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 _getLiquityV2MarketData(getViemProvider(provider, network), network, selectedMarket, blockNumber); });
105
+ const getUserTroves = (provider_1, network_1, isLegacy_1, account_1, marketAddress_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, isLegacy_1, account_1, marketAddress_1, ...args_1], void 0, function* (provider, network, isLegacy, account, marketAddress, startIndex = 0, endIndex = 100, troves = [], blockNumber = 'latest') {
106
106
  const viewContract = getLiquityV2ViewContract(provider, network, isLegacy);
107
- const result = yield viewContract.read.getUserTroves([account, marketAddress, BigInt(startIndex), BigInt(endIndex)]);
107
+ const result = yield viewContract.read.getUserTroves([account, marketAddress, BigInt(startIndex), BigInt(endIndex)], setViemBlockNumber(blockNumber));
108
108
  const newStartIndex = endIndex + 1;
109
109
  const nextFreeTroveIndex = result[1].toString();
110
110
  const existingTroves = [...troves, ...result[0].map((trove) => (Object.assign(Object.assign({}, trove), { troveId: trove.troveId.toString() })))];
111
111
  if (nextFreeTroveIndex !== '-1')
112
112
  return { troves: existingTroves.filter((trove) => trove.ownedByUser), nextFreeTroveIndex };
113
- return getUserTroves(provider, network, isLegacy, account, marketAddress, newStartIndex, newStartIndex + 100, existingTroves);
113
+ return getUserTroves(provider, network, isLegacy, account, marketAddress, newStartIndex, newStartIndex + 100, existingTroves, blockNumber);
114
114
  });
115
115
  export const nftContractCreationBlockMapping = {
116
116
  [LiquityV2Versions.LiquityV2Eth]: 22516079,
@@ -153,40 +153,40 @@ export const _getLiquityV2UserTroveIds = (provider, network, selectedMarket, tro
153
153
  return { troves: trovesNoDuplicates, nextFreeTroveIndex };
154
154
  });
155
155
  export const getLiquityV2UserTroveIds = (provider, network, selectedMarket, troveNFTAddress, limitBlocksForEventFetching, account) => __awaiter(void 0, void 0, void 0, function* () { return _getLiquityV2UserTroveIds(getViemProvider(provider, network), network, selectedMarket, troveNFTAddress, limitBlocksForEventFetching, account); });
156
- const getDebtInFrontForSingleMarketLiquityV2 = (provider_1, network_1, isLegacy_1, marketAddress_1, troveId_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, isLegacy_1, marketAddress_1, troveId_1, ...args_1], void 0, function* (provider, network, isLegacy, marketAddress, troveId, accumulatedSum = '0', iterations = 2000) {
156
+ const getDebtInFrontForSingleMarketLiquityV2 = (provider_1, network_1, isLegacy_1, marketAddress_1, troveId_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, isLegacy_1, marketAddress_1, troveId_1, ...args_1], void 0, function* (provider, network, isLegacy, marketAddress, troveId, accumulatedSum = '0', iterations = 2000, blockNumber = 'latest') {
157
157
  const viewContract = getLiquityV2ViewContract(provider, network, isLegacy);
158
- const res = yield viewContract.read.getDebtInFront([marketAddress, BigInt(troveId), BigInt(accumulatedSum), BigInt(iterations)]);
158
+ const res = yield viewContract.read.getDebtInFront([marketAddress, BigInt(troveId), BigInt(accumulatedSum), BigInt(iterations)], setViemBlockNumber(blockNumber));
159
159
  const next = res[0].toString();
160
160
  const debt = res[1].toString();
161
161
  if (next === '0')
162
162
  return assetAmountInEth(debt);
163
- return getDebtInFrontForSingleMarketLiquityV2(provider, network, isLegacy, marketAddress, next, debt, iterations);
163
+ return getDebtInFrontForSingleMarketLiquityV2(provider, network, isLegacy, marketAddress, next, debt, iterations, blockNumber);
164
164
  });
165
- const getDebtInFrontForInterestRateSingleMarketLiquityV2 = (provider_1, network_1, isLegacy_1, marketAddress_1, interestRate_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, isLegacy_1, marketAddress_1, interestRate_1, ...args_1], void 0, function* (provider, network, isLegacy, marketAddress, interestRate, troveId = '0', accumulatedSum = '0', iterations = 2000) {
165
+ const getDebtInFrontForInterestRateSingleMarketLiquityV2 = (provider_1, network_1, isLegacy_1, marketAddress_1, interestRate_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, isLegacy_1, marketAddress_1, interestRate_1, ...args_1], void 0, function* (provider, network, isLegacy, marketAddress, interestRate, troveId = '0', accumulatedSum = '0', iterations = 2000, blockNumber = 'latest') {
166
166
  const viewContract = getLiquityV2ViewContract(provider, network, isLegacy);
167
167
  if (+interestRate === 0 || !interestRate)
168
168
  return '0';
169
169
  const interestRateWei = new Dec(interestRate).times(1e16).toFixed(0).toString();
170
- const res = yield viewContract.read.getDebtInFrontByInterestRate([marketAddress, BigInt(troveId), BigInt(accumulatedSum), BigInt(iterations), BigInt(interestRateWei)]);
170
+ const res = yield viewContract.read.getDebtInFrontByInterestRate([marketAddress, BigInt(troveId), BigInt(accumulatedSum), BigInt(iterations), BigInt(interestRateWei)], setViemBlockNumber(blockNumber));
171
171
  const next = res[0].toString();
172
172
  const debt = res[1].toString();
173
173
  if (next === '0')
174
174
  return assetAmountInEth(debt);
175
- return getDebtInFrontForInterestRateSingleMarketLiquityV2(provider, network, isLegacy, marketAddress, interestRate, next, debt, iterations);
175
+ return getDebtInFrontForInterestRateSingleMarketLiquityV2(provider, network, isLegacy, marketAddress, interestRate, next, debt, iterations, blockNumber);
176
176
  });
177
- const getUnbackedDebtForSingleMarket = (totalBorrowed, provider, network, stabilityPoolAddress) => __awaiter(void 0, void 0, void 0, function* () {
177
+ const getUnbackedDebtForSingleMarket = (totalBorrowed_1, provider_1, network_1, stabilityPoolAddress_1, ...args_1) => __awaiter(void 0, [totalBorrowed_1, provider_1, network_1, stabilityPoolAddress_1, ...args_1], void 0, function* (totalBorrowed, provider, network, stabilityPoolAddress, blockNumber = 'latest') {
178
178
  const stabilityPoolContract = createViemContractFromConfigFunc('LiquityV2StabilityPool', stabilityPoolAddress)(provider, network);
179
- const totalBoldDeposits = yield stabilityPoolContract.read.getTotalBoldDeposits();
179
+ const totalBoldDeposits = yield stabilityPoolContract.read.getTotalBoldDeposits(setViemBlockNumber(blockNumber));
180
180
  const totalBoldDepositsInEth = assetAmountInEth(totalBoldDeposits.toString());
181
181
  return Dec.max(new Dec(totalBorrowed).sub(totalBoldDepositsInEth), 0).toString();
182
182
  });
183
- const getAllMarketsUnbackedDebts = (markets, isLegacy, provider, network) => __awaiter(void 0, void 0, void 0, function* () {
183
+ const getAllMarketsUnbackedDebts = (markets_1, isLegacy_1, provider_1, network_1, ...args_1) => __awaiter(void 0, [markets_1, isLegacy_1, provider_1, network_1, ...args_1], void 0, function* (markets, isLegacy, provider, network, blockNumber = 'latest') {
184
184
  const allMarketsUnbackedDebt = yield Promise.all(Object.entries(markets).map((_a) => __awaiter(void 0, [_a], void 0, function* ([version, market]) {
185
185
  const { assetsData, marketData } = market;
186
186
  const { debtToken, isLegacy: isLegacyMarket } = LiquityV2Markets(network)[version];
187
187
  if (isLegacyMarket !== isLegacy)
188
188
  return [version, '0'];
189
- const unbackedDebt = yield getUnbackedDebtForSingleMarket(assetsData[debtToken].totalBorrow, provider, network, marketData.stabilityPoolAddress);
189
+ const unbackedDebt = yield getUnbackedDebtForSingleMarket(assetsData[debtToken].totalBorrow, provider, network, marketData.stabilityPoolAddress, blockNumber);
190
190
  return [version, unbackedDebt];
191
191
  })));
192
192
  return Object.fromEntries(allMarketsUnbackedDebt);
@@ -240,20 +240,20 @@ export const calculateDebtInFrontLiquityV2 = (markets, selectedMarket, allMarket
240
240
  // @dev The amount redeemed on each branch depends on the unbacked debt of every branch (the difference between total borrow and stability pool deposits).
241
241
  // When new debt is generated on the selected market, the unbacked debt will increase, resulting in a higher redemption amount on that branch.
242
242
  // This function accepts the new debt that's about to be generated (e.g., trove creation) and estimates the debt in front based on the new state.
243
- export const getDebtInFrontForInterestRateIncludingNewDebtLiquityV2 = (newDebt, markets, selectedMarket, provider, network, interestRate) => __awaiter(void 0, void 0, void 0, function* () {
243
+ export const getDebtInFrontForInterestRateIncludingNewDebtLiquityV2 = (newDebt_1, markets_1, selectedMarket_1, provider_1, network_1, interestRate_1, ...args_1) => __awaiter(void 0, [newDebt_1, markets_1, selectedMarket_1, provider_1, network_1, interestRate_1, ...args_1], void 0, function* (newDebt, markets, selectedMarket, provider, network, interestRate, blockNumber = 'latest') {
244
244
  const marketsWithNewDebt = structuredClone(markets);
245
245
  const selectedMarketDebtToken = LiquityV2Markets(network)[selectedMarket].debtToken;
246
246
  const currentTotalBorrow = new Dec(marketsWithNewDebt[selectedMarket].assetsData[selectedMarketDebtToken].totalBorrow);
247
247
  marketsWithNewDebt[selectedMarket].assetsData[selectedMarketDebtToken].totalBorrow = currentTotalBorrow.add(newDebt).toString();
248
248
  const { isLegacy } = LiquityV2Markets(NetworkNumber.Eth)[selectedMarket];
249
- const allMarketsUnbackedDebts = yield getAllMarketsUnbackedDebts(marketsWithNewDebt, isLegacy, provider, network);
250
- const interestRateDebtInFront = new Dec(yield getDebtInFrontForInterestRateSingleMarketLiquityV2(provider, network, isLegacy, LiquityV2Markets(network)[selectedMarket].marketAddress, interestRate));
249
+ const allMarketsUnbackedDebts = yield getAllMarketsUnbackedDebts(marketsWithNewDebt, isLegacy, provider, network, blockNumber);
250
+ const interestRateDebtInFront = new Dec(yield getDebtInFrontForInterestRateSingleMarketLiquityV2(provider, network, isLegacy, LiquityV2Markets(network)[selectedMarket].marketAddress, interestRate, '0', '0', 2000, blockNumber));
251
251
  return calculateDebtInFrontLiquityV2(marketsWithNewDebt, selectedMarket, allMarketsUnbackedDebts, interestRateDebtInFront.toString());
252
252
  });
253
- const getDebtInFrontLiquityV2 = (markets, selectedMarket, provider, network, viewContract, troveId) => __awaiter(void 0, void 0, void 0, function* () {
253
+ const getDebtInFrontLiquityV2 = (markets_1, selectedMarket_1, provider_1, network_1, viewContract_1, troveId_1, ...args_1) => __awaiter(void 0, [markets_1, selectedMarket_1, provider_1, network_1, viewContract_1, troveId_1, ...args_1], void 0, function* (markets, selectedMarket, provider, network, viewContract, troveId, blockNumber = 'latest') {
254
254
  const { isLegacy } = LiquityV2Markets(NetworkNumber.Eth)[selectedMarket];
255
- const allMarketsUnbackedDebts = yield getAllMarketsUnbackedDebts(markets, isLegacy, provider, network);
256
- const interestRateDebtInFront = yield getDebtInFrontForSingleMarketLiquityV2(provider, network, isLegacy, LiquityV2Markets(network)[selectedMarket].marketAddress, troveId);
255
+ const allMarketsUnbackedDebts = yield getAllMarketsUnbackedDebts(markets, isLegacy, provider, network, blockNumber);
256
+ const interestRateDebtInFront = yield getDebtInFrontForSingleMarketLiquityV2(provider, network, isLegacy, LiquityV2Markets(network)[selectedMarket].marketAddress, troveId, '0', 2000, blockNumber);
257
257
  return calculateDebtInFrontLiquityV2(markets, selectedMarket, allMarketsUnbackedDebts, interestRateDebtInFront.toString());
258
258
  });
259
259
  /**
@@ -265,24 +265,24 @@ const getDebtInFrontLiquityV2 = (markets, selectedMarket, provider, network, vie
265
265
  * @param interestRate
266
266
  * @param debtInFrontBeingMoved - amound of debt being repositioned if interest rate is being increased (prevents including it as debt in front)
267
267
  */
268
- const _getDebtInFrontForInterestRateLiquityV2 = (markets_1, selectedMarket_1, provider_1, network_1, isLegacy_1, interestRate_1, ...args_1) => __awaiter(void 0, [markets_1, selectedMarket_1, provider_1, network_1, isLegacy_1, interestRate_1, ...args_1], void 0, function* (markets, selectedMarket, provider, network, isLegacy, interestRate, debtInFrontBeingMoved = '0') {
269
- const allMarketsUnbackedDebts = yield getAllMarketsUnbackedDebts(markets, isLegacy, provider, network);
270
- const interestRateDebtInFront = new Dec(yield getDebtInFrontForInterestRateSingleMarketLiquityV2(provider, network, isLegacy, LiquityV2Markets(network)[selectedMarket].marketAddress, interestRate))
268
+ const _getDebtInFrontForInterestRateLiquityV2 = (markets_1, selectedMarket_1, provider_1, network_1, isLegacy_1, interestRate_1, ...args_1) => __awaiter(void 0, [markets_1, selectedMarket_1, provider_1, network_1, isLegacy_1, interestRate_1, ...args_1], void 0, function* (markets, selectedMarket, provider, network, isLegacy, interestRate, debtInFrontBeingMoved = '0', blockNumber = 'latest') {
269
+ const allMarketsUnbackedDebts = yield getAllMarketsUnbackedDebts(markets, isLegacy, provider, network, blockNumber);
270
+ const interestRateDebtInFront = new Dec(yield getDebtInFrontForInterestRateSingleMarketLiquityV2(provider, network, isLegacy, LiquityV2Markets(network)[selectedMarket].marketAddress, interestRate, '0', '0', 2000, blockNumber))
271
271
  .sub(debtInFrontBeingMoved);
272
272
  return calculateDebtInFrontLiquityV2(markets, selectedMarket, allMarketsUnbackedDebts, interestRateDebtInFront.toString());
273
273
  });
274
- export const getDebtInFrontForInterestRateLiquityV2 = (markets_1, selectedMarket_1, provider_1, network_1, isLegacy_1, interestRate_1, ...args_1) => __awaiter(void 0, [markets_1, selectedMarket_1, provider_1, network_1, isLegacy_1, interestRate_1, ...args_1], void 0, function* (markets, selectedMarket, provider, network, isLegacy, interestRate, debtInFrontBeingMoved = '0') { return _getDebtInFrontForInterestRateLiquityV2(markets, selectedMarket, getViemProvider(provider, network), network, isLegacy, interestRate, debtInFrontBeingMoved); });
275
- export const _getLiquityV2TroveData = (provider_1, network_1, _a, ...args_1) => __awaiter(void 0, [provider_1, network_1, _a, ...args_1], void 0, function* (provider, network, { selectedMarket, assetsData, troveId, allMarketsData, }, fetchDebtInFront = true) {
274
+ export const getDebtInFrontForInterestRateLiquityV2 = (markets_1, selectedMarket_1, provider_1, network_1, isLegacy_1, interestRate_1, ...args_1) => __awaiter(void 0, [markets_1, selectedMarket_1, provider_1, network_1, isLegacy_1, interestRate_1, ...args_1], void 0, function* (markets, selectedMarket, provider, network, isLegacy, interestRate, debtInFrontBeingMoved = '0', blockNumber = 'latest') { return _getDebtInFrontForInterestRateLiquityV2(markets, selectedMarket, getViemProvider(provider, network), network, isLegacy, interestRate, debtInFrontBeingMoved, blockNumber); });
275
+ export const _getLiquityV2TroveData = (provider_1, network_1, _a, ...args_1) => __awaiter(void 0, [provider_1, network_1, _a, ...args_1], void 0, function* (provider, network, { selectedMarket, assetsData, troveId, allMarketsData, }, fetchDebtInFront = true, blockNumber = 'latest') {
276
276
  const { minCollRatio, batchCollRatio } = allMarketsData[selectedMarket.value].marketData;
277
277
  const { collateralToken, marketAddress, debtToken } = selectedMarket;
278
278
  const troveInfoPromise = selectedMarket.isLegacy
279
- ? LiquityV2LegacyViewContractViem(provider, network).read.getTroveInfo([marketAddress, BigInt(troveId)])
279
+ ? LiquityV2LegacyViewContractViem(provider, network).read.getTroveInfo([marketAddress, BigInt(troveId)], setViemBlockNumber(blockNumber))
280
280
  : LiquityV2ViewContractViem(provider, network).simulate
281
- .getTroveInfo([marketAddress, BigInt(troveId)])
281
+ .getTroveInfo([marketAddress, BigInt(troveId)], setViemBlockNumber(blockNumber))
282
282
  .then(({ result }) => result);
283
283
  const [_data, debtInFront] = yield Promise.all([
284
284
  troveInfoPromise,
285
- fetchDebtInFront ? getDebtInFrontLiquityV2(allMarketsData, selectedMarket.value, provider, network, selectedMarket.isLegacy, troveId) : Promise.resolve('0'),
285
+ fetchDebtInFront ? getDebtInFrontLiquityV2(allMarketsData, selectedMarket.value, provider, network, selectedMarket.isLegacy, troveId, blockNumber) : Promise.resolve('0'),
286
286
  ]);
287
287
  const data = Object.assign(Object.assign({}, _data), { TCRatio: _data.TCRatio.toString() === MAXUINT ? '0' : _data.TCRatio.toString() });
288
288
  const usedAssets = {};
@@ -325,18 +325,18 @@ export const _getLiquityV2TroveData = (provider_1, network_1, _a, ...args_1) =>
325
325
  })), { collRatio });
326
326
  return payload;
327
327
  });
328
- export const getLiquityV2TroveData = (provider_1, network_1, _a, ...args_1) => __awaiter(void 0, [provider_1, network_1, _a, ...args_1], void 0, function* (provider, network, { selectedMarket, assetsData, troveId, allMarketsData, }, fetchDebtInFront = true) {
328
+ export const getLiquityV2TroveData = (provider_1, network_1, _a, ...args_1) => __awaiter(void 0, [provider_1, network_1, _a, ...args_1], void 0, function* (provider, network, { selectedMarket, assetsData, troveId, allMarketsData, }, fetchDebtInFront = true, blockNumber = 'latest') {
329
329
  return _getLiquityV2TroveData(getViemProvider(provider, network), network, {
330
330
  selectedMarket,
331
331
  assetsData,
332
332
  troveId,
333
333
  allMarketsData,
334
- }, fetchDebtInFront);
334
+ }, fetchDebtInFront, blockNumber);
335
335
  });
336
- export const getLiquityV2ClaimableCollateral = (collSurplusPoolAddress, account, provider, network) => __awaiter(void 0, void 0, void 0, function* () {
336
+ export const getLiquityV2ClaimableCollateral = (collSurplusPoolAddress_1, account_1, provider_1, network_1, ...args_1) => __awaiter(void 0, [collSurplusPoolAddress_1, account_1, provider_1, network_1, ...args_1], void 0, function* (collSurplusPoolAddress, account, provider, network, blockNumber = 'latest') {
337
337
  const client = getViemProvider(provider, network);
338
338
  const collSurplusPoolContract = createViemContractFromConfigFunc('LiquityV2CollSurplusPool', collSurplusPoolAddress)(client, network);
339
- const claimableCollateral = yield collSurplusPoolContract.read.getCollateral([account]);
339
+ const claimableCollateral = yield collSurplusPoolContract.read.getCollateral([account], setViemBlockNumber(blockNumber));
340
340
  return claimableCollateral.toString();
341
341
  });
342
342
  const stabilityPoolAddrForMarket = {
@@ -395,22 +395,22 @@ const calculateSPApy = (spYieldGainParams, spAPYs) => {
395
395
  .toString();
396
396
  return apy;
397
397
  };
398
- export const getLiquityV2Staking = (provider, network, market, user) => __awaiter(void 0, void 0, void 0, function* () {
398
+ export const getLiquityV2Staking = (provider_1, network_1, market_1, user_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, market_1, user_1, ...args_1], void 0, function* (provider, network, market, user, blockNumber = 'latest') {
399
399
  const stabilityPoolView = createViemContractFromConfigFunc('LiquityV2StabilityPool', stabilityPoolAddrForMarket[market])(provider, network);
400
400
  const activePoolView = createViemContractFromConfigFunc('LiquityV2ActivePool', activePoolAddrForMarket[market])(provider, network);
401
401
  const debtTokenInfo = getAssetInfo(LiquityV2Markets(network)[market].debtToken, network);
402
402
  const debtTokenContract = createViemContractFromConfigFunc('Erc20', debtTokenInfo.address)(provider, network);
403
403
  const [stabilityRewardColl, stabilityRewardYield, compoundedBoldDeposit, totalBoldDeposits, P, currentScale, yieldGainsPending, debtTokenBalance, aggWeightedDebtSum, lastAggUpdateTime,] = yield Promise.all([
404
- stabilityPoolView.read.getDepositorCollGain([user]),
405
- stabilityPoolView.read.getDepositorYieldGain([user]),
406
- stabilityPoolView.read.getCompoundedBoldDeposit([user]),
407
- stabilityPoolView.read.getTotalBoldDeposits(),
408
- stabilityPoolView.read.P(),
409
- stabilityPoolView.read.currentScale(),
410
- stabilityPoolView.read.getYieldGainsPending(),
411
- debtTokenContract.read.balanceOf([user]),
412
- activePoolView.read.aggWeightedDebtSum(),
413
- activePoolView.read.lastAggUpdateTime(),
404
+ stabilityPoolView.read.getDepositorCollGain([user], setViemBlockNumber(blockNumber)),
405
+ stabilityPoolView.read.getDepositorYieldGain([user], setViemBlockNumber(blockNumber)),
406
+ stabilityPoolView.read.getCompoundedBoldDeposit([user], setViemBlockNumber(blockNumber)),
407
+ stabilityPoolView.read.getTotalBoldDeposits(setViemBlockNumber(blockNumber)),
408
+ stabilityPoolView.read.P(setViemBlockNumber(blockNumber)),
409
+ stabilityPoolView.read.currentScale(setViemBlockNumber(blockNumber)),
410
+ stabilityPoolView.read.getYieldGainsPending(setViemBlockNumber(blockNumber)),
411
+ debtTokenContract.read.balanceOf([user], setViemBlockNumber(blockNumber)),
412
+ activePoolView.read.aggWeightedDebtSum(setViemBlockNumber(blockNumber)),
413
+ activePoolView.read.lastAggUpdateTime(setViemBlockNumber(blockNumber)),
414
414
  ]);
415
415
  const stabilityPoolYieldParams = {
416
416
  aggWeightedDebtSum: aggWeightedDebtSum.toString(),
@@ -434,7 +434,7 @@ export const getLiquityV2Staking = (provider, network, market, user) => __awaite
434
434
  stabilityPoolApy,
435
435
  };
436
436
  });
437
- export const getLiquitySAndYBold = (provider, network, markets, user) => __awaiter(void 0, void 0, void 0, function* () {
437
+ export const getLiquitySAndYBold = (provider_1, network_1, markets_1, user_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, markets_1, user_1, ...args_1], void 0, function* (provider, network, markets, user, blockNumber = 'latest') {
438
438
  const sBold = LiquityV2sBoldVaultViem(provider, network);
439
439
  const yBold = createViemContractFromConfigFunc('Erc4626', '0x9F4330700a36B29952869fac9b33f45EEdd8A3d8')(provider, network);
440
440
  const stYBold = createViemContractFromConfigFunc('Erc4626', '0x23346B04a7f55b8760E5860AA5A77383D63491cD')(provider, network);
@@ -444,19 +444,19 @@ export const getLiquitySAndYBold = (provider, network, markets, user) => __await
444
444
  apyREth: markets[LiquityV2Versions.LiquityV2REth].data.stabilityPoolApy,
445
445
  };
446
446
  const [sBoldTotalAssets, sBoldConvertToShares, sBoldMaxWithdraw, wethApy, wsETHApy, rETHApy, yBoldTotalAssets, yBoldMaxWithdraw, stYBoldConvertToShares, yBoldApy, sBoldBalance, yBoldBalance, stYBoldBalance,] = yield Promise.all([
447
- sBold.read.totalAssets(),
448
- sBold.read.convertToShares([BigInt(1e18)]),
449
- sBold.read.maxWithdraw([user]),
450
- sBold.read.sps([BigInt(0)]),
451
- sBold.read.sps([BigInt(1)]),
452
- sBold.read.sps([BigInt(2)]),
453
- yBold.read.totalAssets(),
454
- yBold.read.maxWithdraw([user]),
455
- stYBold.read.convertToShares([BigInt(1e18)]),
447
+ sBold.read.totalAssets(setViemBlockNumber(blockNumber)),
448
+ sBold.read.convertToShares([BigInt(1e18)], setViemBlockNumber(blockNumber)),
449
+ sBold.read.maxWithdraw([user], setViemBlockNumber(blockNumber)),
450
+ sBold.read.sps([BigInt(0)], setViemBlockNumber(blockNumber)),
451
+ sBold.read.sps([BigInt(1)], setViemBlockNumber(blockNumber)),
452
+ sBold.read.sps([BigInt(2)], setViemBlockNumber(blockNumber)),
453
+ yBold.read.totalAssets(setViemBlockNumber(blockNumber)),
454
+ yBold.read.maxWithdraw([user], setViemBlockNumber(blockNumber)),
455
+ stYBold.read.convertToShares([BigInt(1e18)], setViemBlockNumber(blockNumber)),
456
456
  getYBoldApyApi(),
457
- sBold.read.balanceOf([user]),
458
- yBold.read.balanceOf([user]),
459
- stYBold.read.balanceOf([user]),
457
+ sBold.read.balanceOf([user], setViemBlockNumber(blockNumber)),
458
+ yBold.read.balanceOf([user], setViemBlockNumber(blockNumber)),
459
+ stYBold.read.balanceOf([user], setViemBlockNumber(blockNumber)),
460
460
  ]);
461
461
  const spMarketRes = {
462
462
  WETH: new Dec(wethApy[1]).div(10000).toString(),
@@ -1,10 +1,10 @@
1
1
  import { Client } from 'viem';
2
2
  import { LlamaLendGlobalMarketData, LlamaLendMarketData, LlamaLendUserData } from '../types';
3
3
  import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
4
- export declare const _getLlamaLendGlobalData: (provider: Client, network: NetworkNumber, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendGlobalMarketData>;
5
- export declare const getLlamaLendGlobalData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendGlobalMarketData>;
4
+ export declare const _getLlamaLendGlobalData: (provider: Client, network: NetworkNumber, selectedMarket: LlamaLendMarketData, blockNumber?: Blockish) => Promise<LlamaLendGlobalMarketData>;
5
+ export declare const getLlamaLendGlobalData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: LlamaLendMarketData, blockNumber?: Blockish) => Promise<LlamaLendGlobalMarketData>;
6
6
  export declare const _getLlamaLendAccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress, includeDeposited?: boolean) => Promise<PositionBalances>;
7
7
  export declare const getLlamaLendAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
8
- export declare const _getLlamaLendUserData: (provider: Client, network: NetworkNumber, address: EthAddress, selectedMarket: LlamaLendMarketData, marketData: LlamaLendGlobalMarketData) => Promise<LlamaLendUserData>;
9
- export declare const getLlamaLendUserData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: LlamaLendMarketData, marketData: LlamaLendGlobalMarketData) => Promise<LlamaLendUserData>;
10
- export declare const getLlamaLendFullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendUserData>;
8
+ export declare const _getLlamaLendUserData: (provider: Client, network: NetworkNumber, address: EthAddress, selectedMarket: LlamaLendMarketData, marketData: LlamaLendGlobalMarketData, blockNumber?: Blockish) => Promise<LlamaLendUserData>;
9
+ export declare const getLlamaLendUserData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: LlamaLendMarketData, marketData: LlamaLendGlobalMarketData, blockNumber?: Blockish) => Promise<LlamaLendUserData>;
10
+ export declare const getLlamaLendFullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: LlamaLendMarketData, blockNumber?: Blockish) => Promise<LlamaLendUserData>;
@@ -17,7 +17,7 @@ import { getEthAmountForDecimals, wethToEth } from '../services/utils';
17
17
  import { getLlamaLendMarketFromControllerAddress } from '../markets/llamaLend';
18
18
  import { getStakingApy, STAKING_ASSETS } from '../staking';
19
19
  import { getViemProvider, setViemBlockNumber } from '../services/viem';
20
- const getAndFormatBands = (provider, network, selectedMarket, _minBand, _maxBand) => __awaiter(void 0, void 0, void 0, function* () {
20
+ 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') {
21
21
  const contract = LlamaLendViewContractViem(provider, network);
22
22
  const minBand = parseInt(_minBand, 10);
23
23
  const maxBand = parseInt(_maxBand, 10);
@@ -41,7 +41,7 @@ const getAndFormatBands = (provider, network, selectedMarket, _minBand, _maxBand
41
41
  else {
42
42
  start = pivots[index - 1] + 1;
43
43
  }
44
- const pivotedBandsData = yield contract.read.getBandsData([selectedMarket.controllerAddress, BigInt(start), BigInt(pivot)]);
44
+ const pivotedBandsData = yield contract.read.getBandsData([selectedMarket.controllerAddress, BigInt(start), BigInt(pivot)], setViemBlockNumber(blockNumber));
45
45
  return pivotedBandsData;
46
46
  })))).flat();
47
47
  return bandsData.map((band) => ({
@@ -52,11 +52,11 @@ const getAndFormatBands = (provider, network, selectedMarket, _minBand, _maxBand
52
52
  highPrice: assetAmountInEth(band.highPrice.toString()),
53
53
  }));
54
54
  });
55
- export const _getLlamaLendGlobalData = (provider, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
55
+ export const _getLlamaLendGlobalData = (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') {
56
56
  const contract = LlamaLendViewContractViem(provider, network);
57
57
  const collAsset = selectedMarket.collAsset;
58
58
  const debtAsset = selectedMarket.baseAsset;
59
- const data = yield contract.read.globalData([selectedMarket.controllerAddress]);
59
+ const data = yield contract.read.globalData([selectedMarket.controllerAddress], setViemBlockNumber(blockNumber));
60
60
  // all prices are in 18 decimals
61
61
  const oraclePrice = getEthAmountForDecimals(data.oraclePrice.toString(), 18);
62
62
  const collPriceUsd = collAsset === 'crvUSD' ? '1' : new Dec(1).mul(oraclePrice).toDP(18).toString();
@@ -75,7 +75,7 @@ export const _getLlamaLendGlobalData = (provider, network, selectedMarket) => __
75
75
  .toString();
76
76
  const futureBorrowRate = new Dec(new Dec(2.718281828459).pow(exponentFutureRate).minus(1)).mul(100)
77
77
  .toString();
78
- const bandsData = yield getAndFormatBands(provider, network, selectedMarket, data.minBand.toString(), data.maxBand.toString());
78
+ const bandsData = yield getAndFormatBands(provider, network, selectedMarket, data.minBand.toString(), data.maxBand.toString(), blockNumber);
79
79
  const cap = assetAmountInEth(data.debtTokenTotalSupply.toString(), debtAsset);
80
80
  const leftToBorrow = getEthAmountForDecimals(data.debtTokenLeftToBorrow.toString(), 18);
81
81
  const debtInAYearBN = new Dec(totalDebt).mul(new Dec(2.718281828459).pow(exponentRate).toNumber());
@@ -135,7 +135,7 @@ export const _getLlamaLendGlobalData = (provider, network, selectedMarket) => __
135
135
  leftToBorrow,
136
136
  };
137
137
  });
138
- export const getLlamaLendGlobalData = (provider, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () { return _getLlamaLendGlobalData(getViemProvider(provider, network), network, selectedMarket); });
138
+ export const getLlamaLendGlobalData = (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 _getLlamaLendGlobalData(getViemProvider(provider, network), network, selectedMarket, blockNumber); });
139
139
  const getStatusForUser = (bandRange, activeBand, debtSupplied, collSupplied, healthPercent) => {
140
140
  // if bands are equal, that can only be [0,0] which means user doesn't have loan (min number of bands is 4)
141
141
  if (new Dec(bandRange[0]).eq(bandRange[1]))
@@ -180,10 +180,10 @@ export const _getLlamaLendAccountBalances = (provider_1, network_1, block_1, add
180
180
  return balances;
181
181
  });
182
182
  export const getLlamaLendAccountBalances = (provider, network, block, addressMapping, address, controllerAddress) => __awaiter(void 0, void 0, void 0, function* () { return _getLlamaLendAccountBalances(getViemProvider(provider, network), network, block, addressMapping, address, controllerAddress); });
183
- export const _getLlamaLendUserData = (provider, network, address, selectedMarket, marketData) => __awaiter(void 0, void 0, void 0, function* () {
183
+ export const _getLlamaLendUserData = (provider_1, network_1, address_1, selectedMarket_1, marketData_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, selectedMarket_1, marketData_1, ...args_1], void 0, function* (provider, network, address, selectedMarket, marketData, blockNumber = 'latest') {
184
184
  const contract = LlamaLendViewContractViem(provider, network);
185
185
  const { assetsData } = marketData;
186
- const data = yield contract.read.userData([selectedMarket.controllerAddress, address]);
186
+ const data = yield contract.read.userData([selectedMarket.controllerAddress, address], setViemBlockNumber(blockNumber));
187
187
  const collAsset = selectedMarket.collAsset;
188
188
  const debtAsset = selectedMarket.baseAsset;
189
189
  const collPrice = assetsData[collAsset].price;
@@ -228,7 +228,7 @@ export const _getLlamaLendUserData = (provider, network, address, selectedMarket
228
228
  };
229
229
  const priceHigh = assetAmountInEth(data.priceHigh.toString());
230
230
  const priceLow = assetAmountInEth(data.priceLow.toString());
231
- const _userBands = data.loanExists ? (yield getAndFormatBands(provider, network, selectedMarket, data.bandRange[0].toString(), data.bandRange[1].toString())) : [];
231
+ const _userBands = data.loanExists ? (yield getAndFormatBands(provider, network, selectedMarket, data.bandRange[0].toString(), data.bandRange[1].toString(), blockNumber)) : [];
232
232
  const status = data.loanExists ? getStatusForUser(data.bandRange.map(b => b.toString()), marketData.activeBand, debtSupplied, collSupplied, healthPercent) : LlamaLendStatus.Nonexistant;
233
233
  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));
234
234
  return Object.assign(Object.assign(Object.assign(Object.assign({}, data), { debtAmount: assetAmountInEth(data.debtAmount.toString(), debtAsset), health,
@@ -239,9 +239,9 @@ export const _getLlamaLendUserData = (provider, network, address, selectedMarket
239
239
  loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N.toString(), assetsData,
240
240
  })), { userBands });
241
241
  });
242
- export const getLlamaLendUserData = (provider, network, address, selectedMarket, marketData) => __awaiter(void 0, void 0, void 0, function* () { return _getLlamaLendUserData(getViemProvider(provider, network), network, address, selectedMarket, marketData); });
243
- export const getLlamaLendFullPositionData = (provider, network, address, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
244
- const marketData = yield getLlamaLendGlobalData(provider, network, selectedMarket);
245
- const positionData = yield getLlamaLendUserData(provider, network, address, selectedMarket, marketData);
242
+ export const getLlamaLendUserData = (provider_1, network_1, address_1, selectedMarket_1, marketData_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, address_1, selectedMarket_1, marketData_1, ...args_1], void 0, function* (provider, network, address, selectedMarket, marketData, blockNumber = 'latest') { return _getLlamaLendUserData(getViemProvider(provider, network), network, address, selectedMarket, marketData, blockNumber); });
243
+ export const getLlamaLendFullPositionData = (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') {
244
+ const marketData = yield getLlamaLendGlobalData(provider, network, selectedMarket, blockNumber);
245
+ const positionData = yield getLlamaLendUserData(provider, network, address, selectedMarket, marketData, blockNumber);
246
246
  return positionData;
247
247
  });
@@ -3,12 +3,12 @@ import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances
3
3
  import { CdpData, CdpInfo, IlkInfo } from '../types';
4
4
  export declare const _getMakerAccountBalances: (provider: PublicClient, network: NetworkNumber, block: Blockish, addressMapping: boolean, cdpId: string, _managerAddress?: EthAddress) => Promise<PositionBalances>;
5
5
  export declare const getMakerAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, cdpId: string, _managerAddress?: EthAddress) => Promise<PositionBalances>;
6
- export declare const _getUserCdps: (provider: Client, network: NetworkNumber, userAddress: EthAddress) => Promise<CdpInfo[]>;
7
- export declare const getUserCdps: (provider: EthereumProvider, network: NetworkNumber, userAddress: EthAddress) => Promise<CdpInfo[]>;
8
- export declare const _getMakerIlksData: (provider: Client, network: NetworkNumber, ilkLabels: string[]) => Promise<Record<string, IlkInfo>>;
9
- export declare const getMakerIlksData: (provider: EthereumProvider, network: NetworkNumber, ilkLabels: string[]) => Promise<Record<string, IlkInfo>>;
6
+ export declare const _getUserCdps: (provider: Client, network: NetworkNumber, userAddress: EthAddress, blockNumber?: Blockish) => Promise<CdpInfo[]>;
7
+ export declare const getUserCdps: (provider: EthereumProvider, network: NetworkNumber, userAddress: EthAddress, blockNumber?: Blockish) => Promise<CdpInfo[]>;
8
+ export declare const _getMakerIlksData: (provider: Client, network: NetworkNumber, ilkLabels: string[], blockNumber?: Blockish) => Promise<Record<string, IlkInfo>>;
9
+ export declare const getMakerIlksData: (provider: EthereumProvider, network: NetworkNumber, ilkLabels: string[], blockNumber?: Blockish) => Promise<Record<string, IlkInfo>>;
10
10
  /**
11
11
  * @param ilkInfo optional precomputed ilk data (from `_getMakerIlksData`); when provided the per-ilk reads are skipped
12
12
  */
13
- export declare const _getMakerCdpData: (provider: Client, network: NetworkNumber, cdp: CdpInfo, ilkInfo?: IlkInfo) => Promise<CdpData>;
14
- export declare const getMakerCdpData: (provider: EthereumProvider, network: NetworkNumber, cdp: CdpInfo) => Promise<CdpData>;
13
+ export declare const _getMakerCdpData: (provider: Client, network: NetworkNumber, cdp: CdpInfo, ilkInfo?: IlkInfo, blockNumber?: Blockish) => Promise<CdpData>;
14
+ export declare const getMakerCdpData: (provider: EthereumProvider, network: NetworkNumber, cdp: CdpInfo, blockNumber?: Blockish) => Promise<CdpData>;
@@ -63,12 +63,12 @@ export const _getMakerAccountBalances = (provider, network, block, addressMappin
63
63
  return balances;
64
64
  });
65
65
  export const getMakerAccountBalances = (provider, network, block, addressMapping, cdpId, _managerAddress) => __awaiter(void 0, void 0, void 0, function* () { return _getMakerAccountBalances(getViemProvider(provider, network, { batch: { multicall: true } }), network, block, addressMapping, cdpId, _managerAddress); });
66
- export const _getUserCdps = (provider, network, userAddress) => __awaiter(void 0, void 0, void 0, function* () {
66
+ export const _getUserCdps = (provider_1, network_1, userAddress_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, userAddress_1, ...args_1], void 0, function* (provider, network, userAddress, blockNumber = 'latest') {
67
67
  if (!userAddress)
68
68
  return [];
69
69
  const mcdGetCdpsContract = McdGetCdpsContractViem(provider, network);
70
70
  const mcdCdpManagerAddress = getConfigContractAddress('McdCdpManager', network);
71
- const standardCdps = yield mcdGetCdpsContract.read.getCdpsAsc([mcdCdpManagerAddress, userAddress]);
71
+ const standardCdps = yield mcdGetCdpsContract.read.getCdpsAsc([mcdCdpManagerAddress, userAddress], setViemBlockNumber(blockNumber));
72
72
  const parsedStandardCdps = standardCdps[0].map((id, i) => ({
73
73
  id: parseInt(id.toString(), 10),
74
74
  ilk: standardCdps[2][i].toLowerCase(), // collateral type
@@ -80,36 +80,36 @@ export const _getUserCdps = (provider, network, userAddress) => __awaiter(void 0
80
80
  }));
81
81
  return parsedStandardCdps;
82
82
  });
83
- export const getUserCdps = (provider, network, userAddress) => __awaiter(void 0, void 0, void 0, function* () { return _getUserCdps(getViemProvider(provider, network), network, userAddress); });
84
- export const _getMakerIlksData = (provider, network, ilkLabels) => __awaiter(void 0, void 0, void 0, function* () {
83
+ export const getUserCdps = (provider_1, network_1, userAddress_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, userAddress_1, ...args_1], void 0, function* (provider, network, userAddress, blockNumber = 'latest') { return _getUserCdps(getViemProvider(provider, network), network, userAddress, blockNumber); });
84
+ export const _getMakerIlksData = (provider_1, network_1, ilkLabels_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, ilkLabels_1, ...args_1], void 0, function* (provider, network, ilkLabels, blockNumber = 'latest') {
85
85
  const vatContract = McdVatContractViem(provider, network);
86
86
  const spotterContract = McdSpotterContractViem(provider, network);
87
87
  const dogContract = McdDogContractViem(provider, network);
88
88
  const jugContract = McdJugContractViem(provider, network);
89
- const par = yield spotterContract.read.par();
89
+ const par = yield spotterContract.read.par(setViemBlockNumber(blockNumber));
90
90
  const ilksInfo = yield Promise.all(ilkLabels.map((ilkLabel) => __awaiter(void 0, void 0, void 0, function* () {
91
91
  const ilk = stringToBytes(ilkLabel);
92
92
  const [[_, mat], [artGlobal, rate, spot, line, dust], [duty], futureRate, chop,] = yield Promise.all([
93
- spotterContract.read.ilks([ilk]),
94
- vatContract.read.ilks([ilk]),
95
- jugContract.read.ilks([ilk]),
96
- jugContract.read.drip([ilk]),
97
- dogContract.read.chop([ilk]),
93
+ spotterContract.read.ilks([ilk], setViemBlockNumber(blockNumber)),
94
+ vatContract.read.ilks([ilk], setViemBlockNumber(blockNumber)),
95
+ jugContract.read.ilks([ilk], setViemBlockNumber(blockNumber)),
96
+ jugContract.read.drip([ilk], setViemBlockNumber(blockNumber)),
97
+ dogContract.read.chop([ilk], setViemBlockNumber(blockNumber)),
98
98
  ]);
99
99
  return parseCollateralInfo(ilk, par.toString(), mat.toString(), artGlobal.toString(), rate.toString(), spot.toString(), line.toString(), dust.toString(), duty.toString(), futureRate.toString(), chop.toString());
100
100
  })));
101
101
  return Object.fromEntries(ilksInfo.map((ilkInfo) => [ilkInfo.ilkLabel, ilkInfo]));
102
102
  });
103
- export const getMakerIlksData = (provider, network, ilkLabels) => __awaiter(void 0, void 0, void 0, function* () { return _getMakerIlksData(getViemProvider(provider, network, { batch: { multicall: true } }), network, ilkLabels); });
103
+ export const getMakerIlksData = (provider_1, network_1, ilkLabels_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, ilkLabels_1, ...args_1], void 0, function* (provider, network, ilkLabels, blockNumber = 'latest') { return _getMakerIlksData(getViemProvider(provider, network, { batch: { multicall: true } }), network, ilkLabels, blockNumber); });
104
104
  /**
105
105
  * @param ilkInfo optional precomputed ilk data (from `_getMakerIlksData`); when provided the per-ilk reads are skipped
106
106
  */
107
- export const _getMakerCdpData = (provider, network, cdp, ilkInfo) => __awaiter(void 0, void 0, void 0, function* () {
107
+ export const _getMakerCdpData = (provider_1, network_1, cdp_1, ilkInfo_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, cdp_1, ilkInfo_1, ...args_1], void 0, function* (provider, network, cdp, ilkInfo, blockNumber = 'latest') {
108
108
  const vatContract = McdVatContractViem(provider, network);
109
109
  const [[ink, art], coll, fetchedIlkInfo, collStakingApy,] = yield Promise.all([
110
- vatContract.read.urns([cdp.ilk, cdp.urn]),
111
- vatContract.read.gem([cdp.ilk, cdp.urn]),
112
- ilkInfo || _getMakerIlksData(provider, network, [cdp.ilkLabel]).then((ilks) => ilks[cdp.ilkLabel]),
110
+ vatContract.read.urns([cdp.ilk, cdp.urn], setViemBlockNumber(blockNumber)),
111
+ vatContract.read.gem([cdp.ilk, cdp.urn], setViemBlockNumber(blockNumber)),
112
+ ilkInfo || _getMakerIlksData(provider, network, [cdp.ilkLabel], blockNumber).then((ilks) => ilks[cdp.ilkLabel]),
113
113
  STAKING_ASSETS.includes(cdp.asset) ? getStakingApy(cdp.asset) : Promise.resolve('0'),
114
114
  ]);
115
115
  const collInfo = fetchedIlkInfo;
@@ -173,4 +173,4 @@ export const _getMakerCdpData = (provider, network, cdp, ilkInfo) => __awaiter(v
173
173
  incentiveUsd,
174
174
  };
175
175
  });
176
- export const getMakerCdpData = (provider, network, cdp) => __awaiter(void 0, void 0, void 0, function* () { return _getMakerCdpData(getViemProvider(provider, network), network, cdp); });
176
+ export const getMakerCdpData = (provider_1, network_1, cdp_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, cdp_1, ...args_1], void 0, function* (provider, network, cdp, blockNumber = 'latest') { return _getMakerCdpData(getViemProvider(provider, network), network, cdp, undefined, blockNumber); });
@@ -3,15 +3,15 @@ import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances
3
3
  import { MorphoBlueEarnData, MorphoBlueMarketData, MorphoBlueMarketInfo, MorphoBlueMarketRewards, MorphoBluePositionData } from '../types';
4
4
  export { MorphoBlueMerklOpportunityType, addMorphoBlueMerklOpportunitiesToMarketInfo, getMorphoBlueMerklOpportunities, addMorphoBlueMerklRewardsToMarketInfo, } from './merkl';
5
5
  export declare const addMorphoBlueRewardsToMarketInfo: (marketInfo: MorphoBlueMarketInfo, rewards: MorphoBlueMarketRewards) => MorphoBlueMarketInfo;
6
- export declare function _getMorphoBlueMarketData(provider: Client, network: NetworkNumber, selectedMarket: MorphoBlueMarketData): Promise<MorphoBlueMarketInfo>;
7
- export declare function _getMorphoBluePortfolioMarketData(provider: Client, network: NetworkNumber, selectedMarket: MorphoBlueMarketData): Promise<MorphoBlueMarketInfo>;
8
- export declare function getMorphoBlueMarketData(provider: EthereumProvider, network: NetworkNumber, selectedMarket: MorphoBlueMarketData): Promise<MorphoBlueMarketInfo>;
9
- export declare function getMorphoBluePortfolioMarketData(provider: EthereumProvider, network: NetworkNumber, selectedMarket: MorphoBlueMarketData): Promise<MorphoBlueMarketInfo>;
6
+ export declare function _getMorphoBlueMarketData(provider: Client, network: NetworkNumber, selectedMarket: MorphoBlueMarketData, blockNumber?: Blockish): Promise<MorphoBlueMarketInfo>;
7
+ export declare function _getMorphoBluePortfolioMarketData(provider: Client, network: NetworkNumber, selectedMarket: MorphoBlueMarketData, blockNumber?: Blockish): Promise<MorphoBlueMarketInfo>;
8
+ export declare function getMorphoBlueMarketData(provider: EthereumProvider, network: NetworkNumber, selectedMarket: MorphoBlueMarketData, blockNumber?: Blockish): Promise<MorphoBlueMarketInfo>;
9
+ export declare function getMorphoBluePortfolioMarketData(provider: EthereumProvider, network: NetworkNumber, selectedMarket: MorphoBlueMarketData, blockNumber?: Blockish): Promise<MorphoBlueMarketInfo>;
10
10
  export declare const getMorphoBluePositionDataWithMarketInfo: (data: MorphoBluePositionData, marketInfo: MorphoBlueMarketInfo) => MorphoBluePositionData;
11
11
  export declare const getMorphoEarnDataWithMarketInfo: (data: MorphoBlueEarnData, marketInfo: MorphoBlueMarketInfo) => MorphoBlueEarnData;
12
12
  export declare function getMorphoBlueMarketRewards(network: NetworkNumber, selectedMarket: MorphoBlueMarketData): Promise<MorphoBlueMarketRewards>;
13
13
  export declare const _getMorphoBlueAccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, selectedMarket: MorphoBlueMarketData) => Promise<PositionBalances>;
14
14
  export declare const getMorphoBlueAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, selectedMarket: MorphoBlueMarketData) => Promise<PositionBalances>;
15
- export declare function _getMorphoBlueAccountData(provider: Client, network: NetworkNumber, account: EthAddress, selectedMarket: MorphoBlueMarketData, marketInfo: MorphoBlueMarketInfo): Promise<MorphoBluePositionData>;
16
- export declare function getMorphoBlueAccountData(provider: EthereumProvider, network: NetworkNumber, account: EthAddress, selectedMarket: MorphoBlueMarketData, marketInfo: MorphoBlueMarketInfo): Promise<MorphoBluePositionData>;
17
- export declare function getMorphoEarn(provider: Client, network: NetworkNumber, account: EthAddress, selectedMarket: MorphoBlueMarketData, marketInfo: MorphoBlueMarketInfo): Promise<MorphoBlueEarnData>;
15
+ export declare function _getMorphoBlueAccountData(provider: Client, network: NetworkNumber, account: EthAddress, selectedMarket: MorphoBlueMarketData, marketInfo: MorphoBlueMarketInfo, blockNumber?: Blockish): Promise<MorphoBluePositionData>;
16
+ export declare function getMorphoBlueAccountData(provider: EthereumProvider, network: NetworkNumber, account: EthAddress, selectedMarket: MorphoBlueMarketData, marketInfo: MorphoBlueMarketInfo, blockNumber?: Blockish): Promise<MorphoBluePositionData>;
17
+ export declare function getMorphoEarn(provider: Client, network: NetworkNumber, account: EthAddress, selectedMarket: MorphoBlueMarketData, marketInfo: MorphoBlueMarketInfo, blockNumber?: Blockish): Promise<MorphoBlueEarnData>;