@lagoon-protocol/lagoon-mcp 0.2.20 → 0.2.21
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/graphql/queries/index.d.ts +1 -1
- package/dist/graphql/queries/index.d.ts.map +1 -1
- package/dist/graphql/queries/index.js +1 -1
- package/dist/graphql/queries/index.js.map +1 -1
- package/dist/graphql/queries/vault.queries.d.ts +17 -0
- package/dist/graphql/queries/vault.queries.d.ts.map +1 -1
- package/dist/graphql/queries/vault.queries.js +30 -0
- package/dist/graphql/queries/vault.queries.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/services/analytics/risk.service.d.ts.map +1 -1
- package/dist/services/analytics/risk.service.js +26 -2
- package/dist/services/analytics/risk.service.js.map +1 -1
- package/dist/tools/compare-vaults.d.ts.map +1 -1
- package/dist/tools/compare-vaults.js +76 -12
- package/dist/tools/compare-vaults.js.map +1 -1
- package/dist/tools/predict-yield.d.ts.map +1 -1
- package/dist/tools/predict-yield.js +32 -0
- package/dist/tools/predict-yield.js.map +1 -1
- package/dist/utils/comparison-metrics.d.ts +2 -2
- package/dist/utils/comparison-metrics.d.ts.map +1 -1
- package/dist/utils/comparison-metrics.js +22 -10
- package/dist/utils/comparison-metrics.js.map +1 -1
- package/dist/utils/portfolio-optimization.d.ts.map +1 -1
- package/dist/utils/portfolio-optimization.js +66 -17
- package/dist/utils/portfolio-optimization.js.map +1 -1
- package/dist/utils/risk-scoring.d.ts +61 -2
- package/dist/utils/risk-scoring.d.ts.map +1 -1
- package/dist/utils/risk-scoring.js +109 -32
- package/dist/utils/risk-scoring.js.map +1 -1
- package/dist/utils/safe-math.d.ts +64 -0
- package/dist/utils/safe-math.d.ts.map +1 -0
- package/dist/utils/safe-math.js +116 -0
- package/dist/utils/safe-math.js.map +1 -0
- package/dist/utils/yield-prediction.d.ts +7 -0
- package/dist/utils/yield-prediction.d.ts.map +1 -1
- package/dist/utils/yield-prediction.js +49 -31
- package/dist/utils/yield-prediction.js.map +1 -1
- package/package.json +1 -1
- package/dist/services/analytics/protocol-overview.service.d.ts +0 -61
- package/dist/services/analytics/protocol-overview.service.d.ts.map +0 -1
- package/dist/services/analytics/protocol-overview.service.js +0 -182
- package/dist/services/analytics/protocol-overview.service.js.map +0 -1
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Protocol Overview Service
|
|
3
|
-
*
|
|
4
|
-
* Fetches real-time protocol metrics for dynamic prompt generation.
|
|
5
|
-
* Provides comprehensive KPI data for protocol health dashboards.
|
|
6
|
-
*/
|
|
7
|
-
import { BaseService } from '../base.service.js';
|
|
8
|
-
/**
|
|
9
|
-
* Protocol metrics for overview dashboard
|
|
10
|
-
*/
|
|
11
|
-
export interface ProtocolMetrics {
|
|
12
|
-
totalTVL: number;
|
|
13
|
-
tvl7dChange: number;
|
|
14
|
-
tvl30dChange: number;
|
|
15
|
-
totalVolume24h: number;
|
|
16
|
-
activeVaults: number;
|
|
17
|
-
vaultsLast30d: number;
|
|
18
|
-
avgAPR: number;
|
|
19
|
-
medianAPR: number;
|
|
20
|
-
totalUsers: number;
|
|
21
|
-
activeUsers30d: number;
|
|
22
|
-
newUsers30d: number;
|
|
23
|
-
securityIncidents90d: number;
|
|
24
|
-
avgRiskScore: number;
|
|
25
|
-
totalCurators: number;
|
|
26
|
-
activeCurators30d: number;
|
|
27
|
-
lastUpdated: string;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Protocol Overview Service
|
|
31
|
-
* Fetches and aggregates protocol-level metrics
|
|
32
|
-
*/
|
|
33
|
-
export declare class ProtocolOverviewService extends BaseService {
|
|
34
|
-
private readonly CACHE_KEY;
|
|
35
|
-
private readonly CACHE_TTL;
|
|
36
|
-
/**
|
|
37
|
-
* Fetch protocol metrics with caching
|
|
38
|
-
*/
|
|
39
|
-
getMetrics(): Promise<ProtocolMetrics>;
|
|
40
|
-
/**
|
|
41
|
-
* Fetch protocol metrics from GraphQL
|
|
42
|
-
*/
|
|
43
|
-
private fetchMetrics;
|
|
44
|
-
/**
|
|
45
|
-
* Calculate protocol metrics from GraphQL data
|
|
46
|
-
*/
|
|
47
|
-
private calculateMetrics;
|
|
48
|
-
/**
|
|
49
|
-
* Fallback metrics when GraphQL fails
|
|
50
|
-
*/
|
|
51
|
-
private getFallbackMetrics;
|
|
52
|
-
/**
|
|
53
|
-
* Format TVL with appropriate unit
|
|
54
|
-
*/
|
|
55
|
-
formatTVL(tvl: number): string;
|
|
56
|
-
/**
|
|
57
|
-
* Format percentage change
|
|
58
|
-
*/
|
|
59
|
-
formatPercentage(value: number): string;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=protocol-overview.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-overview.service.d.ts","sourceRoot":"","sources":["../../../src/services/analytics/protocol-overview.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAE9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IAGvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAGlB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IAGpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IAGrB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,WAAW;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAO;IAEjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAgB5C;;OAEG;YACW,YAAY;IA4E1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwFxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAU9B;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAIxC"}
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Protocol Overview Service
|
|
3
|
-
*
|
|
4
|
-
* Fetches real-time protocol metrics for dynamic prompt generation.
|
|
5
|
-
* Provides comprehensive KPI data for protocol health dashboards.
|
|
6
|
-
*/
|
|
7
|
-
import { BaseService } from '../base.service.js';
|
|
8
|
-
/**
|
|
9
|
-
* Protocol Overview Service
|
|
10
|
-
* Fetches and aggregates protocol-level metrics
|
|
11
|
-
*/
|
|
12
|
-
export class ProtocolOverviewService extends BaseService {
|
|
13
|
-
CACHE_KEY = 'protocol:overview:metrics';
|
|
14
|
-
CACHE_TTL = 300; // 5 minutes
|
|
15
|
-
/**
|
|
16
|
-
* Fetch protocol metrics with caching
|
|
17
|
-
*/
|
|
18
|
-
async getMetrics() {
|
|
19
|
-
// Check cache
|
|
20
|
-
const cached = this.cache.get(this.CACHE_KEY);
|
|
21
|
-
if (cached) {
|
|
22
|
-
return cached;
|
|
23
|
-
}
|
|
24
|
-
// Fetch from GraphQL
|
|
25
|
-
const metrics = await this.fetchMetrics();
|
|
26
|
-
// Cache results
|
|
27
|
-
this.cache.set(this.CACHE_KEY, metrics, this.CACHE_TTL);
|
|
28
|
-
return metrics;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Fetch protocol metrics from GraphQL
|
|
32
|
-
*/
|
|
33
|
-
async fetchMetrics() {
|
|
34
|
-
const query = `
|
|
35
|
-
query ProtocolOverview {
|
|
36
|
-
vaults(first: 1000) {
|
|
37
|
-
items {
|
|
38
|
-
id
|
|
39
|
-
address
|
|
40
|
-
chain { id }
|
|
41
|
-
state {
|
|
42
|
-
totalAssetsUsd
|
|
43
|
-
managementFee
|
|
44
|
-
performanceFee
|
|
45
|
-
}
|
|
46
|
-
curators {
|
|
47
|
-
id
|
|
48
|
-
}
|
|
49
|
-
createdAt
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
events(
|
|
53
|
-
first: 1000
|
|
54
|
-
where: { type_in: ["Deposit", "Withdrawal"] }
|
|
55
|
-
orderBy: "timestamp"
|
|
56
|
-
orderDirection: "desc"
|
|
57
|
-
) {
|
|
58
|
-
items {
|
|
59
|
-
timestamp
|
|
60
|
-
type
|
|
61
|
-
data {
|
|
62
|
-
... on DepositEvent {
|
|
63
|
-
assetsUsd
|
|
64
|
-
}
|
|
65
|
-
... on WithdrawalEvent {
|
|
66
|
-
assetsUsd
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
`;
|
|
73
|
-
try {
|
|
74
|
-
const data = await this.client.request(query);
|
|
75
|
-
return this.calculateMetrics(data);
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
// Return fallback metrics on error
|
|
79
|
-
console.error('Failed to fetch protocol metrics:', error);
|
|
80
|
-
return this.getFallbackMetrics();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Calculate protocol metrics from GraphQL data
|
|
85
|
-
*/
|
|
86
|
-
calculateMetrics(data) {
|
|
87
|
-
const now = Date.now();
|
|
88
|
-
const day30Ago = now - 30 * 24 * 60 * 60 * 1000;
|
|
89
|
-
// Calculate total TVL
|
|
90
|
-
const totalTVL = data.vaults.items.reduce((sum, v) => sum + (v.state?.totalAssetsUsd || 0), 0);
|
|
91
|
-
// Calculate vault counts
|
|
92
|
-
const activeVaults = data.vaults.items.filter((v) => (v.state?.totalAssetsUsd || 0) > 0).length;
|
|
93
|
-
const vaultsCreatedLast30d = data.vaults.items.filter((v) => new Date(v.createdAt).getTime() > day30Ago).length;
|
|
94
|
-
// Calculate weighted average APR (simplified - would need more data in real implementation)
|
|
95
|
-
const avgAPR = 12.5; // Placeholder - needs actual APR calculation from performance data
|
|
96
|
-
// Calculate median APR
|
|
97
|
-
const medianAPR = 11.8; // Placeholder - needs actual APR calculation
|
|
98
|
-
// Calculate 24h volume from events
|
|
99
|
-
const volume24h = data.events.items
|
|
100
|
-
.filter((e) => parseInt(e.timestamp, 10) * 1000 > now - 24 * 60 * 60 * 1000)
|
|
101
|
-
.reduce((sum, e) => sum + (e.data.assetsUsd || 0), 0);
|
|
102
|
-
// Extract unique user addresses (would need user-specific query in real implementation)
|
|
103
|
-
const totalUsers = Math.floor(activeVaults * 2.5); // Estimated users per vault
|
|
104
|
-
const activeUsers30d = Math.floor(totalUsers * 0.35); // 35% monthly active
|
|
105
|
-
const newUsers30d = Math.floor(totalUsers * 0.15); // 15% new users
|
|
106
|
-
// Security metrics (would need security incident tracking in real implementation)
|
|
107
|
-
// TODO: Implement actual 90-day security incident tracking with date filtering
|
|
108
|
-
const securityIncidents90d = 0;
|
|
109
|
-
const avgRiskScore = 35; // Average risk score across all vaults
|
|
110
|
-
// Curator metrics
|
|
111
|
-
const uniqueCurators = new Set(data.vaults.items.flatMap((v) => v.curators.map((c) => c.id)));
|
|
112
|
-
const totalCurators = uniqueCurators.size;
|
|
113
|
-
const activeCurators30d = Math.floor(totalCurators * 0.7); // 70% active monthly
|
|
114
|
-
// TVL changes (simplified - would need historical data)
|
|
115
|
-
// TODO: Implement actual historical TVL tracking for 7d/30d change calculations
|
|
116
|
-
const tvl7dChange = 5.2; // Placeholder percentage
|
|
117
|
-
const tvl30dChange = 12.3; // Placeholder percentage
|
|
118
|
-
return {
|
|
119
|
-
totalTVL,
|
|
120
|
-
tvl7dChange,
|
|
121
|
-
tvl30dChange,
|
|
122
|
-
totalVolume24h: volume24h,
|
|
123
|
-
activeVaults,
|
|
124
|
-
vaultsLast30d: vaultsCreatedLast30d,
|
|
125
|
-
avgAPR,
|
|
126
|
-
medianAPR,
|
|
127
|
-
totalUsers,
|
|
128
|
-
activeUsers30d,
|
|
129
|
-
newUsers30d,
|
|
130
|
-
securityIncidents90d,
|
|
131
|
-
avgRiskScore,
|
|
132
|
-
totalCurators,
|
|
133
|
-
activeCurators30d,
|
|
134
|
-
lastUpdated: new Date().toISOString(),
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Fallback metrics when GraphQL fails
|
|
139
|
-
*/
|
|
140
|
-
getFallbackMetrics() {
|
|
141
|
-
return {
|
|
142
|
-
totalTVL: 0,
|
|
143
|
-
tvl7dChange: 0,
|
|
144
|
-
tvl30dChange: 0,
|
|
145
|
-
totalVolume24h: 0,
|
|
146
|
-
activeVaults: 0,
|
|
147
|
-
vaultsLast30d: 0,
|
|
148
|
-
avgAPR: 0,
|
|
149
|
-
medianAPR: 0,
|
|
150
|
-
totalUsers: 0,
|
|
151
|
-
activeUsers30d: 0,
|
|
152
|
-
newUsers30d: 0,
|
|
153
|
-
securityIncidents90d: 0,
|
|
154
|
-
avgRiskScore: 0,
|
|
155
|
-
totalCurators: 0,
|
|
156
|
-
activeCurators30d: 0,
|
|
157
|
-
lastUpdated: new Date().toISOString(),
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Format TVL with appropriate unit
|
|
162
|
-
*/
|
|
163
|
-
formatTVL(tvl) {
|
|
164
|
-
if (tvl >= 1_000_000) {
|
|
165
|
-
return `$${(tvl / 1_000_000).toFixed(1)}M`;
|
|
166
|
-
}
|
|
167
|
-
else if (tvl >= 1_000) {
|
|
168
|
-
return `$${(tvl / 1_000).toFixed(1)}K`;
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
return `$${tvl.toFixed(0)}`;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Format percentage change
|
|
176
|
-
*/
|
|
177
|
-
formatPercentage(value) {
|
|
178
|
-
const sign = value >= 0 ? '+' : '';
|
|
179
|
-
return `${sign}${value.toFixed(1)}%`;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
//# sourceMappingURL=protocol-overview.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-overview.service.js","sourceRoot":"","sources":["../../../src/services/analytics/protocol-overview.service.ts"],"names":[],"mappings":"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"}
|