@lagoon-protocol/lagoon-mcp 0.1.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 (335) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +618 -0
  3. package/dist/cache/index.d.ts +97 -0
  4. package/dist/cache/index.d.ts.map +1 -0
  5. package/dist/cache/index.js +106 -0
  6. package/dist/cache/index.js.map +1 -0
  7. package/dist/config.d.ts +34 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +40 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/core/cache-adapter.d.ts +73 -0
  12. package/dist/core/cache-adapter.d.ts.map +1 -0
  13. package/dist/core/cache-adapter.js +47 -0
  14. package/dist/core/cache-adapter.js.map +1 -0
  15. package/dist/core/cache-invalidation.d.ts +72 -0
  16. package/dist/core/cache-invalidation.d.ts.map +1 -0
  17. package/dist/core/cache-invalidation.js +114 -0
  18. package/dist/core/cache-invalidation.js.map +1 -0
  19. package/dist/core/container.d.ts +34 -0
  20. package/dist/core/container.d.ts.map +1 -0
  21. package/dist/core/container.js +75 -0
  22. package/dist/core/container.js.map +1 -0
  23. package/dist/graphql/client.d.ts +32 -0
  24. package/dist/graphql/client.d.ts.map +1 -0
  25. package/dist/graphql/client.js +49 -0
  26. package/dist/graphql/client.js.map +1 -0
  27. package/dist/graphql/fragments/apr-breakdown.fragment.d.ts +64 -0
  28. package/dist/graphql/fragments/apr-breakdown.fragment.d.ts.map +1 -0
  29. package/dist/graphql/fragments/apr-breakdown.fragment.js +62 -0
  30. package/dist/graphql/fragments/apr-breakdown.fragment.js.map +1 -0
  31. package/dist/graphql/fragments/asset-info.fragment.d.ts +18 -0
  32. package/dist/graphql/fragments/asset-info.fragment.d.ts.map +1 -0
  33. package/dist/graphql/fragments/asset-info.fragment.js +36 -0
  34. package/dist/graphql/fragments/asset-info.fragment.js.map +1 -0
  35. package/dist/graphql/fragments/chain-info.fragment.d.ts +18 -0
  36. package/dist/graphql/fragments/chain-info.fragment.d.ts.map +1 -0
  37. package/dist/graphql/fragments/chain-info.fragment.js +32 -0
  38. package/dist/graphql/fragments/chain-info.fragment.js.map +1 -0
  39. package/dist/graphql/fragments/index.d.ts +15 -0
  40. package/dist/graphql/fragments/index.d.ts.map +1 -0
  41. package/dist/graphql/fragments/index.js +21 -0
  42. package/dist/graphql/fragments/index.js.map +1 -0
  43. package/dist/graphql/fragments/pageinfo.fragment.d.ts +33 -0
  44. package/dist/graphql/fragments/pageinfo.fragment.d.ts.map +1 -0
  45. package/dist/graphql/fragments/pageinfo.fragment.js +47 -0
  46. package/dist/graphql/fragments/pageinfo.fragment.js.map +1 -0
  47. package/dist/graphql/fragments/transaction-base.fragment.d.ts +19 -0
  48. package/dist/graphql/fragments/transaction-base.fragment.d.ts.map +1 -0
  49. package/dist/graphql/fragments/transaction-base.fragment.js +32 -0
  50. package/dist/graphql/fragments/transaction-base.fragment.js.map +1 -0
  51. package/dist/graphql/fragments/vault-list.fragment.d.ts +53 -0
  52. package/dist/graphql/fragments/vault-list.fragment.d.ts.map +1 -0
  53. package/dist/graphql/fragments/vault-list.fragment.js +51 -0
  54. package/dist/graphql/fragments/vault-list.fragment.js.map +1 -0
  55. package/dist/graphql/fragments/vault-summary.fragment.d.ts +68 -0
  56. package/dist/graphql/fragments/vault-summary.fragment.d.ts.map +1 -0
  57. package/dist/graphql/fragments/vault-summary.fragment.js +66 -0
  58. package/dist/graphql/fragments/vault-summary.fragment.js.map +1 -0
  59. package/dist/graphql/fragments/vault.fragment.d.ts +133 -0
  60. package/dist/graphql/fragments/vault.fragment.d.ts.map +1 -0
  61. package/dist/graphql/fragments/vault.fragment.js +119 -0
  62. package/dist/graphql/fragments/vault.fragment.js.map +1 -0
  63. package/dist/graphql/fragments.d.ts +183 -0
  64. package/dist/graphql/fragments.d.ts.map +1 -0
  65. package/dist/graphql/fragments.js +297 -0
  66. package/dist/graphql/fragments.js.map +1 -0
  67. package/dist/graphql/queries/export.queries.d.ts +72 -0
  68. package/dist/graphql/queries/export.queries.d.ts.map +1 -0
  69. package/dist/graphql/queries/export.queries.js +202 -0
  70. package/dist/graphql/queries/export.queries.js.map +1 -0
  71. package/dist/graphql/queries/index.d.ts +15 -0
  72. package/dist/graphql/queries/index.d.ts.map +1 -0
  73. package/dist/graphql/queries/index.js +23 -0
  74. package/dist/graphql/queries/index.js.map +1 -0
  75. package/dist/graphql/queries/performance.queries.d.ts +63 -0
  76. package/dist/graphql/queries/performance.queries.d.ts.map +1 -0
  77. package/dist/graphql/queries/performance.queries.js +133 -0
  78. package/dist/graphql/queries/performance.queries.js.map +1 -0
  79. package/dist/graphql/queries/period-summaries.d.ts +15 -0
  80. package/dist/graphql/queries/period-summaries.d.ts.map +1 -0
  81. package/dist/graphql/queries/period-summaries.js +24 -0
  82. package/dist/graphql/queries/period-summaries.js.map +1 -0
  83. package/dist/graphql/queries/portfolio.queries.d.ts +78 -0
  84. package/dist/graphql/queries/portfolio.queries.d.ts.map +1 -0
  85. package/dist/graphql/queries/portfolio.queries.js +198 -0
  86. package/dist/graphql/queries/portfolio.queries.js.map +1 -0
  87. package/dist/graphql/queries/prediction.queries.d.ts +38 -0
  88. package/dist/graphql/queries/prediction.queries.d.ts.map +1 -0
  89. package/dist/graphql/queries/prediction.queries.js +100 -0
  90. package/dist/graphql/queries/prediction.queries.js.map +1 -0
  91. package/dist/graphql/queries/risk.queries.d.ts +37 -0
  92. package/dist/graphql/queries/risk.queries.d.ts.map +1 -0
  93. package/dist/graphql/queries/risk.queries.js +90 -0
  94. package/dist/graphql/queries/risk.queries.js.map +1 -0
  95. package/dist/graphql/queries/search.queries.d.ts +61 -0
  96. package/dist/graphql/queries/search.queries.d.ts.map +1 -0
  97. package/dist/graphql/queries/search.queries.js +103 -0
  98. package/dist/graphql/queries/search.queries.js.map +1 -0
  99. package/dist/graphql/queries/transaction.queries.d.ts +60 -0
  100. package/dist/graphql/queries/transaction.queries.d.ts.map +1 -0
  101. package/dist/graphql/queries/transaction.queries.js +252 -0
  102. package/dist/graphql/queries/transaction.queries.js.map +1 -0
  103. package/dist/graphql/queries/vault.queries.d.ts +54 -0
  104. package/dist/graphql/queries/vault.queries.d.ts.map +1 -0
  105. package/dist/graphql/queries/vault.queries.js +78 -0
  106. package/dist/graphql/queries/vault.queries.js.map +1 -0
  107. package/dist/index.d.ts +12 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +32 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/prompts/competitor-comparison.d.ts +8 -0
  112. package/dist/prompts/competitor-comparison.d.ts.map +1 -0
  113. package/dist/prompts/competitor-comparison.js +432 -0
  114. package/dist/prompts/competitor-comparison.js.map +1 -0
  115. package/dist/prompts/curator-performance.d.ts +8 -0
  116. package/dist/prompts/curator-performance.d.ts.map +1 -0
  117. package/dist/prompts/curator-performance.js +383 -0
  118. package/dist/prompts/curator-performance.js.map +1 -0
  119. package/dist/prompts/financial-analysis.d.ts +8 -0
  120. package/dist/prompts/financial-analysis.d.ts.map +1 -0
  121. package/dist/prompts/financial-analysis.js +480 -0
  122. package/dist/prompts/financial-analysis.js.map +1 -0
  123. package/dist/prompts/index.d.ts +21 -0
  124. package/dist/prompts/index.d.ts.map +1 -0
  125. package/dist/prompts/index.js +50 -0
  126. package/dist/prompts/index.js.map +1 -0
  127. package/dist/prompts/onboarding-first-vault.d.ts +8 -0
  128. package/dist/prompts/onboarding-first-vault.d.ts.map +1 -0
  129. package/dist/prompts/onboarding-first-vault.js +317 -0
  130. package/dist/prompts/onboarding-first-vault.js.map +1 -0
  131. package/dist/prompts/portfolio-optimization.d.ts +8 -0
  132. package/dist/prompts/portfolio-optimization.d.ts.map +1 -0
  133. package/dist/prompts/portfolio-optimization.js +412 -0
  134. package/dist/prompts/portfolio-optimization.js.map +1 -0
  135. package/dist/prompts/protocol-overview.d.ts +8 -0
  136. package/dist/prompts/protocol-overview.d.ts.map +1 -0
  137. package/dist/prompts/protocol-overview.js +398 -0
  138. package/dist/prompts/protocol-overview.js.map +1 -0
  139. package/dist/prompts/shared/disclaimers.d.ts +54 -0
  140. package/dist/prompts/shared/disclaimers.d.ts.map +1 -0
  141. package/dist/prompts/shared/disclaimers.js +400 -0
  142. package/dist/prompts/shared/disclaimers.js.map +1 -0
  143. package/dist/resources/glossary.d.ts +8 -0
  144. package/dist/resources/glossary.d.ts.map +1 -0
  145. package/dist/resources/glossary.js +407 -0
  146. package/dist/resources/glossary.js.map +1 -0
  147. package/dist/resources/index.d.ts +18 -0
  148. package/dist/resources/index.d.ts.map +1 -0
  149. package/dist/resources/index.js +29 -0
  150. package/dist/resources/index.js.map +1 -0
  151. package/dist/resources/schema.d.ts +22 -0
  152. package/dist/resources/schema.d.ts.map +1 -0
  153. package/dist/resources/schema.js +67 -0
  154. package/dist/resources/schema.js.map +1 -0
  155. package/dist/schemas/config.schema.d.ts +46 -0
  156. package/dist/schemas/config.schema.d.ts.map +1 -0
  157. package/dist/schemas/config.schema.js +48 -0
  158. package/dist/schemas/config.schema.js.map +1 -0
  159. package/dist/sdk/__tests__/apr-service.test.d.ts +7 -0
  160. package/dist/sdk/__tests__/apr-service.test.d.ts.map +1 -0
  161. package/dist/sdk/__tests__/apr-service.test.js +385 -0
  162. package/dist/sdk/__tests__/apr-service.test.js.map +1 -0
  163. package/dist/sdk/__tests__/math-utils.test.d.ts +7 -0
  164. package/dist/sdk/__tests__/math-utils.test.d.ts.map +1 -0
  165. package/dist/sdk/__tests__/math-utils.test.js +185 -0
  166. package/dist/sdk/__tests__/math-utils.test.js.map +1 -0
  167. package/dist/sdk/__tests__/simulation-service.test.d.ts +5 -0
  168. package/dist/sdk/__tests__/simulation-service.test.d.ts.map +1 -0
  169. package/dist/sdk/__tests__/simulation-service.test.js +397 -0
  170. package/dist/sdk/__tests__/simulation-service.test.js.map +1 -0
  171. package/dist/sdk/__tests__/vault-utils.test.d.ts +7 -0
  172. package/dist/sdk/__tests__/vault-utils.test.d.ts.map +1 -0
  173. package/dist/sdk/__tests__/vault-utils.test.js +189 -0
  174. package/dist/sdk/__tests__/vault-utils.test.js.map +1 -0
  175. package/dist/sdk/apr-service.d.ts +101 -0
  176. package/dist/sdk/apr-service.d.ts.map +1 -0
  177. package/dist/sdk/apr-service.js +175 -0
  178. package/dist/sdk/apr-service.js.map +1 -0
  179. package/dist/sdk/math-utils.d.ts +138 -0
  180. package/dist/sdk/math-utils.d.ts.map +1 -0
  181. package/dist/sdk/math-utils.js +218 -0
  182. package/dist/sdk/math-utils.js.map +1 -0
  183. package/dist/sdk/simulation-service.d.ts +106 -0
  184. package/dist/sdk/simulation-service.d.ts.map +1 -0
  185. package/dist/sdk/simulation-service.js +143 -0
  186. package/dist/sdk/simulation-service.js.map +1 -0
  187. package/dist/sdk/vault-utils.d.ts +125 -0
  188. package/dist/sdk/vault-utils.d.ts.map +1 -0
  189. package/dist/sdk/vault-utils.js +165 -0
  190. package/dist/sdk/vault-utils.js.map +1 -0
  191. package/dist/server.d.ts +21 -0
  192. package/dist/server.d.ts.map +1 -0
  193. package/dist/server.js +225 -0
  194. package/dist/server.js.map +1 -0
  195. package/dist/services/analytics/protocol-overview.service.d.ts +61 -0
  196. package/dist/services/analytics/protocol-overview.service.d.ts.map +1 -0
  197. package/dist/services/analytics/protocol-overview.service.js +182 -0
  198. package/dist/services/analytics/protocol-overview.service.js.map +1 -0
  199. package/dist/services/analytics/risk.service.d.ts +92 -0
  200. package/dist/services/analytics/risk.service.d.ts.map +1 -0
  201. package/dist/services/analytics/risk.service.js +423 -0
  202. package/dist/services/analytics/risk.service.js.map +1 -0
  203. package/dist/services/base.service.d.ts +39 -0
  204. package/dist/services/base.service.d.ts.map +1 -0
  205. package/dist/services/base.service.js +37 -0
  206. package/dist/services/base.service.js.map +1 -0
  207. package/dist/services/index.d.ts +30 -0
  208. package/dist/services/index.d.ts.map +1 -0
  209. package/dist/services/index.js +101 -0
  210. package/dist/services/index.js.map +1 -0
  211. package/dist/tools/__tests__/simulate-vault.test.d.ts +5 -0
  212. package/dist/tools/__tests__/simulate-vault.test.d.ts.map +1 -0
  213. package/dist/tools/__tests__/simulate-vault.test.js +363 -0
  214. package/dist/tools/__tests__/simulate-vault.test.js.map +1 -0
  215. package/dist/tools/analyze-risk.d.ts +34 -0
  216. package/dist/tools/analyze-risk.d.ts.map +1 -0
  217. package/dist/tools/analyze-risk.js +100 -0
  218. package/dist/tools/analyze-risk.js.map +1 -0
  219. package/dist/tools/compare-vaults.d.ts +29 -0
  220. package/dist/tools/compare-vaults.d.ts.map +1 -0
  221. package/dist/tools/compare-vaults.js +285 -0
  222. package/dist/tools/compare-vaults.js.map +1 -0
  223. package/dist/tools/export-data.d.ts +34 -0
  224. package/dist/tools/export-data.d.ts.map +1 -0
  225. package/dist/tools/export-data.js +309 -0
  226. package/dist/tools/export-data.js.map +1 -0
  227. package/dist/tools/get-price-history.d.ts +29 -0
  228. package/dist/tools/get-price-history.d.ts.map +1 -0
  229. package/dist/tools/get-price-history.js +236 -0
  230. package/dist/tools/get-price-history.js.map +1 -0
  231. package/dist/tools/get-transactions.d.ts +29 -0
  232. package/dist/tools/get-transactions.d.ts.map +1 -0
  233. package/dist/tools/get-transactions.js +181 -0
  234. package/dist/tools/get-transactions.js.map +1 -0
  235. package/dist/tools/index.d.ts +26 -0
  236. package/dist/tools/index.d.ts.map +1 -0
  237. package/dist/tools/index.js +32 -0
  238. package/dist/tools/index.js.map +1 -0
  239. package/dist/tools/optimize-portfolio.d.ts +37 -0
  240. package/dist/tools/optimize-portfolio.d.ts.map +1 -0
  241. package/dist/tools/optimize-portfolio.js +459 -0
  242. package/dist/tools/optimize-portfolio.js.map +1 -0
  243. package/dist/tools/predict-yield.d.ts +30 -0
  244. package/dist/tools/predict-yield.d.ts.map +1 -0
  245. package/dist/tools/predict-yield.js +248 -0
  246. package/dist/tools/predict-yield.js.map +1 -0
  247. package/dist/tools/query-graphql.d.ts +35 -0
  248. package/dist/tools/query-graphql.d.ts.map +1 -0
  249. package/dist/tools/query-graphql.js +54 -0
  250. package/dist/tools/query-graphql.js.map +1 -0
  251. package/dist/tools/registry.d.ts +42 -0
  252. package/dist/tools/registry.d.ts.map +1 -0
  253. package/dist/tools/registry.js +231 -0
  254. package/dist/tools/registry.js.map +1 -0
  255. package/dist/tools/search-vaults.d.ts +40 -0
  256. package/dist/tools/search-vaults.d.ts.map +1 -0
  257. package/dist/tools/search-vaults.js +184 -0
  258. package/dist/tools/search-vaults.js.map +1 -0
  259. package/dist/tools/simulate-vault.d.ts +80 -0
  260. package/dist/tools/simulate-vault.d.ts.map +1 -0
  261. package/dist/tools/simulate-vault.js +281 -0
  262. package/dist/tools/simulate-vault.js.map +1 -0
  263. package/dist/tools/user-portfolio.d.ts +30 -0
  264. package/dist/tools/user-portfolio.d.ts.map +1 -0
  265. package/dist/tools/user-portfolio.js +142 -0
  266. package/dist/tools/user-portfolio.js.map +1 -0
  267. package/dist/tools/vault-data.d.ts +23 -0
  268. package/dist/tools/vault-data.d.ts.map +1 -0
  269. package/dist/tools/vault-data.js +68 -0
  270. package/dist/tools/vault-data.js.map +1 -0
  271. package/dist/tools/vault-performance.d.ts +30 -0
  272. package/dist/tools/vault-performance.d.ts.map +1 -0
  273. package/dist/tools/vault-performance.js +275 -0
  274. package/dist/tools/vault-performance.js.map +1 -0
  275. package/dist/types/generated.d.ts +1109 -0
  276. package/dist/types/generated.d.ts.map +1 -0
  277. package/dist/types/generated.js +2 -0
  278. package/dist/types/generated.js.map +1 -0
  279. package/dist/types/index.d.ts +46 -0
  280. package/dist/types/index.d.ts.map +1 -0
  281. package/dist/types/index.js +8 -0
  282. package/dist/types/index.js.map +1 -0
  283. package/dist/utils/comparison-metrics.d.ts +120 -0
  284. package/dist/utils/comparison-metrics.d.ts.map +1 -0
  285. package/dist/utils/comparison-metrics.js +215 -0
  286. package/dist/utils/comparison-metrics.js.map +1 -0
  287. package/dist/utils/config-loader.d.ts +17 -0
  288. package/dist/utils/config-loader.d.ts.map +1 -0
  289. package/dist/utils/config-loader.js +45 -0
  290. package/dist/utils/config-loader.js.map +1 -0
  291. package/dist/utils/csv-generator.d.ts +89 -0
  292. package/dist/utils/csv-generator.d.ts.map +1 -0
  293. package/dist/utils/csv-generator.js +97 -0
  294. package/dist/utils/csv-generator.js.map +1 -0
  295. package/dist/utils/disclaimers.d.ts +70 -0
  296. package/dist/utils/disclaimers.d.ts.map +1 -0
  297. package/dist/utils/disclaimers.js +161 -0
  298. package/dist/utils/disclaimers.js.map +1 -0
  299. package/dist/utils/errors.d.ts +66 -0
  300. package/dist/utils/errors.d.ts.map +1 -0
  301. package/dist/utils/errors.js +86 -0
  302. package/dist/utils/errors.js.map +1 -0
  303. package/dist/utils/execute-tool-with-cache.d.ts +97 -0
  304. package/dist/utils/execute-tool-with-cache.d.ts.map +1 -0
  305. package/dist/utils/execute-tool-with-cache.js +105 -0
  306. package/dist/utils/execute-tool-with-cache.js.map +1 -0
  307. package/dist/utils/portfolio-optimization.d.ts +100 -0
  308. package/dist/utils/portfolio-optimization.d.ts.map +1 -0
  309. package/dist/utils/portfolio-optimization.js +283 -0
  310. package/dist/utils/portfolio-optimization.js.map +1 -0
  311. package/dist/utils/risk-scoring.d.ts +226 -0
  312. package/dist/utils/risk-scoring.d.ts.map +1 -0
  313. package/dist/utils/risk-scoring.js +523 -0
  314. package/dist/utils/risk-scoring.js.map +1 -0
  315. package/dist/utils/tool-error-handler.d.ts +16 -0
  316. package/dist/utils/tool-error-handler.d.ts.map +1 -0
  317. package/dist/utils/tool-error-handler.js +43 -0
  318. package/dist/utils/tool-error-handler.js.map +1 -0
  319. package/dist/utils/tool-handler.d.ts +33 -0
  320. package/dist/utils/tool-handler.d.ts.map +1 -0
  321. package/dist/utils/tool-handler.js +59 -0
  322. package/dist/utils/tool-handler.js.map +1 -0
  323. package/dist/utils/tool-response.d.ts +16 -0
  324. package/dist/utils/tool-response.d.ts.map +1 -0
  325. package/dist/utils/tool-response.js +25 -0
  326. package/dist/utils/tool-response.js.map +1 -0
  327. package/dist/utils/validators.d.ts +359 -0
  328. package/dist/utils/validators.d.ts.map +1 -0
  329. package/dist/utils/validators.js +233 -0
  330. package/dist/utils/validators.js.map +1 -0
  331. package/dist/utils/yield-prediction.d.ts +69 -0
  332. package/dist/utils/yield-prediction.d.ts.map +1 -0
  333. package/dist/utils/yield-prediction.js +290 -0
  334. package/dist/utils/yield-prediction.js.map +1 -0
  335. package/package.json +83 -0
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Input Validation Schemas
3
+ *
4
+ * Zod schemas for runtime type validation of tool inputs
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Reusable validation schemas
9
+ */
10
+ // Ethereum address (0x + 40 hex characters)
11
+ export const ethereumAddressSchema = z
12
+ .string()
13
+ .regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid Ethereum address format (must be 0x followed by 40 hex characters)');
14
+ // Chain ID (positive integer)
15
+ export const chainIdSchema = z.number().int().positive('Chain ID must be a positive integer');
16
+ // Pagination first parameter
17
+ export const paginationFirstSchema = z
18
+ .number()
19
+ .int()
20
+ .positive()
21
+ .max(1000, 'Maximum page size is 1000')
22
+ .default(100);
23
+ // Pagination skip parameter
24
+ export const paginationSkipSchema = z
25
+ .number()
26
+ .int()
27
+ .nonnegative('Skip must be non-negative')
28
+ .default(0);
29
+ /**
30
+ * Tool-specific validation schemas
31
+ */
32
+ // query_graphql input
33
+ export const queryGraphQLInputSchema = z.object({
34
+ query: z.string().min(1, 'Query cannot be empty'),
35
+ variables: z.record(z.unknown()).optional(),
36
+ });
37
+ // get_vault_data input
38
+ export const getVaultDataInputSchema = z.object({
39
+ vaultAddress: ethereumAddressSchema,
40
+ chainId: chainIdSchema,
41
+ });
42
+ // get_user_portfolio input
43
+ export const getUserPortfolioInputSchema = z.object({
44
+ userAddress: ethereumAddressSchema,
45
+ responseFormat: z
46
+ .enum(['list', 'summary', 'full'])
47
+ .default('summary')
48
+ .describe('Response detail level: list (~60 tokens/vault), summary (~170 tokens/vault), full (~600 tokens/vault). Default: summary'),
49
+ });
50
+ // search_vaults input
51
+ export const searchVaultsInputSchema = z.object({
52
+ filters: z
53
+ .object({
54
+ // Asset filters
55
+ assetSymbol_eq: z.string().optional(),
56
+ assetSymbol_in: z.array(z.string()).optional(),
57
+ assetId_eq: z.string().optional(),
58
+ assetId_in: z.array(z.string()).optional(),
59
+ // Chain filters
60
+ chainId_eq: chainIdSchema.optional(),
61
+ chainId_in: z.array(chainIdSchema).optional(),
62
+ // TVL filters (nested state filters)
63
+ state_totalAssetsUsd_gte: z.number().positive().optional(),
64
+ state_totalAssetsUsd_lte: z.number().positive().optional(),
65
+ // Curator filters
66
+ curatorIds_contains: z.array(z.string()).optional(),
67
+ curatorIds_contains_any: z.array(z.string()).optional(),
68
+ // Visibility
69
+ isVisible_eq: z.boolean().optional(),
70
+ // Additional filters
71
+ address_eq: ethereumAddressSchema.optional(),
72
+ address_in: z.array(ethereumAddressSchema).optional(),
73
+ symbol_eq: z.string().optional(),
74
+ symbol_in: z.array(z.string()).optional(),
75
+ integratorId_eq: z.string().optional(),
76
+ integratorId_in: z.array(z.string()).optional(),
77
+ })
78
+ .optional(),
79
+ pagination: z
80
+ .object({
81
+ first: paginationFirstSchema,
82
+ skip: paginationSkipSchema,
83
+ })
84
+ .optional(),
85
+ orderBy: z.string().default('totalAssetsUsd'),
86
+ orderDirection: z.enum(['asc', 'desc']).default('desc'),
87
+ // NEW: Response format for token optimization
88
+ responseFormat: z
89
+ .enum(['list', 'summary', 'full'])
90
+ .default('list')
91
+ .describe('Response detail level: list (~60 tokens/vault), summary (~170 tokens/vault), full (~600 tokens/vault)'),
92
+ // NEW: Maximum results for token budget control
93
+ maxResults: z
94
+ .number()
95
+ .int()
96
+ .positive()
97
+ .min(1)
98
+ .max(50)
99
+ .default(20)
100
+ .describe('Maximum number of results to return (default: 20, max: 50)'),
101
+ });
102
+ // get_vault_performance input
103
+ export const getVaultPerformanceInputSchema = z.object({
104
+ vaultAddress: ethereumAddressSchema,
105
+ chainId: chainIdSchema,
106
+ timeRange: z.enum(['7d', '30d', '90d', '1y'], {
107
+ errorMap: () => ({ message: 'Time range must be one of: 7d, 30d, 90d, 1y' }),
108
+ }),
109
+ includeSDKCalculations: z.boolean().optional().default(true),
110
+ responseFormat: z
111
+ .enum(['summary', 'detailed'])
112
+ .default('summary')
113
+ .describe('Response detail level: summary (key metrics only), detailed (full metrics table). Default: summary'),
114
+ });
115
+ // get_transactions input
116
+ export const getTransactionsInputSchema = z.object({
117
+ vaultAddress: ethereumAddressSchema,
118
+ chainId: chainIdSchema,
119
+ transactionTypes: z
120
+ .array(z.enum([
121
+ 'SettleDeposit',
122
+ 'SettleRedeem',
123
+ 'DepositRequest',
124
+ 'RedeemRequest',
125
+ 'NewTotalAssetsUpdated',
126
+ 'TotalAssetsUpdated',
127
+ 'PeriodSummary',
128
+ 'DepositSync',
129
+ 'DepositRequestCanceled',
130
+ 'RatesUpdated',
131
+ 'StateUpdated',
132
+ ]))
133
+ .optional(),
134
+ pagination: z
135
+ .object({
136
+ first: paginationFirstSchema,
137
+ skip: paginationSkipSchema,
138
+ })
139
+ .optional(),
140
+ orderBy: z.enum(['blockNumber', 'timestamp', 'id', 'chainId']).default('blockNumber'),
141
+ orderDirection: z.enum(['asc', 'desc']).default('desc'),
142
+ responseFormat: z
143
+ .enum(['summary', 'list', 'detailed'])
144
+ .default('list')
145
+ .describe('Response detail level: summary (aggregates only ~50 tokens), list (transaction IDs and types ~100-200 tokens), detailed (full transaction data ~300-800 tokens). Default: list'),
146
+ });
147
+ // compare_vaults input
148
+ export const compareVaultsInputSchema = z.object({
149
+ vaultAddresses: z
150
+ .array(ethereumAddressSchema)
151
+ .min(2, 'At least 2 vault addresses are required for comparison')
152
+ .max(10, 'Maximum 10 vaults can be compared at once'),
153
+ chainId: chainIdSchema,
154
+ responseFormat: z
155
+ .enum(['summary', 'full'])
156
+ .default('summary')
157
+ .describe('Response detail level: summary (~170 tokens/vault), full (~600 tokens/vault). Default: summary'),
158
+ });
159
+ // get_price_history input
160
+ export const priceHistoryInputSchema = z.object({
161
+ vaultAddress: ethereumAddressSchema,
162
+ chainId: chainIdSchema,
163
+ timeRange: z.enum(['7d', '30d', '90d', '1y', 'all'], {
164
+ errorMap: () => ({ message: 'Time range must be one of: 7d, 30d, 90d, 1y, all' }),
165
+ }),
166
+ responseFormat: z
167
+ .enum(['summary', 'detailed'])
168
+ .default('summary')
169
+ .describe('Response detail level: summary (key metrics only), detailed (full OHLCV table). Default: summary'),
170
+ });
171
+ // export_data input
172
+ export const exportDataInputSchema = z.object({
173
+ vaultAddresses: z.array(ethereumAddressSchema).min(1, 'At least 1 vault address is required'),
174
+ chainId: chainIdSchema,
175
+ dataType: z.enum(['vaults', 'transactions', 'price_history', 'performance'], {
176
+ errorMap: () => ({
177
+ message: 'Data type must be one of: vaults, transactions, price_history, performance',
178
+ }),
179
+ }),
180
+ format: z.enum(['csv', 'json'], {
181
+ errorMap: () => ({ message: 'Format must be either csv or json' }),
182
+ }),
183
+ });
184
+ // analyze_risk input
185
+ export const analyzeRiskInputSchema = z.object({
186
+ vaultAddress: ethereumAddressSchema,
187
+ chainId: chainIdSchema,
188
+ responseFormat: z
189
+ .enum(['score', 'summary', 'detailed'])
190
+ .default('summary')
191
+ .describe('Response detail level: score (risk score only ~30 tokens), summary (risk score with key metrics ~200 tokens), detailed (comprehensive risk analysis ~400-600 tokens). Default: summary'),
192
+ });
193
+ // predict_yield input
194
+ export const predictYieldInputSchema = z.object({
195
+ vaultAddress: ethereumAddressSchema,
196
+ chainId: chainIdSchema,
197
+ timeRange: z.enum(['7d', '30d', '90d'], {
198
+ errorMap: () => ({ message: 'Time range must be one of: 7d, 30d, 90d' }),
199
+ }),
200
+ responseFormat: z
201
+ .enum(['quick', 'detailed'])
202
+ .default('quick')
203
+ .describe('Response detail level: quick (prediction only), detailed (with confidence intervals and analysis). Default: quick'),
204
+ });
205
+ // optimize_portfolio input
206
+ export const optimizePortfolioInputSchema = z.object({
207
+ vaultAddresses: z
208
+ .array(ethereumAddressSchema)
209
+ .min(2, 'At least 2 vault addresses are required for portfolio optimization')
210
+ .max(20, 'Maximum 20 vaults can be included in portfolio'),
211
+ chainId: chainIdSchema,
212
+ currentPositions: z.array(z.object({
213
+ vaultAddress: ethereumAddressSchema,
214
+ valueUsd: z.number().positive('Position value must be positive'),
215
+ })),
216
+ strategy: z
217
+ .enum(['equal_weight', 'risk_parity', 'max_sharpe', 'min_variance'], {
218
+ errorMap: () => ({
219
+ message: 'Strategy must be one of: equal_weight, risk_parity, max_sharpe, min_variance',
220
+ }),
221
+ })
222
+ .default('max_sharpe'),
223
+ rebalanceThreshold: z
224
+ .number()
225
+ .positive('Rebalance threshold must be positive')
226
+ .max(50, 'Rebalance threshold cannot exceed 50%')
227
+ .default(5.0),
228
+ responseFormat: z
229
+ .enum(['quick', 'balanced', 'detailed'])
230
+ .default('balanced')
231
+ .describe('Response detail level: quick (rebalance status and top actions ~300-400 tokens), balanced (standard output ~800 tokens), detailed (extended insights ~1200 tokens). Default: balanced'),
232
+ });
233
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Yield Prediction Utility
3
+ *
4
+ * Trend analysis and forecasting algorithms for vault yield prediction.
5
+ * Provides APR projections based on historical performance data.
6
+ */
7
+ /**
8
+ * Yield prediction result
9
+ */
10
+ export interface YieldPrediction {
11
+ currentAPR: number;
12
+ predictedAPR: number;
13
+ feeAdjustedAPR?: number;
14
+ confidence: number;
15
+ trend: 'increasing' | 'decreasing' | 'stable';
16
+ projectedReturns: {
17
+ timeframe: '7d' | '30d' | '90d' | '1y';
18
+ expectedReturn: number;
19
+ minReturn: number;
20
+ maxReturn: number;
21
+ }[];
22
+ feeAdjustedReturns?: {
23
+ timeframe: '7d' | '30d' | '90d' | '1y';
24
+ expectedReturn: number;
25
+ minReturn: number;
26
+ maxReturn: number;
27
+ }[];
28
+ feeImpact?: {
29
+ managementFee: number;
30
+ performanceFee: number;
31
+ totalAnnualFeeDrag: number;
32
+ performanceFeeActive: boolean;
33
+ };
34
+ insights: string[];
35
+ }
36
+ /**
37
+ * Historical data point for yield analysis
38
+ */
39
+ export interface YieldDataPoint {
40
+ timestamp: number;
41
+ apr: number;
42
+ tvl: number;
43
+ }
44
+ /**
45
+ * Predict future yield based on historical data
46
+ *
47
+ * Uses multiple forecasting techniques:
48
+ * 1. Linear regression for trend analysis
49
+ * 2. Exponential moving average for short-term prediction
50
+ * 3. Volatility analysis for confidence intervals
51
+ * 4. Fee-adjusted predictions (optional) - net returns after management and performance fees
52
+ *
53
+ * @param historicalData - Historical APR and TVL data points
54
+ * @param feeParams - Optional fee parameters for calculating net returns
55
+ * @returns Yield prediction with confidence intervals and insights
56
+ */
57
+ export declare function predictYield(historicalData: YieldDataPoint[], feeParams?: {
58
+ managementFee: number;
59
+ performanceFee: number;
60
+ performanceFeeActive: boolean;
61
+ }): YieldPrediction;
62
+ /**
63
+ * Calculate compound APR from multiple yield sources
64
+ *
65
+ * @param yields - Array of APR values from different sources
66
+ * @returns Compound APR
67
+ */
68
+ export declare function calculateCompoundAPR(yields: number[]): number;
69
+ //# sourceMappingURL=yield-prediction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yield-prediction.d.ts","sourceRoot":"","sources":["../../src/utils/yield-prediction.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,YAAY,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC9C,gBAAgB,EAAE;QAChB,SAAS,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;QACvC,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;IACJ,kBAAkB,CAAC,EAAE;QACnB,SAAS,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;QACvC,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;IACJ,SAAS,CAAC,EAAE;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,oBAAoB,EAAE,OAAO,CAAC;KAC/B,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAoGD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,cAAc,EAAE,cAAc,EAAE,EAChC,SAAS,CAAC,EAAE;IACV,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;CAC/B,GACA,eAAe,CAoJjB;AAuGD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAW7D"}
@@ -0,0 +1,290 @@
1
+ /**
2
+ * Yield Prediction Utility
3
+ *
4
+ * Trend analysis and forecasting algorithms for vault yield prediction.
5
+ * Provides APR projections based on historical performance data.
6
+ */
7
+ /**
8
+ * Calculate simple moving average
9
+ */
10
+ function calculateSMA(values, period) {
11
+ if (values.length < period) {
12
+ return values.reduce((sum, v) => sum + v, 0) / values.length;
13
+ }
14
+ const recentValues = values.slice(-period);
15
+ return recentValues.reduce((sum, v) => sum + v, 0) / period;
16
+ }
17
+ /**
18
+ * Calculate exponential moving average
19
+ */
20
+ function calculateEMA(values, period) {
21
+ if (values.length === 0) {
22
+ return 0;
23
+ }
24
+ if (values.length < period) {
25
+ return calculateSMA(values, values.length);
26
+ }
27
+ const multiplier = 2 / (period + 1);
28
+ let ema = calculateSMA(values.slice(0, period), period);
29
+ for (let i = period; i < values.length; i++) {
30
+ ema = (values[i] - ema) * multiplier + ema;
31
+ }
32
+ return ema;
33
+ }
34
+ /**
35
+ * Calculate linear regression for trend analysis
36
+ */
37
+ function calculateLinearRegression(data) {
38
+ const n = data.length;
39
+ if (n < 2) {
40
+ return { slope: 0, intercept: data[0]?.apr || 0, r2: 0 };
41
+ }
42
+ // Normalize timestamps to prevent overflow
43
+ const minTimestamp = Math.min(...data.map((d) => d.timestamp));
44
+ const x = data.map((d) => (d.timestamp - minTimestamp) / (24 * 60 * 60)); // Convert to days
45
+ const y = data.map((d) => d.apr);
46
+ // Calculate means
47
+ const xMean = x.reduce((sum, val) => sum + val, 0) / n;
48
+ const yMean = y.reduce((sum, val) => sum + val, 0) / n;
49
+ // Calculate slope and intercept
50
+ let numerator = 0;
51
+ let denominator = 0;
52
+ for (let i = 0; i < n; i++) {
53
+ numerator += (x[i] - xMean) * (y[i] - yMean);
54
+ denominator += Math.pow(x[i] - xMean, 2);
55
+ }
56
+ const slope = denominator === 0 ? 0 : numerator / denominator;
57
+ const intercept = yMean - slope * xMean;
58
+ // Calculate R² (coefficient of determination)
59
+ let ssRes = 0;
60
+ let ssTot = 0;
61
+ for (let i = 0; i < n; i++) {
62
+ const predicted = slope * x[i] + intercept;
63
+ ssRes += Math.pow(y[i] - predicted, 2);
64
+ ssTot += Math.pow(y[i] - yMean, 2);
65
+ }
66
+ const r2 = ssTot === 0 ? 0 : 1 - ssRes / ssTot;
67
+ return { slope, intercept, r2: Math.max(0, Math.min(1, r2)) };
68
+ }
69
+ /**
70
+ * Calculate volatility (standard deviation)
71
+ */
72
+ function calculateVolatility(values) {
73
+ if (values.length < 2) {
74
+ return 0;
75
+ }
76
+ const mean = values.reduce((sum, v) => sum + v, 0) / values.length;
77
+ const variance = values.reduce((sum, v) => sum + Math.pow(v - mean, 2), 0) / values.length;
78
+ return Math.sqrt(variance);
79
+ }
80
+ /**
81
+ * Predict future yield based on historical data
82
+ *
83
+ * Uses multiple forecasting techniques:
84
+ * 1. Linear regression for trend analysis
85
+ * 2. Exponential moving average for short-term prediction
86
+ * 3. Volatility analysis for confidence intervals
87
+ * 4. Fee-adjusted predictions (optional) - net returns after management and performance fees
88
+ *
89
+ * @param historicalData - Historical APR and TVL data points
90
+ * @param feeParams - Optional fee parameters for calculating net returns
91
+ * @returns Yield prediction with confidence intervals and insights
92
+ */
93
+ export function predictYield(historicalData, feeParams) {
94
+ if (historicalData.length === 0) {
95
+ return {
96
+ currentAPR: 0,
97
+ predictedAPR: 0,
98
+ confidence: 0,
99
+ trend: 'stable',
100
+ projectedReturns: [],
101
+ insights: ['Insufficient historical data for prediction'],
102
+ };
103
+ }
104
+ // Sort by timestamp
105
+ const sortedData = [...historicalData].sort((a, b) => a.timestamp - b.timestamp);
106
+ const aprValues = sortedData.map((d) => d.apr);
107
+ const currentAPR = aprValues[aprValues.length - 1];
108
+ // Calculate trend using linear regression
109
+ const regression = calculateLinearRegression(sortedData);
110
+ const trend = Math.abs(regression.slope) < 0.01
111
+ ? 'stable'
112
+ : regression.slope > 0
113
+ ? 'increasing'
114
+ : 'decreasing';
115
+ // Calculate EMA for short-term prediction
116
+ const emaShort = calculateEMA(aprValues, Math.min(7, aprValues.length)); // 7-day EMA
117
+ const emaLong = calculateEMA(aprValues, Math.min(30, aprValues.length)); // 30-day EMA
118
+ // Weighted prediction: 40% regression, 40% short EMA, 20% long EMA
119
+ const regressionPrediction = regression.slope * sortedData.length + regression.intercept;
120
+ const predictedAPR = regressionPrediction * 0.4 + emaShort * 0.4 + emaLong * 0.2;
121
+ // Calculate confidence based on R² and data quantity
122
+ const dataQualityScore = Math.min(1, sortedData.length / 30); // More data = higher confidence
123
+ const trendStrengthScore = regression.r2; // Strong trend = higher confidence
124
+ const confidence = (dataQualityScore * 0.4 + trendStrengthScore * 0.6) * 0.9; // Max 90%
125
+ // Calculate volatility for confidence intervals
126
+ const volatility = calculateVolatility(aprValues);
127
+ // Project returns for different timeframes
128
+ const projectedReturns = [
129
+ { timeframe: '7d', days: 7 },
130
+ { timeframe: '30d', days: 30 },
131
+ { timeframe: '90d', days: 90 },
132
+ { timeframe: '1y', days: 365 },
133
+ ].map(({ timeframe, days }) => {
134
+ // Annualized to period conversion
135
+ const expectedReturn = (predictedAPR / 100) * (days / 365) * 100;
136
+ // Confidence intervals (±1 standard deviation scaled by time)
137
+ const timeScaledVolatility = volatility * Math.sqrt(days / 365);
138
+ const minReturn = expectedReturn - timeScaledVolatility;
139
+ const maxReturn = expectedReturn + timeScaledVolatility;
140
+ return {
141
+ timeframe,
142
+ expectedReturn: Math.max(0, expectedReturn),
143
+ minReturn: Math.max(0, minReturn),
144
+ maxReturn: Math.max(0, maxReturn),
145
+ };
146
+ });
147
+ // Calculate fee-adjusted predictions if fee parameters provided
148
+ let feeAdjustedAPR;
149
+ let feeAdjustedReturns;
150
+ let feeImpact;
151
+ if (feeParams) {
152
+ // Calculate total annual fee drag
153
+ const performanceFeeDrag = feeParams.performanceFeeActive
154
+ ? feeParams.performanceFee * 0.1 // Assume 10% average profit for performance fee impact
155
+ : 0;
156
+ const totalAnnualFeeDrag = feeParams.managementFee + performanceFeeDrag;
157
+ // Calculate fee-adjusted APR (gross APR - fees)
158
+ feeAdjustedAPR = Math.max(0, predictedAPR - totalAnnualFeeDrag);
159
+ // Calculate fee-adjusted projected returns
160
+ feeAdjustedReturns = projectedReturns.map((p) => {
161
+ const feeAdjustment = (((totalAnnualFeeDrag / 100) *
162
+ (p.timeframe === '7d'
163
+ ? 7
164
+ : p.timeframe === '30d'
165
+ ? 30
166
+ : p.timeframe === '90d'
167
+ ? 90
168
+ : 365)) /
169
+ 365) *
170
+ 100;
171
+ return {
172
+ timeframe: p.timeframe,
173
+ expectedReturn: Math.max(0, p.expectedReturn - feeAdjustment),
174
+ minReturn: Math.max(0, p.minReturn - feeAdjustment),
175
+ maxReturn: Math.max(0, p.maxReturn - feeAdjustment),
176
+ };
177
+ });
178
+ feeImpact = {
179
+ managementFee: feeParams.managementFee,
180
+ performanceFee: feeParams.performanceFee,
181
+ totalAnnualFeeDrag,
182
+ performanceFeeActive: feeParams.performanceFeeActive,
183
+ };
184
+ }
185
+ // Generate insights
186
+ const insights = generateInsights({
187
+ currentAPR,
188
+ predictedAPR,
189
+ trend,
190
+ confidence,
191
+ volatility,
192
+ dataPoints: sortedData.length,
193
+ regression,
194
+ feeAdjustedAPR,
195
+ feeImpact,
196
+ });
197
+ return {
198
+ currentAPR,
199
+ predictedAPR: Math.max(0, predictedAPR),
200
+ feeAdjustedAPR,
201
+ confidence,
202
+ trend,
203
+ projectedReturns,
204
+ feeAdjustedReturns,
205
+ feeImpact,
206
+ insights,
207
+ };
208
+ }
209
+ /**
210
+ * Generate human-readable insights from prediction data
211
+ */
212
+ function generateInsights(params) {
213
+ const insights = [];
214
+ // Data quality insight
215
+ if (params.dataPoints < 7) {
216
+ insights.push(`Limited data (${params.dataPoints} points) - predictions have higher uncertainty`);
217
+ }
218
+ else if (params.dataPoints >= 30) {
219
+ insights.push(`Strong data foundation (${params.dataPoints} points) supports prediction`);
220
+ }
221
+ // Trend insight
222
+ const aprChange = params.predictedAPR - params.currentAPR;
223
+ const changePercent = ((aprChange / params.currentAPR) * 100).toFixed(1);
224
+ if (params.trend === 'increasing') {
225
+ insights.push(`Upward trend detected: APR expected to increase by ${changePercent}% (${aprChange.toFixed(2)}%)`);
226
+ }
227
+ else if (params.trend === 'decreasing') {
228
+ insights.push(`Downward trend detected: APR expected to decrease by ${Math.abs(parseFloat(changePercent))}% (${Math.abs(aprChange).toFixed(2)}%)`);
229
+ }
230
+ else {
231
+ insights.push('Stable performance: APR expected to remain relatively constant');
232
+ }
233
+ // Volatility insight
234
+ if (params.volatility > 5) {
235
+ insights.push('High volatility: Returns may vary significantly from predictions');
236
+ }
237
+ else if (params.volatility < 1) {
238
+ insights.push('Low volatility: Consistent returns with narrow confidence intervals');
239
+ }
240
+ // Confidence insight
241
+ if (params.confidence > 0.7) {
242
+ insights.push(`High confidence (${(params.confidence * 100).toFixed(0)}%) in prediction accuracy`);
243
+ }
244
+ else if (params.confidence < 0.4) {
245
+ insights.push(`Low confidence (${(params.confidence * 100).toFixed(0)}%) - consider as rough estimate only`);
246
+ }
247
+ // Trend strength insight
248
+ if (params.regression.r2 > 0.7) {
249
+ insights.push('Strong historical trend pattern detected');
250
+ }
251
+ else if (params.regression.r2 < 0.3) {
252
+ insights.push('Weak trend pattern - returns may be influenced by external factors');
253
+ }
254
+ // Fee impact insights
255
+ if (params.feeAdjustedAPR !== undefined && params.feeImpact) {
256
+ const grossAPR = params.predictedAPR;
257
+ const netAPR = params.feeAdjustedAPR;
258
+ const feeDrag = params.feeImpact.totalAnnualFeeDrag;
259
+ if (feeDrag > 3) {
260
+ insights.push(`High fees (${feeDrag.toFixed(2)}%) significantly reduce net returns from ${grossAPR.toFixed(2)}% to ${netAPR.toFixed(2)}%`);
261
+ }
262
+ else if (feeDrag > 1.5) {
263
+ insights.push(`Moderate fees (${feeDrag.toFixed(2)}%) impact net returns: ${grossAPR.toFixed(2)}% gross → ${netAPR.toFixed(2)}% net`);
264
+ }
265
+ else {
266
+ insights.push(`Low fees (${feeDrag.toFixed(2)}%) - minimal impact on net returns (${netAPR.toFixed(2)}%)`);
267
+ }
268
+ if (params.feeImpact.performanceFeeActive) {
269
+ insights.push(`Performance fee active (${params.feeImpact.performanceFee.toFixed(2)}%) - vault above high water mark`);
270
+ }
271
+ }
272
+ return insights;
273
+ }
274
+ /**
275
+ * Calculate compound APR from multiple yield sources
276
+ *
277
+ * @param yields - Array of APR values from different sources
278
+ * @returns Compound APR
279
+ */
280
+ export function calculateCompoundAPR(yields) {
281
+ if (yields.length === 0) {
282
+ return 0;
283
+ }
284
+ // Convert APR to multipliers, compound them, convert back to APR
285
+ const compoundMultiplier = yields.reduce((product, apr) => {
286
+ return product * (1 + apr / 100);
287
+ }, 1);
288
+ return (compoundMultiplier - 1) * 100;
289
+ }
290
+ //# sourceMappingURL=yield-prediction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yield-prediction.js","sourceRoot":"","sources":["../../src/utils/yield-prediction.ts"],"names":[],"mappings":"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"}