@lagoon-protocol/lagoon-mcp 0.5.0 → 0.7.0

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 (189) hide show
  1. package/README.md +72 -54
  2. package/dist/cache/index.d.ts +4 -1
  3. package/dist/cache/index.d.ts.map +1 -1
  4. package/dist/cache/index.js +4 -1
  5. package/dist/cache/index.js.map +1 -1
  6. package/dist/config.d.ts +1 -1
  7. package/dist/config.js +1 -1
  8. package/dist/core/container.js +1 -1
  9. package/dist/graphql/fragments/apr-breakdown.fragment.d.ts +4 -1
  10. package/dist/graphql/fragments/apr-breakdown.fragment.d.ts.map +1 -1
  11. package/dist/graphql/fragments/apr-breakdown.fragment.js +3 -0
  12. package/dist/graphql/fragments/apr-breakdown.fragment.js.map +1 -1
  13. package/dist/graphql/fragments/composition.fragment.d.ts +23 -134
  14. package/dist/graphql/fragments/composition.fragment.d.ts.map +1 -1
  15. package/dist/graphql/fragments/composition.fragment.js +9 -7
  16. package/dist/graphql/fragments/composition.fragment.js.map +1 -1
  17. package/dist/graphql/fragments/index.d.ts +1 -1
  18. package/dist/graphql/fragments/index.d.ts.map +1 -1
  19. package/dist/graphql/fragments/index.js +5 -4
  20. package/dist/graphql/fragments/index.js.map +1 -1
  21. package/dist/graphql/fragments/transaction-base.fragment.d.ts +1 -1
  22. package/dist/graphql/fragments/transaction-base.fragment.d.ts.map +1 -1
  23. package/dist/graphql/fragments/transaction-base.fragment.js +0 -1
  24. package/dist/graphql/fragments/transaction-base.fragment.js.map +1 -1
  25. package/dist/graphql/fragments/vault.fragment.d.ts +29 -1
  26. package/dist/graphql/fragments/vault.fragment.d.ts.map +1 -1
  27. package/dist/graphql/fragments/vault.fragment.js +29 -0
  28. package/dist/graphql/fragments/vault.fragment.js.map +1 -1
  29. package/dist/graphql/queries/composition.queries.d.ts +10 -28
  30. package/dist/graphql/queries/composition.queries.d.ts.map +1 -1
  31. package/dist/graphql/queries/composition.queries.js +17 -28
  32. package/dist/graphql/queries/composition.queries.js.map +1 -1
  33. package/dist/graphql/queries/discovery.queries.d.ts +50 -0
  34. package/dist/graphql/queries/discovery.queries.d.ts.map +1 -0
  35. package/dist/graphql/queries/discovery.queries.js +188 -0
  36. package/dist/graphql/queries/discovery.queries.js.map +1 -0
  37. package/dist/graphql/queries/export.queries.d.ts +5 -7
  38. package/dist/graphql/queries/export.queries.d.ts.map +1 -1
  39. package/dist/graphql/queries/export.queries.js +22 -28
  40. package/dist/graphql/queries/export.queries.js.map +1 -1
  41. package/dist/graphql/queries/index.d.ts +4 -3
  42. package/dist/graphql/queries/index.d.ts.map +1 -1
  43. package/dist/graphql/queries/index.js +5 -3
  44. package/dist/graphql/queries/index.js.map +1 -1
  45. package/dist/graphql/queries/performance.queries.d.ts +6 -4
  46. package/dist/graphql/queries/performance.queries.d.ts.map +1 -1
  47. package/dist/graphql/queries/performance.queries.js +5 -11
  48. package/dist/graphql/queries/performance.queries.js.map +1 -1
  49. package/dist/graphql/queries/portfolio.queries.d.ts +6 -12
  50. package/dist/graphql/queries/portfolio.queries.d.ts.map +1 -1
  51. package/dist/graphql/queries/portfolio.queries.js +21 -88
  52. package/dist/graphql/queries/portfolio.queries.js.map +1 -1
  53. package/dist/graphql/queries/prediction.queries.d.ts +13 -15
  54. package/dist/graphql/queries/prediction.queries.d.ts.map +1 -1
  55. package/dist/graphql/queries/prediction.queries.js +12 -31
  56. package/dist/graphql/queries/prediction.queries.js.map +1 -1
  57. package/dist/graphql/queries/risk.queries.d.ts +3 -3
  58. package/dist/graphql/queries/risk.queries.d.ts.map +1 -1
  59. package/dist/graphql/queries/risk.queries.js +7 -22
  60. package/dist/graphql/queries/risk.queries.js.map +1 -1
  61. package/dist/graphql/queries/search.queries.d.ts.map +1 -1
  62. package/dist/graphql/queries/search.queries.js +6 -2
  63. package/dist/graphql/queries/search.queries.js.map +1 -1
  64. package/dist/graphql/queries/transaction.queries.d.ts +6 -26
  65. package/dist/graphql/queries/transaction.queries.d.ts.map +1 -1
  66. package/dist/graphql/queries/transaction.queries.js +227 -59
  67. package/dist/graphql/queries/transaction.queries.js.map +1 -1
  68. package/dist/graphql/queries/vault.queries.d.ts +21 -3
  69. package/dist/graphql/queries/vault.queries.d.ts.map +1 -1
  70. package/dist/graphql/queries/vault.queries.js +38 -0
  71. package/dist/graphql/queries/vault.queries.js.map +1 -1
  72. package/dist/index.js +0 -0
  73. package/dist/services/analytics/risk.service.d.ts +52 -33
  74. package/dist/services/analytics/risk.service.d.ts.map +1 -1
  75. package/dist/services/analytics/risk.service.js +165 -155
  76. package/dist/services/analytics/risk.service.js.map +1 -1
  77. package/dist/tools/compare-vaults.d.ts.map +1 -1
  78. package/dist/tools/compare-vaults.js +50 -77
  79. package/dist/tools/compare-vaults.js.map +1 -1
  80. package/dist/tools/export-data.d.ts.map +1 -1
  81. package/dist/tools/export-data.js +10 -16
  82. package/dist/tools/export-data.js.map +1 -1
  83. package/dist/tools/get-asset.d.ts +17 -0
  84. package/dist/tools/get-asset.d.ts.map +1 -0
  85. package/dist/tools/get-asset.js +44 -0
  86. package/dist/tools/get-asset.js.map +1 -0
  87. package/dist/tools/get-curator.d.ts +13 -0
  88. package/dist/tools/get-curator.d.ts.map +1 -0
  89. package/dist/tools/get-curator.js +81 -0
  90. package/dist/tools/get-curator.js.map +1 -0
  91. package/dist/tools/get-global-tvl.d.ts +20 -0
  92. package/dist/tools/get-global-tvl.d.ts.map +1 -0
  93. package/dist/tools/get-global-tvl.js +38 -0
  94. package/dist/tools/get-global-tvl.js.map +1 -0
  95. package/dist/tools/get-historical-state.d.ts +22 -0
  96. package/dist/tools/get-historical-state.d.ts.map +1 -0
  97. package/dist/tools/get-historical-state.js +65 -0
  98. package/dist/tools/get-historical-state.js.map +1 -0
  99. package/dist/tools/get-indexing-status.d.ts +20 -0
  100. package/dist/tools/get-indexing-status.d.ts.map +1 -0
  101. package/dist/tools/get-indexing-status.js +38 -0
  102. package/dist/tools/get-indexing-status.js.map +1 -0
  103. package/dist/tools/get-price-history.d.ts.map +1 -1
  104. package/dist/tools/get-price-history.js +55 -63
  105. package/dist/tools/get-price-history.js.map +1 -1
  106. package/dist/tools/get-transactions.d.ts.map +1 -1
  107. package/dist/tools/get-transactions.js +3 -1
  108. package/dist/tools/get-transactions.js.map +1 -1
  109. package/dist/tools/list-chains.d.ts +16 -0
  110. package/dist/tools/list-chains.d.ts.map +1 -0
  111. package/dist/tools/list-chains.js +46 -0
  112. package/dist/tools/list-chains.js.map +1 -0
  113. package/dist/tools/list-curators.d.ts +18 -0
  114. package/dist/tools/list-curators.d.ts.map +1 -0
  115. package/dist/tools/list-curators.js +49 -0
  116. package/dist/tools/list-curators.js.map +1 -0
  117. package/dist/tools/optimize-portfolio.d.ts.map +1 -1
  118. package/dist/tools/optimize-portfolio.js +6 -17
  119. package/dist/tools/optimize-portfolio.js.map +1 -1
  120. package/dist/tools/predict-yield.d.ts.map +1 -1
  121. package/dist/tools/predict-yield.js +109 -11
  122. package/dist/tools/predict-yield.js.map +1 -1
  123. package/dist/tools/registry.d.ts.map +1 -1
  124. package/dist/tools/registry.js +83 -11
  125. package/dist/tools/registry.js.map +1 -1
  126. package/dist/tools/search-vaults.d.ts.map +1 -1
  127. package/dist/tools/search-vaults.js +9 -2
  128. package/dist/tools/search-vaults.js.map +1 -1
  129. package/dist/tools/simulate-vault.d.ts +1 -1
  130. package/dist/tools/user-portfolio.d.ts.map +1 -1
  131. package/dist/tools/user-portfolio.js +30 -51
  132. package/dist/tools/user-portfolio.js.map +1 -1
  133. package/dist/tools/vault-composition.d.ts +18 -15
  134. package/dist/tools/vault-composition.d.ts.map +1 -1
  135. package/dist/tools/vault-composition.js +71 -155
  136. package/dist/tools/vault-composition.js.map +1 -1
  137. package/dist/tools/vault-performance.d.ts.map +1 -1
  138. package/dist/tools/vault-performance.js +7 -19
  139. package/dist/tools/vault-performance.js.map +1 -1
  140. package/dist/types/generated.d.ts +1191 -21
  141. package/dist/types/generated.d.ts.map +1 -1
  142. package/dist/utils/comparison-metrics.d.ts +13 -1
  143. package/dist/utils/comparison-metrics.d.ts.map +1 -1
  144. package/dist/utils/comparison-metrics.js +29 -4
  145. package/dist/utils/comparison-metrics.js.map +1 -1
  146. package/dist/utils/composition-metrics.d.ts +42 -0
  147. package/dist/utils/composition-metrics.d.ts.map +1 -0
  148. package/dist/utils/composition-metrics.js +50 -0
  149. package/dist/utils/composition-metrics.js.map +1 -0
  150. package/dist/utils/csv-generator.d.ts +4 -1
  151. package/dist/utils/csv-generator.d.ts.map +1 -1
  152. package/dist/utils/csv-generator.js +8 -4
  153. package/dist/utils/csv-generator.js.map +1 -1
  154. package/dist/utils/fee-formatting.d.ts +41 -0
  155. package/dist/utils/fee-formatting.d.ts.map +1 -0
  156. package/dist/utils/fee-formatting.js +57 -0
  157. package/dist/utils/fee-formatting.js.map +1 -0
  158. package/dist/utils/operational-signals.d.ts +55 -0
  159. package/dist/utils/operational-signals.d.ts.map +1 -0
  160. package/dist/utils/operational-signals.js +105 -0
  161. package/dist/utils/operational-signals.js.map +1 -0
  162. package/dist/utils/tool-error-handler.d.ts.map +1 -1
  163. package/dist/utils/tool-error-handler.js +8 -6
  164. package/dist/utils/tool-error-handler.js.map +1 -1
  165. package/dist/utils/validators.d.ts +112 -3
  166. package/dist/utils/validators.d.ts.map +1 -1
  167. package/dist/utils/validators.js +108 -4
  168. package/dist/utils/validators.js.map +1 -1
  169. package/dist/utils/yield-prediction.d.ts +3 -0
  170. package/dist/utils/yield-prediction.d.ts.map +1 -1
  171. package/dist/utils/yield-prediction.js +13 -1
  172. package/dist/utils/yield-prediction.js.map +1 -1
  173. package/package.json +2 -2
  174. package/dist/graphql/fragments.d.ts +0 -183
  175. package/dist/graphql/fragments.d.ts.map +0 -1
  176. package/dist/graphql/fragments.js +0 -297
  177. package/dist/graphql/fragments.js.map +0 -1
  178. package/dist/graphql/queries/period-summaries.d.ts +0 -15
  179. package/dist/graphql/queries/period-summaries.d.ts.map +0 -1
  180. package/dist/graphql/queries/period-summaries.js +0 -24
  181. package/dist/graphql/queries/period-summaries.js.map +0 -1
  182. package/dist/services/analytics/protocol-overview.service.d.ts +0 -61
  183. package/dist/services/analytics/protocol-overview.service.d.ts.map +0 -1
  184. package/dist/services/analytics/protocol-overview.service.js +0 -182
  185. package/dist/services/analytics/protocol-overview.service.js.map +0 -1
  186. package/dist/tools/index.d.ts +0 -26
  187. package/dist/tools/index.d.ts.map +0 -1
  188. package/dist/tools/index.js +0 -32
  189. package/dist/tools/index.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Fee Formatting Utilities
