@moonwell-fi/moonwell-sdk 0.10.3 → 0.10.5
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/CHANGELOG.md +6 -0
- package/_cjs/actions/core/markets/common.js +6 -6
- package/_cjs/actions/core/markets/common.js.map +1 -1
- package/_cjs/actions/core/markets/getMarketSnapshots.js +8 -0
- package/_cjs/actions/core/markets/getMarketSnapshots.js.map +1 -1
- package/_cjs/actions/lunar-indexer-transformers.js +2 -0
- package/_cjs/actions/lunar-indexer-transformers.js.map +1 -1
- package/_cjs/actions/morpho/markets/common.js +3 -2
- package/_cjs/actions/morpho/markets/common.js.map +1 -1
- package/_cjs/actions/morpho/markets/getMarketSnapshots.js +6 -0
- package/_cjs/actions/morpho/markets/getMarketSnapshots.js.map +1 -1
- package/_cjs/actions/morpho/markets/lunarIndexerTransform.js +4 -0
- package/_cjs/actions/morpho/markets/lunarIndexerTransform.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_esm/actions/core/markets/common.js +12 -10
- package/_esm/actions/core/markets/common.js.map +1 -1
- package/_esm/actions/core/markets/getMarketSnapshots.js +8 -0
- package/_esm/actions/core/markets/getMarketSnapshots.js.map +1 -1
- package/_esm/actions/lunar-indexer-transformers.js +2 -0
- package/_esm/actions/lunar-indexer-transformers.js.map +1 -1
- package/_esm/actions/morpho/markets/common.js +3 -2
- package/_esm/actions/morpho/markets/common.js.map +1 -1
- package/_esm/actions/morpho/markets/getMarketSnapshots.js +6 -0
- package/_esm/actions/morpho/markets/getMarketSnapshots.js.map +1 -1
- package/_esm/actions/morpho/markets/lunarIndexerTransform.js +4 -0
- package/_esm/actions/morpho/markets/lunarIndexerTransform.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_types/actions/core/markets/common.d.ts.map +1 -1
- package/_types/actions/core/markets/getMarketSnapshots.d.ts.map +1 -1
- package/_types/actions/lunar-indexer-transformers.d.ts.map +1 -1
- package/_types/actions/morpho/markets/getMarketSnapshots.d.ts +2 -0
- package/_types/actions/morpho/markets/getMarketSnapshots.d.ts.map +1 -1
- package/_types/actions/morpho/markets/lunarIndexerTransform.d.ts +2 -0
- package/_types/actions/morpho/markets/lunarIndexerTransform.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/types/market.d.ts +2 -0
- package/_types/types/market.d.ts.map +1 -1
- package/actions/core/markets/common.ts +14 -11
- package/actions/core/markets/getMarketSnapshots.ts +9 -0
- package/actions/lunar-indexer-transformers.ts +2 -0
- package/actions/morpho/markets/common.ts +3 -2
- package/actions/morpho/markets/getMarketSnapshots.ts +23 -0
- package/actions/morpho/markets/lunarIndexerTransform.ts +11 -0
- package/errors/version.ts +1 -1
- package/package.json +1 -1
- package/types/market.ts +2 -0
|
@@ -236,9 +236,10 @@ export const getMarketsData = async (environment: Environment) => {
|
|
|
236
236
|
: tokenPrice;
|
|
237
237
|
|
|
238
238
|
if (price) {
|
|
239
|
-
//
|
|
240
|
-
// placeholder when there are no active borrow incentives
|
|
241
|
-
|
|
239
|
+
// On-chain contracts use borrowIncentivesPerSec=1 (1 wei) as a
|
|
240
|
+
// placeholder when there are no active borrow incentives, because
|
|
241
|
+
// setting it to 0 triggers a known smart contract bug. Treat as zero.
|
|
242
|
+
if (borrowIncentivesPerSec === 1n) {
|
|
242
243
|
borrowIncentivesPerSec = 0n;
|
|
243
244
|
}
|
|
244
245
|
|
|
@@ -634,13 +635,19 @@ async function fetchMarketsFromLunar(
|
|
|
634
635
|
let supplyApr: number;
|
|
635
636
|
let borrowApr: number;
|
|
636
637
|
|
|
638
|
+
// On-chain contracts use borrowIncentivesPerSec=1 (1 wei) as a
|
|
639
|
+
// placeholder when there are no active borrow incentives, because
|
|
640
|
+
// setting it to 0 triggers a known smart contract bug. Treat as zero.
|
|
641
|
+
const isBorrowPlaceholder =
|
|
642
|
+
BigInt(incentive.borrowIncentivesPerSec) === 1n;
|
|
643
|
+
|
|
637
644
|
if (
|
|
638
645
|
incentive.priceUsd !== null &&
|
|
639
646
|
incentive.supplyApr !== null &&
|
|
640
647
|
incentive.borrowApr !== null
|
|
641
648
|
) {
|
|
642
649
|
supplyApr = Number(incentive.supplyApr);
|
|
643
|
-
borrowApr = -Number(incentive.borrowApr);
|
|
650
|
+
borrowApr = isBorrowPlaceholder ? 0 : -Number(incentive.borrowApr);
|
|
644
651
|
} else {
|
|
645
652
|
const isGovernanceToken =
|
|
646
653
|
token.symbol === environment.custom?.governance?.token;
|
|
@@ -656,15 +663,11 @@ async function fetchMarketsFromLunar(
|
|
|
656
663
|
continue;
|
|
657
664
|
}
|
|
658
665
|
|
|
659
|
-
|
|
666
|
+
const borrowIncentivesPerSec = isBorrowPlaceholder
|
|
667
|
+
? 0n
|
|
668
|
+
: BigInt(incentive.borrowIncentivesPerSec);
|
|
660
669
|
const supplyIncentivesPerSec = BigInt(incentive.supplyIncentivesPerSec);
|
|
661
670
|
|
|
662
|
-
// USDC on-chain returns borrowIncentivesPerSec=1 (1 wei) as a
|
|
663
|
-
// placeholder when there are no active borrow incentives. Treat as zero.
|
|
664
|
-
if (token.symbol === "USDC" && borrowIncentivesPerSec === 1n) {
|
|
665
|
-
borrowIncentivesPerSec = 0n;
|
|
666
|
-
}
|
|
667
|
-
|
|
668
671
|
const supplyRewardsPerDayUsd =
|
|
669
672
|
perDay(new Amount(supplyIncentivesPerSec, token.decimals).value) *
|
|
670
673
|
price;
|
|
@@ -326,6 +326,8 @@ async function fetchCoreMarketSnapshotsFromPonder(
|
|
|
326
326
|
totalBorrowsUsd: borrowUsd,
|
|
327
327
|
totalLiquidity: liquidity,
|
|
328
328
|
totalLiquidityUsd: liquidityUsd,
|
|
329
|
+
totalReallocatableLiquidity: 0,
|
|
330
|
+
totalReallocatableLiquidityUsd: 0,
|
|
329
331
|
baseSupplyApy: point.baseSupplyApy,
|
|
330
332
|
baseBorrowApy: point.baseBorrowApy,
|
|
331
333
|
collateralTokenPrice: price,
|
|
@@ -552,12 +554,17 @@ export async function fetchIsolatedMarketSnapshots(
|
|
|
552
554
|
collateralTokenPrice > 0
|
|
553
555
|
? snapshot.totalLiquidityUsd / collateralTokenPrice
|
|
554
556
|
: snapshot.totalLiquidity;
|
|
557
|
+
const totalReallocatableLiquidity =
|
|
558
|
+
collateralTokenPrice > 0
|
|
559
|
+
? snapshot.totalReallocatableLiquidityUsd / collateralTokenPrice
|
|
560
|
+
: snapshot.totalReallocatableLiquidity;
|
|
555
561
|
|
|
556
562
|
return {
|
|
557
563
|
...snapshot,
|
|
558
564
|
collateralTokenPrice,
|
|
559
565
|
totalSupply,
|
|
560
566
|
totalLiquidity,
|
|
567
|
+
totalReallocatableLiquidity,
|
|
561
568
|
};
|
|
562
569
|
});
|
|
563
570
|
}
|
|
@@ -790,6 +797,8 @@ async function fetchIsolatedMarketSnapshotsFromBlueApi(
|
|
|
790
797
|
totalSupplyUsd: Number(supplyAssetsUsd.y),
|
|
791
798
|
totalLiquidity,
|
|
792
799
|
totalLiquidityUsd: Number(liquidityAssetsUsd.y),
|
|
800
|
+
totalReallocatableLiquidity: 0,
|
|
801
|
+
totalReallocatableLiquidityUsd: 0,
|
|
793
802
|
baseSupplyApy: supplyApy.y,
|
|
794
803
|
baseBorrowApy: borrowApy.y,
|
|
795
804
|
loanTokenPrice,
|
|
@@ -40,6 +40,8 @@ export function transformMarketSnapshot(
|
|
|
40
40
|
totalBorrowsUsd: Number(lunar.totalBorrowsUSD),
|
|
41
41
|
totalLiquidity: Number(lunar.totalLiquidity),
|
|
42
42
|
totalLiquidityUsd: Number(lunar.totalLiquidityUSD),
|
|
43
|
+
totalReallocatableLiquidity: 0,
|
|
44
|
+
totalReallocatableLiquidityUsd: 0,
|
|
43
45
|
baseSupplyApy: Number(lunar.baseSupplyApy),
|
|
44
46
|
baseBorrowApy: Number(lunar.baseBorrowApy),
|
|
45
47
|
timestamp: Number(lunar.timestamp) * 1000, // Convert unix timestamp to milliseconds
|
|
@@ -718,12 +718,13 @@ async function getMorphoMarketRewards(
|
|
|
718
718
|
|
|
719
719
|
if (result) {
|
|
720
720
|
const markets = result.markets.items.map((item) => {
|
|
721
|
+
const loanAssetDecimals = item.loanAsset.decimals;
|
|
721
722
|
const mapping: GetMorphoMarketsRewardsReturnType = {
|
|
722
723
|
chainId: item.morphoBlue.chain.id,
|
|
723
724
|
marketId: item.uniqueKey,
|
|
724
725
|
reallocatableLiquidityAssets: new Amount(
|
|
725
726
|
BigInt(item.reallocatableLiquidityAssets),
|
|
726
|
-
|
|
727
|
+
loanAssetDecimals,
|
|
727
728
|
),
|
|
728
729
|
// Note: The Morpho GraphQL API may return null for collateralAssets and
|
|
729
730
|
// collateralAssetsUsd for markets with no collateral deposited or during data sync.
|
|
@@ -738,7 +739,7 @@ async function getMorphoMarketRewards(
|
|
|
738
739
|
collateralAssetsUsd: item.state.collateralAssetsUsd ?? null,
|
|
739
740
|
publicAllocatorSharedLiquidity: item.publicAllocatorSharedLiquidity.map(
|
|
740
741
|
(item) => ({
|
|
741
|
-
assets: Number(item.assets),
|
|
742
|
+
assets: Number(item.assets) / 10 ** loanAssetDecimals,
|
|
742
743
|
vault: {
|
|
743
744
|
address: item.vault.address,
|
|
744
745
|
name: item.vault.name,
|
|
@@ -16,9 +16,11 @@ export type MarketSnapshot = {
|
|
|
16
16
|
totalSupplyAssets: Amount;
|
|
17
17
|
totalBorrowAssets: Amount;
|
|
18
18
|
totalLiquidity: Amount;
|
|
19
|
+
totalReallocatableLiquidity: Amount;
|
|
19
20
|
totalSupplyAssetsUsd: number;
|
|
20
21
|
totalBorrowAssetsUsd: number;
|
|
21
22
|
totalLiquidityUsd: number;
|
|
23
|
+
totalReallocatableLiquidityUsd: number;
|
|
22
24
|
loanTokenPrice: number;
|
|
23
25
|
collateralTokenPrice: number;
|
|
24
26
|
supplyApy: number;
|
|
@@ -105,9 +107,16 @@ export async function getMarketSnapshots<
|
|
|
105
107
|
BigInt(Math.round(s.totalLiquidity * 10 ** loanToken.decimals)),
|
|
106
108
|
loanToken.decimals,
|
|
107
109
|
),
|
|
110
|
+
totalReallocatableLiquidity: new Amount(
|
|
111
|
+
BigInt(
|
|
112
|
+
Math.round(s.totalReallocatableLiquidity * 10 ** loanToken.decimals),
|
|
113
|
+
),
|
|
114
|
+
loanToken.decimals,
|
|
115
|
+
),
|
|
108
116
|
totalSupplyAssetsUsd: s.totalSupplyUsd,
|
|
109
117
|
totalBorrowAssetsUsd: s.totalBorrowsUsd,
|
|
110
118
|
totalLiquidityUsd: s.totalLiquidityUsd,
|
|
119
|
+
totalReallocatableLiquidityUsd: s.totalReallocatableLiquidityUsd,
|
|
111
120
|
loanTokenPrice: s.loanTokenPrice,
|
|
112
121
|
collateralTokenPrice: s.collateralTokenPrice,
|
|
113
122
|
supplyApy: s.baseSupplyApy,
|
|
@@ -181,15 +190,29 @@ export async function getMarketSnapshots<
|
|
|
181
190
|
loanToken.decimals,
|
|
182
191
|
);
|
|
183
192
|
|
|
193
|
+
const totalReallocatableLiquidity = new Amount(
|
|
194
|
+
BigInt(
|
|
195
|
+
Math.floor(
|
|
196
|
+
Number.parseFloat(snapshot.totalReallocatableLiquidity ?? "0") *
|
|
197
|
+
10 ** loanToken.decimals,
|
|
198
|
+
),
|
|
199
|
+
),
|
|
200
|
+
loanToken.decimals,
|
|
201
|
+
);
|
|
202
|
+
|
|
184
203
|
return {
|
|
185
204
|
timestamp: snapshot.timestamp,
|
|
186
205
|
blockNumber: BigInt(snapshot.blockNumber),
|
|
187
206
|
totalSupplyAssets,
|
|
188
207
|
totalBorrowAssets,
|
|
189
208
|
totalLiquidity,
|
|
209
|
+
totalReallocatableLiquidity,
|
|
190
210
|
totalSupplyAssetsUsd: Number.parseFloat(snapshot.totalSupplyAssetsUsd),
|
|
191
211
|
totalBorrowAssetsUsd: Number.parseFloat(snapshot.totalBorrowAssetsUsd),
|
|
192
212
|
totalLiquidityUsd: Number.parseFloat(snapshot.totalLiquidityUsd),
|
|
213
|
+
totalReallocatableLiquidityUsd: Number.parseFloat(
|
|
214
|
+
snapshot.totalReallocatableLiquidityUsd ?? "0",
|
|
215
|
+
),
|
|
193
216
|
loanTokenPrice: Number.parseFloat(snapshot.loanTokenPrice),
|
|
194
217
|
collateralTokenPrice: Number.parseFloat(snapshot.collateralTokenPrice),
|
|
195
218
|
supplyApy: Number.parseFloat(snapshot.supplyApy),
|
|
@@ -82,6 +82,8 @@ export type LunarIndexerMarketSnapshot = {
|
|
|
82
82
|
totalSupplyAssetsUsd: string;
|
|
83
83
|
totalBorrowAssetsUsd: string;
|
|
84
84
|
totalLiquidityUsd: string;
|
|
85
|
+
totalReallocatableLiquidity?: string;
|
|
86
|
+
totalReallocatableLiquidityUsd?: string;
|
|
85
87
|
loanTokenPrice: string;
|
|
86
88
|
collateralTokenPrice: string;
|
|
87
89
|
supplyApy: string;
|
|
@@ -125,6 +127,13 @@ export function transformIsolatedMarketSnapshotFromIndexer(
|
|
|
125
127
|
? totalLiquidityUsd / collateralTokenPrice
|
|
126
128
|
: Number.parseFloat(snapshot.totalLiquidity);
|
|
127
129
|
|
|
130
|
+
const totalReallocatableLiquidity = Number.parseFloat(
|
|
131
|
+
snapshot.totalReallocatableLiquidity ?? "0",
|
|
132
|
+
);
|
|
133
|
+
const totalReallocatableLiquidityUsd = Number.parseFloat(
|
|
134
|
+
snapshot.totalReallocatableLiquidityUsd ?? "0",
|
|
135
|
+
);
|
|
136
|
+
|
|
128
137
|
return {
|
|
129
138
|
chainId: snapshot.chainId,
|
|
130
139
|
marketId: snapshot.marketId.toLowerCase(),
|
|
@@ -135,6 +144,8 @@ export function transformIsolatedMarketSnapshotFromIndexer(
|
|
|
135
144
|
totalBorrowsUsd: Number.parseFloat(snapshot.totalBorrowAssetsUsd),
|
|
136
145
|
totalLiquidity,
|
|
137
146
|
totalLiquidityUsd,
|
|
147
|
+
totalReallocatableLiquidity,
|
|
148
|
+
totalReallocatableLiquidityUsd,
|
|
138
149
|
baseSupplyApy: Number.parseFloat(snapshot.supplyApy),
|
|
139
150
|
baseBorrowApy: Number.parseFloat(snapshot.borrowApy),
|
|
140
151
|
loanTokenPrice,
|
package/errors/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '0.10.
|
|
1
|
+
export const version = '0.10.5'
|
package/package.json
CHANGED
package/types/market.ts
CHANGED
|
@@ -51,6 +51,8 @@ export type MarketSnapshot = {
|
|
|
51
51
|
totalBorrowsUsd: number;
|
|
52
52
|
totalLiquidity: number;
|
|
53
53
|
totalLiquidityUsd: number;
|
|
54
|
+
totalReallocatableLiquidity: number;
|
|
55
|
+
totalReallocatableLiquidityUsd: number;
|
|
54
56
|
baseSupplyApy: number;
|
|
55
57
|
baseBorrowApy: number;
|
|
56
58
|
loanTokenPrice: number;
|