@1delta/margin-fetcher 0.0.18 → 0.0.20

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 (126) hide show
  1. package/dist/abis/aave-v2/YLDR.d.ts.map +1 -1
  2. package/dist/abis/aave-v2/YLDR.js +176 -148
  3. package/dist/abis/aave-v3/YLDR.js +29 -29
  4. package/dist/abis/compound-v3/Comet.d.ts +0 -20
  5. package/dist/abis/compound-v3/Comet.d.ts.map +1 -1
  6. package/dist/abis/compound-v3/Comet.js +0 -25
  7. package/dist/assets/liquidityThresholds.d.ts +10 -0
  8. package/dist/assets/liquidityThresholds.d.ts.map +1 -1
  9. package/dist/assets/liquidityThresholds.js +9 -2
  10. package/dist/flash-liquidity/fetchLiquidity.d.ts +2 -2
  11. package/dist/flash-liquidity/fetchLiquidity.d.ts.map +1 -1
  12. package/dist/flash-liquidity/fetchLiquidity.js +85 -54
  13. package/dist/flash-liquidity/types.d.ts +1 -0
  14. package/dist/flash-liquidity/types.d.ts.map +1 -1
  15. package/dist/lending/aave-v3-type/publicCallBuild.d.ts +1 -1
  16. package/dist/lending/aave-v3-type/publicCallBuild.d.ts.map +1 -1
  17. package/dist/lending/aave-v3-type/publicCallBuild.js +46 -48
  18. package/dist/lending/aave-v3-type/publicCallParse.d.ts.map +1 -1
  19. package/dist/lending/aave-v3-type/publicCallParse.js +8 -2
  20. package/dist/lending/compound-v3/publicCallParse.d.ts.map +1 -1
  21. package/dist/lending/compound-v3/publicCallParse.js +8 -3
  22. package/dist/lending/fetchLender.js +3 -3
  23. package/dist/lending/morpho/convertPublic.js +1 -1
  24. package/dist/lending/user-data/abis.d.ts +20 -20
  25. package/dist/lending/user-data/compound-v3/userCallBuild.d.ts.map +1 -1
  26. package/dist/lending/user-data/compound-v3/userCallBuild.js +1 -7
  27. package/dist/lending/user-data/compound-v3/userCallParse.d.ts +2 -2
  28. package/dist/lending/user-data/compound-v3/userCallParse.d.ts.map +1 -1
  29. package/dist/lending/user-data/compound-v3/userCallParse.js +19 -20
  30. package/dist/lending/user-data/morpho/userCallBuild.d.ts.map +1 -1
  31. package/dist/lending/user-data/morpho/userCallBuild.js +6 -4
  32. package/dist/lending/user-data/types.js +2 -2
  33. package/dist/lending-pairs/computeLendingPairs.d.ts +10 -1
  34. package/dist/lending-pairs/computeLendingPairs.d.ts.map +1 -1
  35. package/dist/lending-pairs/computeLendingPairs.js +26 -22
  36. package/dist/prices/defillama/index.d.ts.map +1 -1
  37. package/dist/prices/defillama/index.js +162 -151
  38. package/dist/prices/index.d.ts +3 -2
  39. package/dist/prices/index.d.ts.map +1 -1
  40. package/dist/prices/index.js +3 -2
  41. package/dist/prices/main-prices/addresses/aaveOracles.d.ts +159 -143
  42. package/dist/prices/main-prices/addresses/aaveOracles.d.ts.map +1 -1
  43. package/dist/prices/main-prices/addresses/aaveOracles.js +276 -260
  44. package/dist/prices/main-prices/addresses/morpho.d.ts.map +1 -1
  45. package/dist/prices/main-prices/addresses/morpho.js +305 -0
  46. package/dist/prices/main-prices/fetchOracleData.d.ts.map +1 -1
  47. package/dist/prices/main-prices/fetchOracleData.js +25 -11
  48. package/dist/prices/pendle/fetchPendlePrices.d.ts +7 -0
  49. package/dist/prices/pendle/fetchPendlePrices.d.ts.map +1 -0
  50. package/dist/prices/pendle/fetchPendlePrices.js +148 -0
  51. package/dist/prices/pendle/index.d.ts +2 -0
  52. package/dist/prices/pendle/index.d.ts.map +1 -0
  53. package/dist/prices/pendle/index.js +1 -0
  54. package/dist/types/apiReturnType.d.ts +2 -0
  55. package/dist/types/apiReturnType.d.ts.map +1 -1
  56. package/dist/utils/index.d.ts +1 -3
  57. package/dist/utils/index.d.ts.map +1 -1
  58. package/dist/utils/index.js +10 -16
  59. package/dist/yields/index.d.ts.map +1 -1
  60. package/dist/yields/index.js +58 -33
  61. package/package.json +3 -6
  62. package/src/abis/aave-v2/YLDR.ts +177 -149
  63. package/src/abis/aave-v3/YLDR.ts +45 -45
  64. package/src/abis/compound-v3/Comet.ts +0 -25
  65. package/src/assets/liquidityThresholds.ts +22 -3
  66. package/src/flash-liquidity/fetchLiquidity.ts +298 -261
  67. package/src/flash-liquidity/types.ts +1 -0
  68. package/src/lending/aave-v3-type/publicCallBuild.ts +74 -68
  69. package/src/lending/aave-v3-type/publicCallParse.ts +8 -2
  70. package/src/lending/compound-v3/publicCallParse.ts +10 -3
  71. package/src/lending/fetchLender.ts +3 -3
  72. package/src/lending/morpho/convertPublic.ts +1 -1
  73. package/src/lending/user-data/compound-v3/userCallBuild.ts +1 -8
  74. package/src/lending/user-data/compound-v3/userCallParse.ts +39 -29
  75. package/src/lending/user-data/morpho/userCallBuild.ts +6 -4
  76. package/src/lending/user-data/types.ts +2 -2
  77. package/src/lending-pairs/computeLendingPairs.ts +423 -410
  78. package/src/prices/defillama/index.ts +233 -227
  79. package/src/prices/index.ts +3 -2
  80. package/src/prices/main-prices/addresses/aaveOracles.ts +292 -277
  81. package/src/prices/main-prices/addresses/morpho.ts +305 -0
  82. package/src/prices/main-prices/fetchOracleData.ts +33 -24
  83. package/src/prices/pendle/fetchPendlePrices.ts +208 -0
  84. package/src/prices/pendle/index.ts +1 -0
  85. package/src/types/apiReturnType.ts +42 -39
  86. package/src/utils/index.ts +11 -18
  87. package/src/yields/index.ts +219 -178
  88. package/test/flashLiquidity.test.ts +40 -0
  89. package/test/index.test.ts +101 -97
  90. package/test/lenderData.test.ts +18 -13254
  91. package/test/mainPriceMB.test.ts +1 -1
  92. package/test/mainPrices.test.ts +24 -19
  93. package/test/morpho.test.ts +1 -1
  94. package/test/morphoPrice.test.ts +1 -1
  95. package/test/userDataAave.test.ts +73 -0
  96. package/test/yields.test.ts +27 -0
  97. package/tsconfig.json +2 -1
  98. package/dist/abis/aave/AToken.d.ts +0 -526
  99. package/dist/abis/aave/AToken.d.ts.map +0 -1
  100. package/dist/abis/aave/AToken.js +0 -686
  101. package/dist/abis/aave/AavePoolV3.d.ts +0 -819
  102. package/dist/abis/aave/AavePoolV3.d.ts.map +0 -1
  103. package/dist/abis/aave/AavePoolV3.js +0 -1060
  104. package/dist/abis/init/Core.d.ts +0 -523
  105. package/dist/abis/init/Core.d.ts.map +0 -1
  106. package/dist/abis/init/Core.js +0 -681
  107. package/dist/abis/init/InitFlashAggregator.d.ts +0 -624
  108. package/dist/abis/init/InitFlashAggregator.d.ts.map +0 -1
  109. package/dist/abis/init/InitFlashAggregator.js +0 -795
  110. package/dist/abis/init/PosManager.d.ts +0 -802
  111. package/dist/abis/init/PosManager.d.ts.map +0 -1
  112. package/dist/abis/init/PosManager.js +0 -1055
  113. package/dist/abis/uniswap/FeeOnTransferDetector.d.ts +0 -102
  114. package/dist/abis/uniswap/FeeOnTransferDetector.d.ts.map +0 -1
  115. package/dist/abis/uniswap/FeeOnTransferDetector.js +0 -133
  116. package/dist/abis/uniswap/UniswapV2Pair.d.ts +0 -513
  117. package/dist/abis/uniswap/UniswapV2Pair.d.ts.map +0 -1
  118. package/dist/abis/uniswap/UniswapV2Pair.js +0 -659
  119. package/src/abis/aave/AToken.ts +0 -686
  120. package/src/abis/aave/AavePoolV3.ts +0 -1060
  121. package/src/abis/init/Core.ts +0 -681
  122. package/src/abis/init/InitFlashAggregator.ts +0 -795
  123. package/src/abis/init/PosManager.ts +0 -1055
  124. package/src/abis/uniswap/FeeOnTransferDetector.ts +0 -133
  125. package/src/abis/uniswap/UniswapV2Pair.ts +0 -659
  126. /package/test/{userdata.test.ts → userData.test.ts} +0 -0
