@1delta/margin-fetcher 0.0.181 → 0.0.182

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,197 @@
1
+ # @1delta/margin-fetcher
2
+
3
+ Multi-protocol lending data fetcher supporting Morpho Blue, Aave V2/V3, Compound V2/V3, Euler, Init, and Lista DAO. Provides public market data (rates, TVL, configs) and per-user position data (balances, shares, collateral) in a unified format.
4
+
5
+ ## How Morpho Blue Works
6
+
7
+ ### Protocol overview
8
+
9
+ Morpho Blue is an **isolated-market** lending protocol. Unlike pooled protocols (Aave, Compound) where all assets share a single pool, each Morpho market is a **standalone pair** defined by five parameters:
10
+
11
+ | Parameter | Description |
12
+ |-----------|-------------|
13
+ | `loanToken` | The asset that can be supplied and borrowed |
14
+ | `collateralToken` | The asset deposited as collateral |
15
+ | `oracle` | Price oracle for the pair |
16
+ | `irm` | Interest Rate Model contract |
17
+ | `lltv` | Liquidation Loan-To-Value ratio (18-decimal WAD) |
18
+
19
+ These five parameters are hashed into a `uniqueKey` (bytes32) that identifies the market on-chain.
20
+
21
+ ### Interest rate model
22
+
23
+ Morpho uses an **adaptive curve IRM** that adjusts rates based on utilization relative to a 90% target:
24
+
25
+ ```
26
+ utilization = totalBorrowAssets / totalSupplyAssets
27
+
28
+ If utilization > 90%: rateAtTarget increases over time (via exponential adjustment)
29
+ If utilization < 90%: rateAtTarget decreases over time
30
+
31
+ borrowRate = curve(rateAtTarget, utilization)
32
+ supplyRate = borrowRate * utilization * (1 - fee)
33
+ ```
34
+
35
+ The curve uses a steepness factor of 4x, meaning at full utilization the rate is 4x the rate-at-target. Rates are stored as per-second WAD values and compounded continuously.
36
+
37
+ Key constants:
38
+ - **Target utilization**: 90%
39
+ - **Curve steepness**: 4x
40
+ - **Min rate at target**: ~0.1% APY
41
+ - **Max rate at target**: ~200% APY
42
+ - **Adjustment speed**: 50x/year (exponential)
43
+
44
+ ### Share-based accounting
45
+
46
+ Positions are tracked via **shares** rather than raw assets. This allows interest to accrue without storage updates per-user:
47
+
48
+ ```
49
+ assets = shares * (totalAssets + 1) / (totalShares + VIRTUAL_SHARES)
50
+ ```
51
+
52
+ Where `VIRTUAL_SHARES = 1e6` prevents share inflation attacks.
53
+
54
+ ### Market data representation
55
+
56
+ Each Morpho market produces **two entries** in the normalized output:
57
+
58
+ 1. **Loan entry** — the borrowable asset
59
+ - Has `borrowingEnabled: true`, `collateralActive: false`
60
+ - Contains deposit/borrow APRs, total supply/debt, liquidity
61
+ - Rewards (MORPHO token incentives) attached here
62
+
63
+ 2. **Collateral entry** — the collateral asset
64
+ - Has `borrowingEnabled: false`, `collateralActive: true`
65
+ - LTV factors derived from the market's `lltv`
66
+ - No interest rates (collateral doesn't earn yield in Morpho)
67
+
68
+ ### Whitelisted vs unlisted markets
69
+
70
+ Morpho markets can be **whitelisted** (curated, visible in the Morpho UI) or **unlisted** (removed from curation). The `includeUnlistedMorphoMarkets` flag controls whether unlisted markets are fetched from the API. Unlisted markets are tagged with `isListed: false` on the `MorphoMarket` params.
71
+
72
+ ## Architecture
73
+
74
+ ### Data fetching strategy
75
+
76
+ The fetcher uses a **hybrid approach** that routes each lender to either an API or on-chain path:
77
+
78
+ ```
79
+ getLenderPublicDataAll(chainId, lenders, ...)
80
+ ├── lenderCanUseApi(lender, chainId)?
81
+ │ ├── YES → getLenderPublicDataViaApi() → Morpho GraphQL API
82
+ │ └── NO → getLenderPublicData() → On-chain multicall via Morpho Lens
83
+ └── Promise.all([onChain, api]) → merged result
84
+ ```
85
+
86
+ **Morpho Blue uses the API** on most chains. On-chain fallback is used for chains without API support (OP Mainnet, Soneium, Hemi, Berachain, Sei).
87
+
88
+ ### API path (GraphQL)
89
+
90
+ Fetches from `https://blue-api.morpho.org/graphql`:
91
+
92
+ ```
93
+ fetchMorphoMarkets(chainId, includeUnlisted)
94
+ → GraphQL query (paginated: 200/page, 2 pages for Ethereum mainnet)
95
+ → GetMarketsResponse
96
+ → convertMarketsToMorphoResponse()
97
+ → { [marketId]: MorphoGeneralPublicResponse }
98
+ ```
99
+
100
+ The API provides pre-computed APYs, USD values, and reward data. APY→APR conversion is applied during normalization.
101
+
102
+ ### On-chain path (Morpho Lens)
103
+
104
+ Uses a custom lens contract that returns compact binary-encoded market data:
105
+
106
+ ```
107
+ buildMorphoCall(chainId)
108
+ → multicall to MORPHO_LENS.getMarketDataCompact(morpho, marketHashes[])
109
+ → chunks of 50 markets per call (calldata size limit)
110
+ → raw bytes response
111
+
112
+ getMorphoMarketDataConverter()
113
+ → decodeMarkets(bytes) // 256-byte records → Market[]
114
+ → MathLib.getBorrowApy(...) // compute rates from rateAtTarget + utilization
115
+ → MathLib.getSupplyApy(...)
116
+ → { [marketId]: MorphoGeneralPublicResponse }
117
+ ```
118
+
119
+ #### Binary encoding (256 bytes per market)
120
+
121
+ ```
122
+ Offset Size Field
123
+ 0 20 loanToken (address)
124
+ 20 20 collateralToken (address)
125
+ 40 20 oracle (address)
126
+ 60 20 irm (address)
127
+ 80 16 lltv (uint128)
128
+ 96 32 price (uint256) — collateral/loan exchange rate in WAD
129
+ 128 32 rateAtTarget (uint256) — per-second interest rate
130
+ 160 16 totalSupplyAssets (uint128)
131
+ 176 16 totalSupplyShares (uint128)
132
+ 192 16 totalBorrowAssets (uint128)
133
+ 208 16 totalBorrowShares (uint128)
134
+ 224 16 lastUpdate (uint128) — timestamp
135
+ 240 16 fee (uint128)
136
+ ```
137
+
138
+ ### User data path
139
+
140
+ ```
141
+ buildMorphoUserCallWithLens(chainId, account, lender, marketIds)
142
+ → MORPHO_LENS.getUserDataCompact(marketHashes[], account, morpho)
143
+ → chunks of 100 markets per call
144
+
145
+ decodePackedMorphoUserDataset(hex)
146
+ → [uint16 count] + [130-byte records × count]
147
+ → BalanceInfo[] { index, supplyShares, borrowShares, supplyAssets, borrowAssets, collateral }
148
+
149
+ getMorphoUserDataConverterWithLens()
150
+ → map balances to market IDs via index
151
+ → separate loan positions (supply/borrow) from collateral positions
152
+ → format to UserData with USD values
153
+ ```
154
+
155
+ ## File structure
156
+
157
+ ```
158
+ src/lending/
159
+ ├── public-data/
160
+ │ ├── fetchLenderAll.ts # Hybrid router (API vs on-chain)
161
+ │ ├── fetchLender.ts # On-chain multicall dispatcher
162
+ │ ├── fetchLenderExt.ts # API dispatcher
163
+ │ └── morpho/
164
+ │ ├── fetchPublic.ts # GraphQL query + fetch logic
165
+ │ ├── convertPublic.ts # API response → normalized format
166
+ │ ├── publicCallBuild.ts # Morpho Lens call builder
167
+ │ ├── getMarketsFromChain.ts # On-chain response → normalized format
168
+ │ └── utils/
169
+ │ ├── evmParser.ts # Binary decoder (256-byte records)
170
+ │ ├── mathLib.ts # WAD math, rate calculations
171
+ │ └── parsers.ts # LTV parsing, number formatting
172
+ ├── user-data/
173
+ │ └── morpho/
174
+ │ ├── userCallBuild.ts # User position call builder
175
+ │ ├── decoder.ts # User data binary decoder
176
+ │ ├── userCallParse.ts # Balance → UserData conversion
177
+ │ ├── morphoLib.ts # Share ↔ asset conversion
178
+ │ └── types.ts # Parameter position enums
179
+ └── ...
180
+
181
+ src/types/lender/
182
+ └── morpho-types.ts # GetMarketsResponse, MorphoMarket, MorphoGeneralPublicResponse
183
+ ```
184
+
185
+ ## Lista DAO extension
186
+
187
+ Lista is a Morpho Blue fork with additional per-market fields. Uses a 357-byte binary record instead of 256:
188
+
189
+ | Extra field | Type | Description |
190
+ |-------------|------|-------------|
191
+ | `minLoan` | uint128 | Minimum loan amount |
192
+ | `hasWhitelist` | bool | Whether the market has access control |
193
+ | `loanProvider` | address | Yield source for loan token |
194
+ | `collateralProvider` | address | Yield source for collateral |
195
+ | `broker` | address | Authorized broker contract |
196
+
197
+ User data also includes per-market whitelist flags prepended before the balance records.
package/dist/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export type { SumerPositionInput, GroupAccumulator, } from './lending/margin/bas
16
16
  export type { LenderYieldComplete, LenderCrossPoolMeta, LenderToLenderCrossPoolMeta, CompoundV2Metadata, AaveMetadata, InitMetadata, EulerV2Metadata, ProtocolParams, } from './lending/user-data/utils/types';
17
17
  export { computeSumerWaterfall, buildSumerAccumulators, applyPositionDelta, } from './lending/margin/base/sumer/waterfall';
18
18
  export { computeSumerDepositDelta, computeSumerWithdrawDelta, computeSumerBorrowDelta, computeSumerRepayDelta, } from './lending/margin/base/sumer';
19
+ export { fetchEulerSubAccountIndexes, getSubAccountAddress, getSubAccountIndex, } from './lending/user-data/euler/userCallBuild';
19
20
  export { MorphoLensAbi } from '@1delta/abis';
20
21
  export { type PreparedCall, type RawRpcCall, type RawRpcBatch, type MulticallRpcBatch, createRawRpcCalls, createMulticallRpcCall, multicall3Abi, } from './utils/rpcCall';
21
22
  export { type RawRpcResponse, parseRawRpcResponses, parseRawRpcBatchResponses, parseMulticallRpcResponses, } from './utils/rpcParse';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -12089,7 +12089,7 @@ function convertMarketsToMorphoResponse(response, chainId, additionalYields = {
12089
12089
  state,
12090
12090
  whitelisted
12091
12091
  } = market;
12092
- if (collateralAsset && loanAsset && oracleAddress && oracleAddress !== zeroAddress) {
12092
+ if (collateralAsset && collateralAsset.symbol && loanAsset && loanAsset.symbol && oracleAddress && oracleAddress !== zeroAddress) {
12093
12093
  const m = "MORPHO_BLUE_" + uniqueKey.slice(2).toUpperCase();
12094
12094
  if (!data[m]) data[m] = { data: {} };
12095
12095
  const loanRewards = [];
@@ -18024,7 +18024,6 @@ var getLenderPublicDataViaApi = async (chainId, lenders, prices, additionalYield
18024
18024
  };
18025
18025
  function lenderCanUseApi(lender, chainId) {
18026
18026
  if (lender === Lender.MORPHO_BLUE) {
18027
- if (chainId === Chain.OP_MAINNET) return false;
18028
18027
  if (chainId === Chain.SONEIUM) return false;
18029
18028
  if (chainId === Chain.HEMI_NETWORK) return false;
18030
18029
  if (chainId === Chain.BERACHAIN) return false;
@@ -31757,6 +31756,6 @@ async function fetchTokenBalances(chainId, account, tokens, options = {}) {
31757
31756
  return parseTokenBalanceResult(rawResult, prepared.query);
31758
31757
  }
31759
31758
 
31760
- export { EMPTY_BALANCE, MORPHO_LENS, MaxParamThresholds, applyPositionDelta, attachPricesToFlashLiquidity, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, convertLenderUserDataResult, createMarketUid, createMulticallRpcCall, createRawRpcCalls, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, encodeBalanceFetcherCalldata, fetchDefillamaData, fetchDefillamaHistData, fetchFlashLiquidityForChain, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchMainPrices, fetchOraclePrices, fetchPendlePrices, fetchTokenBalances, fetchTokenMetadata, filterActiveLenders, filterLendersByProtocol, fuseLenderData, generateLendingPairs, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getHealthFactor, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getTopPairs, keysFromMaps, multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMergedResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTokenBalanceResult, positivePart2 as positivePart, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, selectAssetGroupPrices, unflattenLenderData };
31759
+ export { EMPTY_BALANCE, MORPHO_LENS, MaxParamThresholds, applyPositionDelta, attachPricesToFlashLiquidity, buildLoopResult, buildMorphoTypeCall, buildMorphoTypeUserCallWithLens, buildPortfolioTotals, buildSumerAccumulators, buildSummaries, calculateLeverage, calculateNetApr, calculateOverallNetApr, calculateWeightedAverage, computeBorrowDelta2 as computeBorrowDelta, computeCloseTradeDeltas, computeCollateralSwapDeltas, computeDebtSwapDeltas, computeDepositDelta2 as computeDepositDelta, computeEModeAnalysis, computeOpenTradeDeltas, computePostTradeMetrics, computeRepayDelta2 as computeRepayDelta, computeSumerBorrowDelta, computeSumerDepositDelta, computeSumerRepayDelta, computeSumerWaterfall, computeSumerWithdrawDelta, computeWithdrawDelta2 as computeWithdrawDelta, computeZapTradeDeltas, convertLenderUserDataResult, createMarketUid, createMulticallRpcCall, createRawRpcCalls, decodeListaMarkets, decodeMarkets, decodePackedListaUserDataset, decodePackedMorphoUserDataset, encodeBalanceFetcherCalldata, fetchDefillamaData, fetchDefillamaHistData, fetchEulerSubAccountIndexes, fetchFlashLiquidityForChain, fetchGeneralYields, fetchGeneralYieldsByMarketUid, fetchMainPrices, fetchOraclePrices, fetchPendlePrices, fetchTokenBalances, fetchTokenMetadata, filterActiveLenders, filterLendersByProtocol, fuseLenderData, generateLendingPairs, generateLendingPools, getAavesForChain, getAssetConfig, getBalanceForMarketUid, getBorrowCapacity, getHealthFactor, getLenderAssets, getLenderPublicData, getLenderPublicDataAll, getLenderPublicDataViaApi, getLenderUserDataMulti, getLenderUserDataResult, getLendersForChain, getMaxAmountOpen, getMergedUserData, getMorphoTypeMarketConverter, getSubAccountAddress, getSubAccountIndex, getTopPairs, keysFromMaps, multicall3Abi, nanTo, needsLenderApproval, needsTokenApproval, noOpResult, normalizeToBytes, parseBalanceFetcherResult, parseMergedResult, parseMulticallRpcResponses, parseRawRpcBatchResponses, parseRawRpcResponses, parseTokenBalanceResult, positivePart2 as positivePart, prepareLenderUserDataRpcCalls, prepareMergedMulticallParams, prepareMergedRpcCalls, prepareMulticallInputs, prepareTokenBalanceRpcCalls, selectAssetGroupPrices, unflattenLenderData };
31761
31760
  //# sourceMappingURL=index.js.map
31762
31761
  //# sourceMappingURL=index.js.map