3
+ *
4
+ * Single source of truth for converting Lagoon's basis-point fee values
5
+ * (uint16 from GraphQL; `2000` = 20%) into percentages for display and risk
6
+ * calculations.
7
+ *
8
+ * The SDK simulator (`@lagoon-protocol/v0-computation`) expects raw basis
9
+ * points — do NOT use these helpers in the simulation path.
10
+ *
11
+ * Covers all fee fields on `VaultState`:
12
+ * - managementFee, performanceFee, protocolFee (legacy fee model)
13
+ * - entryRate, exitRate, haircutRate (v0.6+ fee model)
14
+ * - upcomingManagementFee, upcomingPerformanceFee (staged rates)
15
+ */
16
+ /**
17
+ * Convert a basis-point value to a decimal percentage.
18
+ * `2000` → `20.0`. Returns `0` for `null`/`undefined`.
19
+ */
20
+ export declare function basisPointsToPercent(bps: number | null | undefined): number;
21
+ /**
22
+ * Format a basis-point value as a human-readable percentage string.
23
+ * `2000` → `"20.00%"`. Returns `"N/A"` for `null`/`undefined`.
24
+ */
25
+ export declare function formatBasisPointsAsPercent(bps: number | null | undefined, decimals?: number): string;
26
+ /**
27
+ * Apply `basisPointsToPercent` to every fee field on a VaultState-like
28
+ * object. Returns a shallow copy with numeric percentages (not basis points).
29
+ * Useful when emitting fees to a downstream consumer that expects %.
30
+ */
31
+ export declare function normalizeFeesToPercent<T extends {
32
+ managementFee?: number | null;
33
+ performanceFee?: number | null;
34
+ protocolFee?: number | null;
35
+ entryRate?: number | null;
36
+ exitRate?: number | null;
37
+ haircutRate?: number | null;
38
+ upcomingManagementFee?: number | null;
39
+ upcomingPerformanceFee?: number | null;
40
+ }>(state: T): T;
41
+ //# sourceMappingURL=fee-formatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fee-formatting.d.ts","sourceRoot":"","sources":["../../src/utils/fee-formatting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAG3E;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,SAAI,GAAG,MAAM,CAG/F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,CAAC,SAAS;IACR,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC,EACD,KAAK,EAAE,CAAC,GAAG,CAAC,CAkBb"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Fee Formatting Utilities
3
+ *
4
+ * Single source of truth for converting Lagoon's basis-point fee values
5
+ * (uint16 from GraphQL; `2000` = 20%) into percentages for display and risk
6
+ * calculations.
7
+ *
8
+ * The SDK simulator (`@lagoon-protocol/v0-computation`) expects raw basis
9
+ * points — do NOT use these helpers in the simulation path.
10
+ *
11
+ * Covers all fee fields on `VaultState`:
12
+ * - managementFee, performanceFee, protocolFee (legacy fee model)
13
+ * - entryRate, exitRate, haircutRate (v0.6+ fee model)
14
+ * - upcomingManagementFee, upcomingPerformanceFee (staged rates)
15
+ */
16
+ const BASIS_POINTS_PER_PERCENT = 100;
17
+ /**
18
+ * Convert a basis-point value to a decimal percentage.
19
+ * `2000` → `20.0`. Returns `0` for `null`/`undefined`.
20
+ */
21
+ export function basisPointsToPercent(bps) {
22
+ if (bps == null)
23
+ return 0;
24
+ return bps / BASIS_POINTS_PER_PERCENT;
25
+ }
26
+ /**
27
+ * Format a basis-point value as a human-readable percentage string.
28
+ * `2000` → `"20.00%"`. Returns `"N/A"` for `null`/`undefined`.
29
+ */
30
+ export function formatBasisPointsAsPercent(bps, decimals = 2) {
31
+ if (bps == null)
32
+ return 'N/A';
33
+ return `${(bps / BASIS_POINTS_PER_PERCENT).toFixed(decimals)}%`;
34
+ }
35
+ /**
36
+ * Apply `basisPointsToPercent` to every fee field on a VaultState-like
37
+ * object. Returns a shallow copy with numeric percentages (not basis points).
38
+ * Useful when emitting fees to a downstream consumer that expects %.
39
+ */
40
+ export function normalizeFeesToPercent(state) {
41
+ return {
42
+ ...state,
43
+ managementFee: basisPointsToPercent(state.managementFee),
44
+ performanceFee: basisPointsToPercent(state.performanceFee),
45
+ protocolFee: basisPointsToPercent(state.protocolFee),
46
+ entryRate: basisPointsToPercent(state.entryRate),
47
+ exitRate: basisPointsToPercent(state.exitRate),
48
+ haircutRate: basisPointsToPercent(state.haircutRate),
49
+ upcomingManagementFee: state.upcomingManagementFee == null
50
+ ? null
51
+ : basisPointsToPercent(state.upcomingManagementFee),
52
+ upcomingPerformanceFee: state.upcomingPerformanceFee == null
53
+ ? null
54
+ : basisPointsToPercent(state.upcomingPerformanceFee),
55
+ };
56
+ }
57
+ //# sourceMappingURL=fee-formatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fee-formatting.js","sourceRoot":"","sources":["../../src/utils/fee-formatting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAA8B;IACjE,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,GAAG,GAAG,wBAAwB,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAA8B,EAAE,QAAQ,GAAG,CAAC;IACrF,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9B,OAAO,GAAG,CAAC,GAAG,GAAG,wBAAwB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAWpC,KAAQ;IACR,OAAO;QACL,GAAG,KAAK;QACR,aAAa,EAAE,oBAAoB,CAAC,KAAK,CAAC,aAAa,CAAC;QACxD,cAAc,EAAE,oBAAoB,CAAC,KAAK,CAAC,cAAc,CAAC;QAC1D,WAAW,EAAE,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC;QACpD,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC;QAChD,QAAQ,EAAE,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9C,WAAW,EAAE,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC;QACpD,qBAAqB,EACnB,KAAK,CAAC,qBAAqB,IAAI,IAAI;YACjC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,qBAAqB,CAAC;QACvD,sBAAsB,EACpB,KAAK,CAAC,sBAAsB,IAAI,IAAI;YAClC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,sBAAsB,CAAC;KACzD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Operational signals derived from `VaultState` v0.6+ flags.
3
+ *
4
+ * These are NOT inputs to the calibrated 14-factor weighted risk score in
5
+ * `src/utils/risk-scoring.ts` — adding a 15th factor would force a weight
6
+ * reallocation and invalidate test calibration. Instead, signals:
7
+ *
8
+ * 1. Are surfaced as a separate output block (`operationalSignals[]`).
9
+ * 2. Apply a *risk-level floor* on the bucket (Critical/High/Medium/Low),
10
+ * following the same pattern as `CRITICAL_FACTOR_THRESHOLD` in
11
+ * `calculateOverallRisk` — the numeric score is unchanged, only the
12
+ * bucket can move up.
13
+ *
14
+ * Recomputed on every `analyze_risk` call (no separate cache horizon) — they
15
+ * derive from already-cached vault state, so the cost is negligible, and a
16
+ * `stale_total_assets` signal would silently expire if we cached it.
17
+ */
18
+ export type OperationalSignalCode = 'paused' | 'safe_unlocked' | 'super_operator_unlocked' | 'blacklist_mode_active' | 'stale_total_assets';
19
+ export type OperationalSeverity = 'Critical' | 'High' | 'Medium';
20
+ export interface OperationalSignal {
21
+ code: OperationalSignalCode;
22
+ severity: OperationalSeverity;
23
+ message: string;
24
+ }
25
+ /**
26
+ * VaultState shape consumed by this evaluator. Intentionally a structural
27
+ * subset of `VaultData['state']` (from `src/graphql/fragments/vault.fragment.ts`)
28
+ * so we don't depend on the full fragment for unit-testable signal evaluation.
29
+ */
30
+ export interface OperationalSignalsState {
31
+ isPaused?: boolean;
32
+ safeLocked?: boolean;
33
+ superOperatorLocked?: boolean | null;
34
+ accessMode?: 'Whitelist' | 'Blacklist' | null;
35
+ blacklist?: string[] | null;
36
+ totalAssetsExpiration?: string;
37
+ }
38
+ /**
39
+ * Evaluate `state` against each signal rule. `nowSeconds` is injected for
40
+ * deterministic testability (don't read `Date.now()` here).
41
+ */
42
+ export declare function evaluateOperationalSignals(state: OperationalSignalsState | null | undefined, nowSeconds: number): OperationalSignal[];
43
+ /**
44
+ * The risk-level floor implied by a set of signals. Critical > High > Medium.
45
+ * Returns null when no signals are present.
46
+ *
47
+ * Pair with `riskLevelMax(weightedLevel, floor)` to compute the effective
48
+ * level: the floor can only move the bucket up, never down.
49
+ */
50
+ export declare function operationalSignalFloor(signals: OperationalSignal[]): 'Critical' | 'High' | 'Medium' | null;
51
+ /**
52
+ * Take the worse (higher) of two risk levels.
53
+ */
54
+ export declare function riskLevelMax(a: 'Low' | 'Medium' | 'High' | 'Critical', b: 'Low' | 'Medium' | 'High' | 'Critical' | null): 'Low' | 'Medium' | 'High' | 'Critical';
55
+ //# sourceMappingURL=operational-signals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operational-signals.d.ts","sourceRoot":"","sources":["../../src/utils/operational-signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,GACR,eAAe,GACf,yBAAyB,GACzB,uBAAuB,GACvB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,mBAAmB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,EACjD,UAAU,EAAE,MAAM,GACjB,iBAAiB,EAAE,CA8DrB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,iBAAiB,EAAE,GAC3B,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,CAKvC;AASD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,EACzC,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,GAC/C,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAGxC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Operational signals derived from `VaultState` v0.6+ flags.
3
+ *
4
+ * These are NOT inputs to the calibrated 14-factor weighted risk score in
5
+ * `src/utils/risk-scoring.ts` — adding a 15th factor would force a weight
6
+ * reallocation and invalidate test calibration. Instead, signals:
7
+ *
8
+ * 1. Are surfaced as a separate output block (`operationalSignals[]`).
9
+ * 2. Apply a *risk-level floor* on the bucket (Critical/High/Medium/Low),
10
+ * following the same pattern as `CRITICAL_FACTOR_THRESHOLD` in
11
+ * `calculateOverallRisk` — the numeric score is unchanged, only the
12
+ * bucket can move up.
13
+ *
14
+ * Recomputed on every `analyze_risk` call (no separate cache horizon) — they
15
+ * derive from already-cached vault state, so the cost is negligible, and a
16
+ * `stale_total_assets` signal would silently expire if we cached it.
17
+ */
18
+ /**
19
+ * Evaluate `state` against each signal rule. `nowSeconds` is injected for
20
+ * deterministic testability (don't read `Date.now()` here).
21
+ */
22
+ export function evaluateOperationalSignals(state, nowSeconds) {
23
+ if (!state)
24
+ return [];
25
+ const signals = [];
26
+ if (state.isPaused === true) {
27
+ signals.push({
28
+ code: 'paused',
29
+ severity: 'Critical',
30
+ message: 'Vault is currently paused — deposits, redeems, and settlements are halted.',
31
+ });
32
+ }
33
+ if (state.safeLocked === false) {
34
+ signals.push({
35
+ code: 'safe_unlocked',
36
+ severity: 'High',
37
+ message: 'Safe (fund custody) address can still be changed by the vault owner — a malicious owner could rotate custody.',
38
+ });
39
+ }
40
+ // superOperatorLocked is null on pre-v0.6.0 vaults that lack the role.
41
+ // Only flag when it's explicitly false (role exists and is mutable).
42
+ if (state.superOperatorLocked === false) {
43
+ signals.push({
44
+ code: 'super_operator_unlocked',
45
+ severity: 'High',
46
+ message: 'Super-operator role can still be changed — the holder can act on behalf of any controller and bypass access checks.',
47
+ });
48
+ }
49
+ if (state.accessMode === 'Blacklist' &&
50
+ Array.isArray(state.blacklist) &&
51
+ state.blacklist.length > 0) {
52
+ // Don't embed the exact blacklist size — for vault-operator (non-OFAC)
53
+ // blacklists the count can be sensitive operator metadata, and it adds
54
+ // no risk-analytic value beyond "non-empty". Callers needing the exact
55
+ // size can read state.blacklist directly via get_vault_data.
56
+ signals.push({
57
+ code: 'blacklist_mode_active',
58
+ severity: 'Medium',
59
+ message: 'Vault enforces a non-empty blacklist — operator can deny specific users access.',
60
+ });
61
+ }
62
+ if (state.totalAssetsExpiration) {
63
+ const expiration = Number(state.totalAssetsExpiration);
64
+ // 0 means "not configured" — skip the check rather than treat as stale.
65
+ if (Number.isFinite(expiration) && expiration > 0 && nowSeconds > expiration) {
66
+ signals.push({
67
+ code: 'stale_total_assets',
68
+ severity: 'High',
69
+ message: 'totalAssets valuation has expired — synchronous operations may be disabled and downstream analytics may be working from a stale TVL.',
70
+ });
71
+ }
72
+ }
73
+ return signals;
74
+ }
75
+ /**
76
+ * The risk-level floor implied by a set of signals. Critical > High > Medium.
77
+ * Returns null when no signals are present.
78
+ *
79
+ * Pair with `riskLevelMax(weightedLevel, floor)` to compute the effective
80
+ * level: the floor can only move the bucket up, never down.
81
+ */
82
+ export function operationalSignalFloor(signals) {
83
+ if (signals.length === 0)
84
+ return null;
85
+ if (signals.some((s) => s.severity === 'Critical'))
86
+ return 'Critical';
87
+ if (signals.some((s) => s.severity === 'High'))
88
+ return 'High';
89
+ return 'Medium';
90
+ }
91
+ const RISK_LEVEL_RANK = {
92
+ Low: 0,
93
+ Medium: 1,
94
+ High: 2,
95
+ Critical: 3,
96
+ };
97
+ /**
98
+ * Take the worse (higher) of two risk levels.
99
+ */
100
+ export function riskLevelMax(a, b) {
101
+ if (b === null)
102
+ return a;
103
+ return RISK_LEVEL_RANK[a] >= RISK_LEVEL_RANK[b] ? a : b;
104
+ }
105
+ //# sourceMappingURL=operational-signals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operational-signals.js","sourceRoot":"","sources":["../../src/utils/operational-signals.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/tool-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIpE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,CA0ChF"}
1
+ {"version":3,"file":"tool-error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/tool-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIpE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,CA4ChF"}
@@ -25,16 +25,18 @@ export function handleToolError(error, toolName) {
25
25
  logError(validationError, toolName);
26
26
  return errorResponse(validationError);
27
27
  }
