curvance 5.1.7 → 5.1.8

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/dist/snapshot.js DELETED
@@ -1,103 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.snapshotMarket = snapshotMarket;
4
- exports.takePortfolioSnapshot = takePortfolioSnapshot;
5
- const setup_1 = require("./setup");
6
- // ── Functions ────────────────────────────────────────────────────────────────
7
- /**
8
- * Snapshot a single market's user positions into plain numbers for JSON serialization.
9
- */
10
- function snapshotMarket(market) {
11
- const positions = [];
12
- for (const token of market.tokens) {
13
- const isBorrowable = token.isBorrowable;
14
- positions.push({
15
- tokenAddress: token.address,
16
- tokenSymbol: token.symbol,
17
- isBorrowable,
18
- depositUSD: token.getUserAssetBalance(true).toNumber(),
19
- depositTokens: token.getUserAssetBalance(false).toNumber(),
20
- collateralUSD: token.getUserCollateral(true).toNumber(),
21
- collateralTokens: token.getUserCollateral(false).toNumber(),
22
- debtUSD: token.getUserDebt(true).toNumber(),
23
- debtTokens: token.getUserDebt(false).toNumber(),
24
- assetPriceUSD: token.getPrice(true).toNumber(),
25
- supplyAPY: token.getApy().toNumber(),
26
- borrowRate: isBorrowable
27
- ? token.getBorrowRate(true).toNumber()
28
- : 0,
29
- });
30
- }
31
- const health = market.positionHealth;
32
- return {
33
- marketAddress: market.address,
34
- marketName: market.name,
35
- totalDepositsUSD: market.userDeposits.toNumber(),
36
- totalDebtUSD: market.userDebt.toNumber(),
37
- netUSD: market.userNet.toNumber(),
38
- positionHealth: health !== null ? health.toNumber() : null,
39
- dailyEarnings: market.getUserDepositsChange("day").toNumber(),
40
- dailyCost: market.getUserDebtChange("day").toNumber(),
41
- positions,
42
- };
43
- }
44
- /**
45
- * Take a full portfolio snapshot across all markets.
46
- *
47
- * @param account - Wallet address to snapshot
48
- * @param options.refresh - When true, reloads on-chain market + user data before reading cache.
49
- * Use this for indexer/cron jobs that need fresh data.
50
- */
51
- async function takePortfolioSnapshot(account, options) {
52
- if (options?.refresh && setup_1.all_markets.length > 0) {
53
- // Fetch all dynamic + user data in 2 RPC calls (not 2×N).
54
- // Each market's reload fetches ALL markets then filters — so we call
55
- // once via the shared reader and distribute results ourselves.
56
- const reader = setup_1.all_markets[0].reader;
57
- const [dynamicData, userData] = await Promise.all([
58
- reader.getDynamicMarketData(),
59
- reader.getUserData(account),
60
- ]);
61
- for (const market of setup_1.all_markets) {
62
- const dynamic = dynamicData.find((m) => m.address === market.address);
63
- const user = userData.markets.find((m) => m.address === market.address);
64
- if (!dynamic || !user)
65
- continue;
66
- market.cache.dynamic = dynamic;
67
- market.cache.user = user;
68
- for (const token of market.tokens) {
69
- const dynToken = dynamic.tokens.find((t) => t.address === token.address);
70
- const usrToken = user.tokens.find((t) => t.address === token.address);
71
- if (dynToken)
72
- token.cache = { ...token.cache, ...dynToken };
73
- if (usrToken)
74
- token.cache = { ...token.cache, ...usrToken };
75
- }
76
- }
77
- }
78
- const marketSnapshots = [];
79
- let totalDepositsUSD = 0;
80
- let totalDebtUSD = 0;
81
- let dailyEarnings = 0;
82
- let dailyCost = 0;
83
- for (const market of setup_1.all_markets) {
84
- const snap = snapshotMarket(market);
85
- marketSnapshots.push(snap);
86
- totalDepositsUSD += snap.totalDepositsUSD;
87
- totalDebtUSD += snap.totalDebtUSD;
88
- dailyEarnings += snap.dailyEarnings;
89
- dailyCost += snap.dailyCost;
90
- }
91
- return {
92
- account,
93
- chain: setup_1.setup_config.chain,
94
- timestamp: Date.now(),
95
- totalDepositsUSD,
96
- totalDebtUSD,
97
- netUSD: totalDepositsUSD - totalDebtUSD,
98
- dailyEarnings,
99
- dailyCost,
100
- markets: marketSnapshots,
101
- };
102
- }
103
- //# sourceMappingURL=snapshot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}