@@ -1,13 +1,16 @@
1
- import { Lender } from "@1delta/asset-registry"
2
- import { Call } from "../../utils/multicall"
3
- import { getAaveAssets, getAaveTypePoolAddress, getAaveTypePoolDataProviderAddress } from "../../assets"
4
-
1
+ import { Lender } from '@1delta/asset-registry'
2
+ import { Call } from '../../utils/multicall'
3
+ import {
4
+ getAaveAssets,
5
+ getAaveTypePoolAddress,
6
+ getAaveTypePoolDataProviderAddress,
7
+ } from '../../assets'
8
+ import { isAaveV32Type } from '../../utils'
5
9
 
6
10
  export const AAVE_V3_EMODES = [0, 1, 2, 3, 4, 5, 6]
7
11
 
8
12
  function yldrBaseline(assetsToQuery: string[], providerAddress: string) {
9
-
10
- return assetsToQuery.flatMap(tk => [
13
+ return assetsToQuery.flatMap((tk) => [
11
14
  {
12
15
  address: providerAddress,
13
16
  name: 'getReserveData',
@@ -17,13 +20,16 @@ function yldrBaseline(assetsToQuery: string[], providerAddress: string) {
17
20
  address: providerAddress,
18
21
  name: 'getReserveConfigurationData',
19
22
  params: [tk],
20
- }
23
+ },
21
24
  ])
22
25
  }
23
26
 
24
-
25
-
26
- function aaveV3baseline(assetsToQuery: string[], providerAddress: string, poolAddress: string, legacy = false) {
27
+ function aaveV3baseline(
28
+ assetsToQuery: string[],
29
+ providerAddress: string,
30
+ poolAddress: string,
31
+ legacy = false,
32
+ ) {
27
33
  const callDecimals: Call = {
28
34
  address: providerAddress,
29
35
  name: 'getDebtCeilingDecimals',
@@ -36,7 +42,7 @@ function aaveV3baseline(assetsToQuery: string[], providerAddress: string, poolAd
36
42
  params: [],
37
43
  }
38
44
 
39
- const callsBase = assetsToQuery.flatMap(tk => [
45
+ const callsBase = assetsToQuery.flatMap((tk) => [
40
46
  {
41
47
  address: providerAddress,
42
48
  name: 'getReserveData',
@@ -62,64 +68,67 @@ function aaveV3baseline(assetsToQuery: string[], providerAddress: string, poolAd
62
68
  name: 'getDebtCeiling',
63
69
  params: [tk],
64
70
  },
65
- ...legacy ? [{
66
- address: providerAddress,
67
- name: 'getReserveEModeCategory',
68
- params: [tk],
69
- }
70
- ] : []
71
+ ...(legacy
72
+ ? [
73
+ {
74
+ address: providerAddress,
75
+ name: 'getReserveEModeCategory',
76
+ params: [tk],
77
+ },
78
+ ]
79
+ : []),
71
80
  ])
72
81
 
73
82
  return {
74
83
  callsBase,
75
84
  callReservesList,
76
- callDecimals
85
+ callDecimals,
77
86
  }
78
87
  }
79
88
 
80
- export const buildAaveV3StyleLenderReserveCall = (chainId: string, lender: Lender) => {
89
+ export const buildAaveV3StyleLenderReserveCall = (
90
+ chainId: string,
91
+ lender: Lender,
92
+ ) => {
81
93
  const providerAddress = getAaveTypePoolDataProviderAddress(chainId, lender)
82
94
  const assetsToQuery = getAaveAssets(chainId, lender)
83
95
  const poolAddress = getAaveTypePoolAddress(chainId, lender)
84
- switch (lender) {
85
- case Lender.AAVE_V3:
86
- case Lender.AAVE_V3_ETHER_FI:
87
- case Lender.AAVE_V3_PRIME: {
88
- const getEModeCategoryData: Call[] = AAVE_V3_EMODES.flatMap((eMode) => {
89
- return [
90
- {
91
- address: poolAddress,
92
- name: 'getEModeCategoryData',
93
- params: [eMode],
94
- },
95
- {
96
- address: poolAddress,
97
- name: 'getEModeCategoryBorrowableBitmap',
98
- params: [eMode],
99
- },
100
- {
101
- address: poolAddress,
102
- name: 'getEModeCategoryCollateralBitmap',
103
- params: [eMode],
104
- }
105
- ]
106
- })
107
-
108
- const {
109
- callDecimals,
110
- callReservesList,
111
- callsBase
112
- } = aaveV3baseline(assetsToQuery, providerAddress, poolAddress)
113
-
114
-
115
- const calls = [
116
- ...callsBase,
117
- ...getEModeCategoryData,
118
- callReservesList,
119
- callDecimals
96
+ if (isAaveV32Type(lender)) {
97
+ const getEModeCategoryData: Call[] = AAVE_V3_EMODES.flatMap((eMode) => {
98
+ return [
99
+ {
100
+ address: poolAddress,
101
+ name: 'getEModeCategoryData',
102
+ params: [eMode],
103
+ },
104
+ {
105
+ address: poolAddress,
106
+ name: 'getEModeCategoryBorrowableBitmap',
107
+ params: [eMode],
108
+ },
109
+ {
110
+ address: poolAddress,
111
+ name: 'getEModeCategoryCollateralBitmap',
112
+ params: [eMode],
113
+ },
120
114
  ]
121
- return calls
122
- }
115
+ })
116
+
117
+ const { callDecimals, callReservesList, callsBase } = aaveV3baseline(
118
+ assetsToQuery,
119
+ providerAddress,
120
+ poolAddress,
121
+ )
122
+
123
+ const calls = [
124
+ ...callsBase,
125
+ ...getEModeCategoryData,
126
+ callReservesList,
127
+ callDecimals,
128
+ ]
129
+ return calls
130
+ }
131
+ switch (lender) {
123
132
  case Lender.YLDR: {
124
133
  const calls = yldrBaseline(assetsToQuery, providerAddress)
125
134
  return calls
@@ -131,18 +140,15 @@ export const buildAaveV3StyleLenderReserveCall = (chainId: string, lender: Lende
131
140
  params: [eMode],
132
141
  }))
133
142
 
134
- const {
135
- callDecimals,
136
- callsBase
137
- } = aaveV3baseline(assetsToQuery, providerAddress, poolAddress, true)
143
+ const { callDecimals, callsBase } = aaveV3baseline(
144
+ assetsToQuery,
145
+ providerAddress,
146
+ poolAddress,
147
+ true,
148
+ )
138
149
 
139
-
140
- const calls = [
141
- ...callsBase,
142
- ...getEModeCategoryData,
143
- callDecimals
144
- ]
150
+ const calls = [...callsBase, ...getEModeCategoryData, callDecimals]
145
151
  return calls
146
152
  }
147
153
  }
148
- }
154
+ }
@@ -17,6 +17,7 @@ import {
17
17
  toOracleKey,
18
18
  } from '../../assets'
19
19
  import { GenericTokenList } from '../types'
20
+ import { isAaveV32Type } from '../../utils'
20
21
 
21
22
  export const getAaveV3ReservesDataConverter = (
22
23
  lender: Lender,
@@ -25,7 +26,7 @@ export const getAaveV3ReservesDataConverter = (
25
26
  additionalYields: AdditionalYields,
26
27
  tokenList: GenericTokenList = {},
27
28
  ): [(data: any[]) => AaveV3GeneralPublicResponse | undefined, number] => {
28
- if (lender.startsWith('AAVE_V3'))
29
+ if (isAaveV32Type(lender))
29
30
  return parseAave32(
30
31
  chainId,
31
32
  lender,
@@ -250,7 +251,11 @@ function isReserveEnabledOnBitmap(
250
251
  bitmap: bigint,
251
252
  reserveIndex: number,
252
253
  ): boolean {
253
- return ((bitmap >> BigInt(reserveIndex)) & 1n) !== 0n
254
+ try {
255
+ return ((bitmap >> BigInt(reserveIndex)) & 1n) !== 0n
256
+ } catch {
257
+ return false
258
+ }
254
259
  }
255
260
 
256
261
  export function parseYLDRCall(
@@ -399,6 +404,7 @@ function parseAave32(
399
404
  if (data.length !== expectedNumberOfCalls) {
400
405
  return undefined
401
406
  }
407
+
402
408
  const emodeDataResult = data.slice(
403
409
  assetsToQuery.length * 5,
404
410
  assetsToQuery.length * 5 + AAVE_V3_EMODES.length * 3,
@@ -53,6 +53,9 @@ export const getCompoundV3ReservesDataConverter = (
53
53
  const oracleKey =
54
54
  toOracleKey(assetMeta?.assetGroup) ??
55
55
  toGenericPriceKey(asset, chainId)
56
+
57
+ const totalUsd = Number(totals) * (prices[oracleKey] ?? 1)
58
+
56
59
  result[asset] = {
57
60
  poolId: asset,
58
61
  underlying: asset,
@@ -87,13 +90,15 @@ export const getCompoundV3ReservesDataConverter = (
87
90
  // debt and liquidity are zero
88
91
  totalDebt: 0,
89
92
  totalDebtUSD: 0,
90
- totalLiquidity: 0,
91
- totalLiquidityUSD: 0,
93
+ totalLiquidity: totals,
94
+ totalLiquidityUSD: totalUsd,
92
95
  // deposits are different outputs for base asset and others
93
96
  totalDeposits: totals,
94
- totalDepositsUSD: Number(totals) * (prices[oracleKey] ?? 1),
97
+ totalDepositsUSD: totalUsd,
95
98
  // rewards
96
99
  rewards: {},
100
+ isActive: true,
101
+ isFrozen: false,
97
102
  borrowingEnabled: false,
98
103
  }
99
104
  }
@@ -192,6 +197,8 @@ export const getCompoundV3ReservesDataConverter = (
192
197
  },
193
198
  },
194
199
  borrowingEnabled: true,
200
+ isActive: true,
201
+ isFrozen: false,
195
202
  stakingYield: additionalYields.intrinsicYields[oracleKeyBase] ?? 0,
196
203
  },
197
204
  }
@@ -2,7 +2,7 @@
2
2
  import { ProtocolDataProviderAbi } from '../abis/aave-v2/ProtocolDataProvider'
3
3
  import { IncentivesControllerAbi } from '../abis/lendle/IncentivesController'
4
4
  import { RewarderAbi } from '../abis/aurelius/Rewarder'
5
- import { UniswapV2PairAbi } from '../abis/uniswap/UniswapV2Pair'
5
+ import { UniswapV2PairAbi } from '../abis/oracle/UniswapV2Pair'
6
6
 
7
7
  // aave v3 style
8
8
  import { AavePoolV3UpgradedAbi } from '../abis/aave/AavePoolV3Upgraded'
@@ -18,7 +18,7 @@ import { IrgetterAbi } from '../abis/compound-v3/IrGetter'
18
18
 
19
19
  import {
20
20
  isAaveV2Type,
21
- isAaveV3Original,
21
+ isAaveV32Type,
22
22
  isAaveV3Type,
23
23
  isCompoundV3,
24
24
  isInit,
@@ -102,7 +102,7 @@ const getAbi = (lender: string) => {
102
102
  ...IncentivesControllerAbi,
103
103
  ]
104
104
 
105
- if (isAaveV3Original(lender))
105
+ if (isAaveV32Type(lender))
106
106
  return [...AavePoolV3UpgradedAbi, ...AaveV3ProtocolDataProviderAbi]
107
107
  if (lender === Lender.YLDR) return [...YLDRProtocolDataProviderAbi]
108
108
 
@@ -113,7 +113,7 @@ export function convertMarketsToMorphoResponse(
113
113
  totalDebtStable: 0,
114
114
  totalDebt: 0,
115
115
  totalLiquidity: 0,
116
- totalLiquidityUSD: 0,
116
+ totalLiquidityUSD: Number(state.collateralAssetsUsd),
117
117
  totalDepositsUSD: Number(state.collateralAssetsUsd),
118
118
  totalDebtStableUSD: 0,
119
119
  totalDebtUSD: 0,
@@ -1,6 +1,6 @@
1
1
  import { Lender } from "@1delta/asset-registry"
2
2
  import { Call } from "../../../utils/multicall"
3
- import { getComposerAddress, getLenderAssets } from "../../../utils"
3
+ import { getLenderAssets } from "../../../utils"
4
4
  import { getCompoundV3BaseAsset, getCompoundV3CometAddress, getCompoundV3CometRewardsAddress } from "./addresses"
5
5
 
6
6
  export const buildCompoundV3UserCall = (chainId: string, lender: Lender, account: string): Call[] => {
@@ -10,12 +10,6 @@ export const buildCompoundV3UserCall = (chainId: string, lender: Lender, account
10
10
  const assets = getLenderAssets(chainId, lender)
11
11
  const assetsNoBase = assets.filter(a => a !== baseAsset)
12
12
 
13
- const allowedCall = {
14
- address: cometContractAddress,
15
- name: 'isAllowed',
16
- params: [account, getComposerAddress(chainId)],
17
- }
18
-
19
13
  const baseCalls = [
20
14
  {
21
15
  address: cometContractAddress,
@@ -45,7 +39,6 @@ export const buildCompoundV3UserCall = (chainId: string, lender: Lender, account
45
39
  const calls = [
46
40
  ...callsNonBase,
47
41
  ...baseCalls,
48
- allowedCall,
49
42
  callEarnedBalances
50
43
  ]
51
44
  return calls
@@ -1,10 +1,15 @@
1
- import { Lender } from "@1delta/asset-registry"
2
- import { CompoundV3UserReserveResponse } from "../types"
3
- import { getAssetMeta, getCompoundV3Assets, toGenericPriceKey, toOracleKey } from "../../../assets"
4
- import { getCompoundV3BaseAsset } from "./addresses"
5
- import { parseRawAmount } from "../../../utils/parsing"
6
- import { Asset as SupportedAssets } from "@1delta/asset-registry"
7
- import { createBaseTypeUserState } from "../utils"
1
+ import { Lender } from '@1delta/asset-registry'
2
+ import { CompoundV3UserReserveResponse } from '../types'
3
+ import {
4
+ getAssetMeta,
5
+ getCompoundV3Assets,
6
+ toGenericPriceKey,
7
+ toOracleKey,
8
+ } from '../../../assets'
9
+ import { getCompoundV3BaseAsset } from './addresses'
10
+ import { parseRawAmount } from '../../../utils/parsing'
11
+ import { Asset as SupportedAssets } from '@1delta/asset-registry'
12
+ import { createBaseTypeUserState } from '../utils'
8
13
 
9
14
  export const getCompoundV3UserDataConverter = (
10
15
  lender: Lender,
@@ -12,21 +17,18 @@ export const getCompoundV3UserDataConverter = (
12
17
  account: string,
13
18
  prices: { [asset: string]: number },
14
19
  pricesHist: { [asset: string]: number },
15
- lenderData: any
20
+ lenderData: any,
16
21
  ): [(data: any[]) => CompoundV3UserReserveResponse | undefined, number] => {
17
-
18
22
  const assetAddresses = getCompoundV3Assets(chainId, lender)
19
23
  const baseAsset = getCompoundV3BaseAsset(lender, chainId).baseAsset
20
- const assetsNoBase = assetAddresses.filter(a => a !== baseAsset)
21
- const expectedNumberOfCalls = assetsNoBase.length + 2 + 1 + 1
24
+ const assetsNoBase = assetAddresses.filter((a) => a !== baseAsset)
25
+ const expectedNumberOfCalls = assetsNoBase.length + 2 + 1
22
26
  return [
23
27
  (data: any[]) => {
24
28
  if (data.length !== expectedNumberOfCalls) {
25
29
  return undefined
26
30
  }
27
31
 
28
- const isAllowed = Boolean(data[expectedNumberOfCalls - 2])
29
-
30
32
  let totalDebt24h = 0
31
33
  let totalDeposits24h = 0
32
34
 
@@ -36,9 +38,11 @@ export const getCompoundV3UserDataConverter = (
36
38
  const assetMeta = getAssetMeta(chainId, asset)
37
39
  const decimals = assetMeta?.decimals ?? 18
38
40
  const depositsRaw = data[i][0]?.toString()
39
- if(depositsRaw === "0") continue;
41
+ if (depositsRaw === '0') continue
40
42
  const deposits = parseRawAmount(depositsRaw, decimals)
41
- const key = toOracleKey(assetMeta?.assetGroup) ?? toGenericPriceKey(asset, chainId)
43
+ const key =
44
+ toOracleKey(assetMeta?.assetGroup) ??
45
+ toGenericPriceKey(asset, chainId)
42
46
  const price = prices[key] ?? 1
43
47
 
44
48
  const priceHist = pricesHist?.[key] ?? price
@@ -52,14 +56,13 @@ export const getCompoundV3UserDataConverter = (
52
56
  deposits,
53
57
  depositsUSD: Number(deposits) * price,
54
58
  debtStableUSD: 0,
55
- debt: "0",
56
- debtStable: "0",
59
+ debt: '0',
60
+ debtStable: '0',
57
61
  debtUSD: 0,
58
62
  collateralActive: true,
59
63
  // user depos raw
60
64
  depositsRaw,
61
65
  // flag for allowance
62
- isAllowed,
63
66
  }
64
67
  }
65
68
 
@@ -69,7 +72,9 @@ export const getCompoundV3UserDataConverter = (
69
72
  const baseDecimals = baseMeta.decimals ?? 18
70
73
  const deposits = parseRawAmount(depositsRaw, baseDecimals)
71
74
  const debt = parseRawAmount(debtRaw, baseDecimals)
72
- const oracleKeyBase = toOracleKey(baseMeta?.assetGroup) ?? toGenericPriceKey(baseMeta.baseAsset, chainId)
75
+ const oracleKeyBase =
76
+ toOracleKey(baseMeta?.assetGroup) ??
77
+ toGenericPriceKey(baseMeta.baseAsset, chainId)
73
78
  const priceBase = prices[oracleKeyBase]
74
79
  const priceBaseHist = pricesHist?.[oracleKeyBase] ?? priceBase
75
80
 
@@ -86,22 +91,22 @@ export const getCompoundV3UserDataConverter = (
86
91
  depositsUSD: Number(deposits) * priceBase,
87
92
  debtUSD: Number(debt) * priceBase,
88
93
  // populate values for totals
89
- debtStable: "0",
94
+ debtStable: '0',
90
95
  debtStableUSD: 0,
91
96
  collateralActive: true,
92
97
  // user depos raw
93
98
  depositsRaw,
94
99
  // flag for allowance
95
- isAllowed,
96
100
  },
97
101
  }
98
102
 
99
-
100
103
  // the result is an array: [tokenAddress, owedAmount] (tokenAddress should be always COMP)
101
104
  // so we take [1] to get the owedAmount
102
105
  const earnedBalances = data[expectedNumberOfCalls - 1]
103
106
 
104
- const compRewards = Number(parseRawAmount(earnedBalances?.owed?.toString(), 18))
107
+ const compRewards = Number(
108
+ parseRawAmount(earnedBalances?.owed?.toString(), 18),
109
+ )
105
110
  const payload = {
106
111
  lendingPositions: { [0]: { ...result, ...resultBase } },
107
112
  chainId,
@@ -109,18 +114,23 @@ export const getCompoundV3UserDataConverter = (
109
114
  rewards: {
110
115
  [SupportedAssets.COMP]: {
111
116
  totalRewards: compRewards,
112
- claimableRewards: compRewards
113
- }
117
+ claimableRewards: compRewards,
118
+ },
114
119
  },
115
- account
120
+ account,
116
121
  }
117
122
 
118
- const userData = createBaseTypeUserState(payload, lenderData, totalDeposits24h, totalDebt24h)
123
+ const userData = createBaseTypeUserState(
124
+ payload,
125
+ lenderData,
126
+ totalDeposits24h,
127
+ totalDebt24h,
128
+ )
119
129
  return {
120
130
  ...payload,
121
- ...userData
131
+ ...userData,
122
132
  }
123
133
  },
124
134
  expectedNumberOfCalls,
125
135
  ]
126
- }
136
+ }
@@ -7,6 +7,8 @@ const MORPHO_LENS: { [c: string]: string } = {
7
7
  [Chain.POLYGON_MAINNET]: '0x105eb87D2b3127f43B1b4C0F125dbEb0EDF3d6C6',
8
8
  [Chain.OP_MAINNET]: '0xd184c5315B728c1C990f59dDD275c8155f8e255c',
9
9
  [Chain.ARBITRUM_ONE]: '0xF64F862Fb7D687411585e06C08711B612e156530',
10
+ [Chain.KATANA]: '0xcB6Eb8df68153cebF60E1872273Ef52075a5C297',
11
+ [Chain.HYPEREVM]: '0xCe434378adacC51d54312c872113D687Ac19B516',
10
12
  }
11
13
 
12
14
  const getBaseMorphoCalls = (
@@ -15,18 +17,18 @@ const getBaseMorphoCalls = (
15
17
  account: string,
16
18
  marketsToQuery: string[],
17
19
  ) => {
18
- return marketsToQuery.flatMap(id => [
20
+ return marketsToQuery.flatMap((id) => [
19
21
  {
20
22
  // @ts-ignore
21
23
  address: MORPHO_BLUE_POOL_DATA[lender][chainId],
22
24
  name: 'position',
23
- params: ["0x" + id.split("_")[1], account],
25
+ params: ['0x' + id.split('_')[1], account],
24
26
  },
25
27
  {
26
28
  // @ts-ignore
27
29
  address: MORPHO_BLUE_POOL_DATA[lender][chainId],
28
30
  name: 'market',
29
- params: ["0x" + id.split("_")[1]],
31
+ params: ['0x' + id.split('_')[1]],
30
32
  },
31
33
  ])
32
34
  }
@@ -54,7 +56,7 @@ export const buildMorphoUserCallWithLens = (
54
56
  address: MORPHO_LENS[chainId],
55
57
  name: 'getUserDataCompact',
56
58
  params: [
57
- marketsInChunk.map(a=> a.replace("MORPHO_BLUE_", "0x")),
59
+ marketsInChunk.map((a) => a.replace('MORPHO_BLUE_', '0x')),
58
60
  account,
59
61
  // @ts-ignore
60
62
  MORPHO_BLUE_POOL_DATA[lender][chainId],
@@ -16,8 +16,8 @@ export interface LenderUserQuery {
16
16
 
17
17
  /** Filter all morphos into one for querying */
18
18
  export function organizeUserQueries(queries: LenderUserQuery[]) {
19
- const morphos = queries.filter((q) => q.lender.startsWith('MORPHO_BLUE'))
20
- const nonMorphos = queries.filter((q) => !q.lender.startsWith('MORPHO_BLUE'))
19
+ const morphos = queries.filter((q) => q.lender?.startsWith('MORPHO_BLUE'))
20
+ const nonMorphos = queries.filter((q) => !q.lender?.startsWith('MORPHO_BLUE'))
21
21
  const morphosCollapsed = {
22
22
  lender: Lender.MORPHO_BLUE,
23
23
  account: queries[0].account,