28
- // Handle GraphQL errors — sanitize in production to avoid leaking internals
28
+ // Handle GraphQL errors — sanitize by default; the MCP runs over stdio in
29
+ // user environments where NODE_ENV is rarely 'production', so a production-only
30
+ // gate effectively unmasks backend internals to LLM clients. Verbose output
31
+ // is opt-in via LAGOON_DEBUG=1.
29
32
  if (error && typeof error === 'object' && 'response' in error) {
30
33
  const gqlError = error;
31
34
  if (gqlError.response?.errors) {
32
35
  logError(error, toolName);
33
- // Production: return only message fields. Dev: full details.
34
- const isProduction = process.env.NODE_ENV === 'production';
35
- const sanitized = isProduction
36
- ? gqlError.response.errors.map((e) => e.message ?? 'Unknown error').join('; ')
37
- : JSON.stringify(gqlError.response.errors, null, 2);
36
+ const verbose = process.env.LAGOON_DEBUG === '1';
37
+ const sanitized = verbose
38
+ ? JSON.stringify(gqlError.response.errors, null, 2)
39
+ : gqlError.response.errors.map((e) => e.message ?? 'Unknown error').join('; ');
38
40
  return {
39
41
  content: [
40
42
  {
@@ -1 +1 @@
1
- {"version":3,"file":"tool-error-handler.js","sourceRoot":"","sources":["../../src/utils/tool-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,QAAgB;IAC9D,0EAA0E;IAC1E,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7C,wEAAwE;YACxE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,eAAe,CACzC,4BAA4B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzD,CAAC;QACF,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAED,4EAA4E;IAC5E,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,KAEhB,CAAC;QACF,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC9B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1B,6DAA6D;YAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;YAC3D,MAAM,SAAS,GAAG,YAAY;gBAC5B,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9E,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,kBAAkB,SAAS,EAAE;qBACpC;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1B,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"tool-error-handler.js","sourceRoot":"","sources":["../../src/utils/tool-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,QAAgB;IAC9D,0EAA0E;IAC1E,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7C,wEAAwE;YACxE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,eAAe,CACzC,4BAA4B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzD,CAAC;QACF,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAED,0EAA0E;IAC1E,gFAAgF;IAChF,4EAA4E;IAC5E,gCAAgC;IAChC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,KAEhB,CAAC;QACF,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC9B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC;YACjD,MAAM,SAAS,GAAG,OAAO;gBACvB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnD,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,kBAAkB,SAAS,EAAE;qBACpC;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1B,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -106,6 +106,8 @@ export declare const searchVaultsInputSchema: z.ZodObject<{
106
106
  }>>;
107
107
  orderBy: z.ZodDefault<z.ZodEnum<["address", "chainId", "id", "totalAssetsUsd"]>>;
108
108
  orderDirection: z.ZodDefault<z.ZodEnum<["asc", "desc"]>>;
109
+ search: z.ZodOptional<z.ZodString>;
110
+ entityIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
109
111
  responseFormat: z.ZodDefault<z.ZodEnum<["list", "summary", "full"]>>;
110
112
  maxResults: z.ZodDefault<z.ZodNumber>;
111
113
  }, "strip", z.ZodTypeAny, {
@@ -134,6 +136,8 @@ export declare const searchVaultsInputSchema: z.ZodObject<{
134
136
  first: number;
135
137
  skip: number;
136
138
  } | undefined;
139
+ search?: string | undefined;
140
+ entityIds?: string[] | undefined;
137
141
  }, {
138
142
  responseFormat?: "full" | "list" | "summary" | undefined;
139
143
  filters?: {
@@ -159,6 +163,8 @@ export declare const searchVaultsInputSchema: z.ZodObject<{
159
163
  } | undefined;
160
164
  orderBy?: "chainId" | "address" | "id" | "totalAssetsUsd" | undefined;
161
165
  orderDirection?: "asc" | "desc" | undefined;
166
+ search?: string | undefined;
167
+ entityIds?: string[] | undefined;
162
168
  maxResults?: number | undefined;
163
169
  }>;
164
170
  export declare const getVaultPerformanceInputSchema: z.ZodObject<{
@@ -183,7 +189,7 @@ export declare const getVaultPerformanceInputSchema: z.ZodObject<{
183
189
  export declare const getTransactionsInputSchema: z.ZodObject<{
184
190
  vaultAddress: z.ZodEffects<z.ZodString, string, string>;
185
191
  chainId: z.ZodNumber;
186
- transactionTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["SettleDeposit", "SettleRedeem", "DepositRequest", "RedeemRequest", "NewTotalAssetsUpdated", "TotalAssetsUpdated", "PeriodSummary", "DepositSync", "DepositRequestCanceled", "RatesUpdated", "StateUpdated", "VaultState", "WhitelistUpdated"]>, "many">>;
192
+ transactionTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["SettleDeposit", "SettleRedeem", "DepositRequest", "DepositRequestCanceled", "RedeemRequest", "RedeemRequestCanceled", "Deposit", "Withdraw", "DepositSync", "WithdrawSync", "PreMint", "NewTotalAssetsUpdated", "TotalAssetsUpdated", "PeriodSummary", "StateUpdated", "VaultState", "RatesUpdated", "FeeTaken", "HaircutTaken", "AccessModeUpdated", "AsyncOnlyActivated", "BlacklistUpdated", "WhitelistUpdated", "ExternalSanctionsListUpdated", "GuardrailsStatusUpdated", "GuardrailsUpdated", "MaxCapUpdated", "NameUpdated", "SymbolUpdated", "SyncModeUpdated", "TotalAssetsExpirationUpdated", "SafeUpdated", "SecurityCouncilUpdated", "SuperOperatorUpdated", "ProxyDeployed"]>, "many">>;
187
193
  pagination: z.ZodOptional<z.ZodObject<{
188
194
  first: z.ZodDefault<z.ZodNumber>;
189
195
  skip: z.ZodDefault<z.ZodNumber>;
@@ -207,7 +213,7 @@ export declare const getTransactionsInputSchema: z.ZodObject<{
207
213
  first: number;
208
214
  skip: number;
209
215
  } | undefined;
210
- transactionTypes?: ("SettleDeposit" | "SettleRedeem" | "DepositRequest" | "RedeemRequest" | "NewTotalAssetsUpdated" | "TotalAssetsUpdated" | "PeriodSummary" | "DepositSync" | "DepositRequestCanceled" | "RatesUpdated" | "StateUpdated" | "VaultState" | "WhitelistUpdated")[] | undefined;
216
+ transactionTypes?: ("SettleDeposit" | "SettleRedeem" | "DepositRequest" | "DepositRequestCanceled" | "RedeemRequest" | "RedeemRequestCanceled" | "Deposit" | "Withdraw" | "DepositSync" | "WithdrawSync" | "PreMint" | "NewTotalAssetsUpdated" | "TotalAssetsUpdated" | "PeriodSummary" | "StateUpdated" | "VaultState" | "RatesUpdated" | "FeeTaken" | "HaircutTaken" | "AccessModeUpdated" | "AsyncOnlyActivated" | "BlacklistUpdated" | "WhitelistUpdated" | "ExternalSanctionsListUpdated" | "GuardrailsStatusUpdated" | "GuardrailsUpdated" | "MaxCapUpdated" | "NameUpdated" | "SymbolUpdated" | "SyncModeUpdated" | "TotalAssetsExpirationUpdated" | "SafeUpdated" | "SecurityCouncilUpdated" | "SuperOperatorUpdated" | "ProxyDeployed")[] | undefined;
211
217
  }, {
212
218
  vaultAddress: string;
213
219
  chainId: number;
@@ -218,16 +224,18 @@ export declare const getTransactionsInputSchema: z.ZodObject<{
218
224
  } | undefined;
219
225
  orderBy?: "chainId" | "id" | "blockNumber" | "timestamp" | undefined;
220
226
  orderDirection?: "asc" | "desc" | undefined;
221
- transactionTypes?: ("SettleDeposit" | "SettleRedeem" | "DepositRequest" | "RedeemRequest" | "NewTotalAssetsUpdated" | "TotalAssetsUpdated" | "PeriodSummary" | "DepositSync" | "DepositRequestCanceled" | "RatesUpdated" | "StateUpdated" | "VaultState" | "WhitelistUpdated")[] | undefined;
227
+ transactionTypes?: ("SettleDeposit" | "SettleRedeem" | "DepositRequest" | "DepositRequestCanceled" | "RedeemRequest" | "RedeemRequestCanceled" | "Deposit" | "Withdraw" | "DepositSync" | "WithdrawSync" | "PreMint" | "NewTotalAssetsUpdated" | "TotalAssetsUpdated" | "PeriodSummary" | "StateUpdated" | "VaultState" | "RatesUpdated" | "FeeTaken" | "HaircutTaken" | "AccessModeUpdated" | "AsyncOnlyActivated" | "BlacklistUpdated" | "WhitelistUpdated" | "ExternalSanctionsListUpdated" | "GuardrailsStatusUpdated" | "GuardrailsUpdated" | "MaxCapUpdated" | "NameUpdated" | "SymbolUpdated" | "SyncModeUpdated" | "TotalAssetsExpirationUpdated" | "SafeUpdated" | "SecurityCouncilUpdated" | "SuperOperatorUpdated" | "ProxyDeployed")[] | undefined;
222
228
  }>;
223
229
  export declare const compareVaultsInputSchema: z.ZodEffects<z.ZodObject<{
224
230
  vaultAddresses: z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">;
225
231
  chainId: z.ZodOptional<z.ZodNumber>;
226
232
  chainIds: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
227
233
  responseFormat: z.ZodDefault<z.ZodEnum<["summary", "full"]>>;
234
+ rankBy: z.ZodDefault<z.ZodEnum<["totalApr", "sustainableApr"]>>;
228
235
  }, "strip", z.ZodTypeAny, {
229
236
  responseFormat: "full" | "summary";
230
237
  vaultAddresses: string[];
238
+ rankBy: "totalApr" | "sustainableApr";
231
239
  chainId?: number | undefined;
232
240
  chainIds?: number[] | undefined;
233
241
  }, {
@@ -235,9 +243,11 @@ export declare const compareVaultsInputSchema: z.ZodEffects<z.ZodObject<{
235
243
  chainId?: number | undefined;
236
244
  responseFormat?: "full" | "summary" | undefined;
237
245
  chainIds?: number[] | undefined;
246
+ rankBy?: "totalApr" | "sustainableApr" | undefined;
238
247
  }>, {
239
248
  responseFormat: "full" | "summary";
240
249
  vaultAddresses: string[];
250
+ rankBy: "totalApr" | "sustainableApr";
241
251
  chainId?: number | undefined;
242
252
  chainIds?: number[] | undefined;
243
253
  }, {
@@ -245,6 +255,7 @@ export declare const compareVaultsInputSchema: z.ZodEffects<z.ZodObject<{
245
255
  chainId?: number | undefined;
246
256
  responseFormat?: "full" | "summary" | undefined;
247
257
  chainIds?: number[] | undefined;
258
+ rankBy?: "totalApr" | "sustainableApr" | undefined;
248
259
  }>;
249
260
  export declare const priceHistoryInputSchema: z.ZodObject<{
250
261
  vaultAddress: z.ZodEffects<z.ZodString, string, string>;
@@ -382,14 +393,105 @@ export declare const optimizePortfolioInputSchema: z.ZodObject<{
382
393
  }>;
383
394
  export declare const getVaultCompositionInputSchema: z.ZodObject<{
384
395
  vaultAddress: z.ZodEffects<z.ZodString, string, string>;
396
+ chainId: z.ZodNumber;
385
397
  responseFormat: z.ZodDefault<z.ZodEnum<["summary", "protocols", "full"]>>;
386
398
  }, "strip", z.ZodTypeAny, {
387
399
  vaultAddress: string;
400
+ chainId: number;
388
401
  responseFormat: "full" | "summary" | "protocols";
389
402
  }, {
390
403
  vaultAddress: string;
404
+ chainId: number;
391
405
  responseFormat?: "full" | "summary" | "protocols" | undefined;
392
406
  }>;
407
+ export declare const getGlobalTvlInputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
408
+ export declare const getIndexingStatusInputSchema: z.ZodObject<{
409
+ chainIds: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
410
+ }, "strip", z.ZodTypeAny, {
411
+ chainIds?: number[] | undefined;
412
+ }, {
413
+ chainIds?: number[] | undefined;
414
+ }>;
415
+ export declare const listChainsInputSchema: z.ZodObject<{
416
+ isVisible: z.ZodOptional<z.ZodBoolean>;
417
+ pagination: z.ZodOptional<z.ZodObject<{
418
+ first: z.ZodDefault<z.ZodNumber>;
419
+ skip: z.ZodDefault<z.ZodNumber>;
420
+ }, "strip", z.ZodTypeAny, {
421
+ first: number;
422
+ skip: number;
423
+ }, {
424
+ first?: number | undefined;
425
+ skip?: number | undefined;
426
+ }>>;
427
+ }, "strip", z.ZodTypeAny, {
428
+ pagination?: {
429
+ first: number;
430
+ skip: number;
431
+ } | undefined;
432
+ isVisible?: boolean | undefined;
433
+ }, {
434
+ pagination?: {
435
+ first?: number | undefined;
436
+ skip?: number | undefined;
437
+ } | undefined;
438
+ isVisible?: boolean | undefined;
439
+ }>;
440
+ export declare const listCuratorsInputSchema: z.ZodObject<{
441
+ isVisible: z.ZodOptional<z.ZodBoolean>;
442
+ pagination: z.ZodOptional<z.ZodObject<{
443
+ first: z.ZodDefault<z.ZodNumber>;
444
+ skip: z.ZodDefault<z.ZodNumber>;
445
+ }, "strip", z.ZodTypeAny, {
446
+ first: number;
447
+ skip: number;
448
+ }, {
449
+ first?: number | undefined;
450
+ skip?: number | undefined;
451
+ }>>;
452
+ }, "strip", z.ZodTypeAny, {
453
+ pagination?: {
454
+ first: number;
455
+ skip: number;
456
+ } | undefined;
457
+ isVisible?: boolean | undefined;
458
+ }, {
459
+ pagination?: {
460
+ first?: number | undefined;
461
+ skip?: number | undefined;
462
+ } | undefined;
463
+ isVisible?: boolean | undefined;
464
+ }>;
465
+ export declare const getCuratorInputSchema: z.ZodObject<{
466
+ curatorId: z.ZodString;
467
+ }, "strip", z.ZodTypeAny, {
468
+ curatorId: string;
469
+ }, {
470
+ curatorId: string;
471
+ }>;
472
+ export declare const getAssetInputSchema: z.ZodObject<{
473
+ assetAddress: z.ZodEffects<z.ZodString, string, string>;
474
+ chainId: z.ZodNumber;
475
+ }, "strip", z.ZodTypeAny, {
476
+ chainId: number;
477
+ assetAddress: string;
478
+ }, {
479
+ chainId: number;
480
+ assetAddress: string;
481
+ }>;
482
+ export declare const getHistoricalStateInputSchema: z.ZodObject<{
483
+ vaultAddress: z.ZodEffects<z.ZodString, string, string>;
484
+ chainId: z.ZodNumber;
485
+ timestamp: z.ZodNumber;
486
+ }, "strip", z.ZodTypeAny, {
487
+ vaultAddress: string;
488
+ chainId: number;
489
+ timestamp: number;
490
+ }, {
491
+ vaultAddress: string;
492
+ chainId: number;
493
+ timestamp: number;
494
+ }>;
393
495
  /**
394
496
  * Type inference helpers
395
497
  */
@@ -407,4 +509,11 @@ export type AnalyzeRisksInput = z.infer<typeof analyzeRisksInputSchema>;
407
509
  export type PredictYieldInput = z.infer<typeof predictYieldInputSchema>;
408
510
  export type OptimizePortfolioInput = z.infer<typeof optimizePortfolioInputSchema>;
409
511
  export type GetVaultCompositionInput = z.infer<typeof getVaultCompositionInputSchema>;
512
+ export type GetGlobalTvlInput = z.infer<typeof getGlobalTvlInputSchema>;
513
+ export type GetIndexingStatusInput = z.infer<typeof getIndexingStatusInputSchema>;
514
+ export type ListChainsInput = z.infer<typeof listChainsInputSchema>;
515
+ export type ListCuratorsInput = z.infer<typeof listCuratorsInputSchema>;
516
+ export type GetCuratorInput = z.infer<typeof getCuratorInputSchema>;
517
+ export type GetAssetInput = z.infer<typeof getAssetInputSchema>;
518
+ export type GetHistoricalStateInput = z.infer<typeof getHistoricalStateInputSchema>;
410
519
  //# sourceMappingURL=validators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"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"}