@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.
- package/LICENSE +201 -0
- package/README.md +618 -0
- package/dist/cache/index.d.ts +97 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +106 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/config.d.ts +34 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +40 -0
- package/dist/config.js.map +1 -0
- package/dist/core/cache-adapter.d.ts +73 -0
- package/dist/core/cache-adapter.d.ts.map +1 -0
- package/dist/core/cache-adapter.js +47 -0
- package/dist/core/cache-adapter.js.map +1 -0
- package/dist/core/cache-invalidation.d.ts +72 -0
- package/dist/core/cache-invalidation.d.ts.map +1 -0
- package/dist/core/cache-invalidation.js +114 -0
- package/dist/core/cache-invalidation.js.map +1 -0
- package/dist/core/container.d.ts +34 -0
- package/dist/core/container.d.ts.map +1 -0
- package/dist/core/container.js +75 -0
- package/dist/core/container.js.map +1 -0
- package/dist/graphql/client.d.ts +32 -0
- package/dist/graphql/client.d.ts.map +1 -0
- package/dist/graphql/client.js +49 -0
- package/dist/graphql/client.js.map +1 -0
- package/dist/graphql/fragments/apr-breakdown.fragment.d.ts +64 -0
- package/dist/graphql/fragments/apr-breakdown.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/apr-breakdown.fragment.js +62 -0
- package/dist/graphql/fragments/apr-breakdown.fragment.js.map +1 -0
- package/dist/graphql/fragments/asset-info.fragment.d.ts +18 -0
- package/dist/graphql/fragments/asset-info.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/asset-info.fragment.js +36 -0
- package/dist/graphql/fragments/asset-info.fragment.js.map +1 -0
- package/dist/graphql/fragments/chain-info.fragment.d.ts +18 -0
- package/dist/graphql/fragments/chain-info.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/chain-info.fragment.js +32 -0
- package/dist/graphql/fragments/chain-info.fragment.js.map +1 -0
- package/dist/graphql/fragments/index.d.ts +15 -0
- package/dist/graphql/fragments/index.d.ts.map +1 -0
- package/dist/graphql/fragments/index.js +21 -0
- package/dist/graphql/fragments/index.js.map +1 -0
- package/dist/graphql/fragments/pageinfo.fragment.d.ts +33 -0
- package/dist/graphql/fragments/pageinfo.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/pageinfo.fragment.js +47 -0
- package/dist/graphql/fragments/pageinfo.fragment.js.map +1 -0
- package/dist/graphql/fragments/transaction-base.fragment.d.ts +19 -0
- package/dist/graphql/fragments/transaction-base.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/transaction-base.fragment.js +32 -0
- package/dist/graphql/fragments/transaction-base.fragment.js.map +1 -0
- package/dist/graphql/fragments/vault-list.fragment.d.ts +53 -0
- package/dist/graphql/fragments/vault-list.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/vault-list.fragment.js +51 -0
- package/dist/graphql/fragments/vault-list.fragment.js.map +1 -0
- package/dist/graphql/fragments/vault-summary.fragment.d.ts +68 -0
- package/dist/graphql/fragments/vault-summary.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/vault-summary.fragment.js +66 -0
- package/dist/graphql/fragments/vault-summary.fragment.js.map +1 -0
- package/dist/graphql/fragments/vault.fragment.d.ts +133 -0
- package/dist/graphql/fragments/vault.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/vault.fragment.js +119 -0
- package/dist/graphql/fragments/vault.fragment.js.map +1 -0
- package/dist/graphql/fragments.d.ts +183 -0
- package/dist/graphql/fragments.d.ts.map +1 -0
- package/dist/graphql/fragments.js +297 -0
- package/dist/graphql/fragments.js.map +1 -0
- package/dist/graphql/queries/export.queries.d.ts +72 -0
- package/dist/graphql/queries/export.queries.d.ts.map +1 -0
- package/dist/graphql/queries/export.queries.js +202 -0
- package/dist/graphql/queries/export.queries.js.map +1 -0
- package/dist/graphql/queries/index.d.ts +15 -0
- package/dist/graphql/queries/index.d.ts.map +1 -0
- package/dist/graphql/queries/index.js +23 -0
- package/dist/graphql/queries/index.js.map +1 -0
- package/dist/graphql/queries/performance.queries.d.ts +63 -0
- package/dist/graphql/queries/performance.queries.d.ts.map +1 -0
- package/dist/graphql/queries/performance.queries.js +133 -0
- package/dist/graphql/queries/performance.queries.js.map +1 -0
- package/dist/graphql/queries/period-summaries.d.ts +15 -0
- package/dist/graphql/queries/period-summaries.d.ts.map +1 -0
- package/dist/graphql/queries/period-summaries.js +24 -0
- package/dist/graphql/queries/period-summaries.js.map +1 -0
- package/dist/graphql/queries/portfolio.queries.d.ts +78 -0
- package/dist/graphql/queries/portfolio.queries.d.ts.map +1 -0
- package/dist/graphql/queries/portfolio.queries.js +198 -0
- package/dist/graphql/queries/portfolio.queries.js.map +1 -0
- package/dist/graphql/queries/prediction.queries.d.ts +38 -0
- package/dist/graphql/queries/prediction.queries.d.ts.map +1 -0
- package/dist/graphql/queries/prediction.queries.js +100 -0
- package/dist/graphql/queries/prediction.queries.js.map +1 -0
- package/dist/graphql/queries/risk.queries.d.ts +37 -0
- package/dist/graphql/queries/risk.queries.d.ts.map +1 -0
- package/dist/graphql/queries/risk.queries.js +90 -0
- package/dist/graphql/queries/risk.queries.js.map +1 -0
- package/dist/graphql/queries/search.queries.d.ts +61 -0
- package/dist/graphql/queries/search.queries.d.ts.map +1 -0
- package/dist/graphql/queries/search.queries.js +103 -0
- package/dist/graphql/queries/search.queries.js.map +1 -0
- package/dist/graphql/queries/transaction.queries.d.ts +60 -0
- package/dist/graphql/queries/transaction.queries.d.ts.map +1 -0
- package/dist/graphql/queries/transaction.queries.js +252 -0
- package/dist/graphql/queries/transaction.queries.js.map +1 -0
- package/dist/graphql/queries/vault.queries.d.ts +54 -0
- package/dist/graphql/queries/vault.queries.d.ts.map +1 -0
- package/dist/graphql/queries/vault.queries.js +78 -0
- package/dist/graphql/queries/vault.queries.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/competitor-comparison.d.ts +8 -0
- package/dist/prompts/competitor-comparison.d.ts.map +1 -0
- package/dist/prompts/competitor-comparison.js +432 -0
- package/dist/prompts/competitor-comparison.js.map +1 -0
- package/dist/prompts/curator-performance.d.ts +8 -0
- package/dist/prompts/curator-performance.d.ts.map +1 -0
- package/dist/prompts/curator-performance.js +383 -0
- package/dist/prompts/curator-performance.js.map +1 -0
- package/dist/prompts/financial-analysis.d.ts +8 -0
- package/dist/prompts/financial-analysis.d.ts.map +1 -0
- package/dist/prompts/financial-analysis.js +480 -0
- package/dist/prompts/financial-analysis.js.map +1 -0
- package/dist/prompts/index.d.ts +21 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +50 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/onboarding-first-vault.d.ts +8 -0
- package/dist/prompts/onboarding-first-vault.d.ts.map +1 -0
- package/dist/prompts/onboarding-first-vault.js +317 -0
- package/dist/prompts/onboarding-first-vault.js.map +1 -0
- package/dist/prompts/portfolio-optimization.d.ts +8 -0
- package/dist/prompts/portfolio-optimization.d.ts.map +1 -0
- package/dist/prompts/portfolio-optimization.js +412 -0
- package/dist/prompts/portfolio-optimization.js.map +1 -0
- package/dist/prompts/protocol-overview.d.ts +8 -0
- package/dist/prompts/protocol-overview.d.ts.map +1 -0
- package/dist/prompts/protocol-overview.js +398 -0
- package/dist/prompts/protocol-overview.js.map +1 -0
- package/dist/prompts/shared/disclaimers.d.ts +54 -0
- package/dist/prompts/shared/disclaimers.d.ts.map +1 -0
- package/dist/prompts/shared/disclaimers.js +400 -0
- package/dist/prompts/shared/disclaimers.js.map +1 -0
- package/dist/resources/glossary.d.ts +8 -0
- package/dist/resources/glossary.d.ts.map +1 -0
- package/dist/resources/glossary.js +407 -0
- package/dist/resources/glossary.js.map +1 -0
- package/dist/resources/index.d.ts +18 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +29 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/schema.d.ts +22 -0
- package/dist/resources/schema.d.ts.map +1 -0
- package/dist/resources/schema.js +67 -0
- package/dist/resources/schema.js.map +1 -0
- package/dist/schemas/config.schema.d.ts +46 -0
- package/dist/schemas/config.schema.d.ts.map +1 -0
- package/dist/schemas/config.schema.js +48 -0
- package/dist/schemas/config.schema.js.map +1 -0
- package/dist/sdk/__tests__/apr-service.test.d.ts +7 -0
- package/dist/sdk/__tests__/apr-service.test.d.ts.map +1 -0
- package/dist/sdk/__tests__/apr-service.test.js +385 -0
- package/dist/sdk/__tests__/apr-service.test.js.map +1 -0
- package/dist/sdk/__tests__/math-utils.test.d.ts +7 -0
- package/dist/sdk/__tests__/math-utils.test.d.ts.map +1 -0
- package/dist/sdk/__tests__/math-utils.test.js +185 -0
- package/dist/sdk/__tests__/math-utils.test.js.map +1 -0
- package/dist/sdk/__tests__/simulation-service.test.d.ts +5 -0
- package/dist/sdk/__tests__/simulation-service.test.d.ts.map +1 -0
- package/dist/sdk/__tests__/simulation-service.test.js +397 -0
- package/dist/sdk/__tests__/simulation-service.test.js.map +1 -0
- package/dist/sdk/__tests__/vault-utils.test.d.ts +7 -0
- package/dist/sdk/__tests__/vault-utils.test.d.ts.map +1 -0
- package/dist/sdk/__tests__/vault-utils.test.js +189 -0
- package/dist/sdk/__tests__/vault-utils.test.js.map +1 -0
- package/dist/sdk/apr-service.d.ts +101 -0
- package/dist/sdk/apr-service.d.ts.map +1 -0
- package/dist/sdk/apr-service.js +175 -0
- package/dist/sdk/apr-service.js.map +1 -0
- package/dist/sdk/math-utils.d.ts +138 -0
- package/dist/sdk/math-utils.d.ts.map +1 -0
- package/dist/sdk/math-utils.js +218 -0
- package/dist/sdk/math-utils.js.map +1 -0
- package/dist/sdk/simulation-service.d.ts +106 -0
- package/dist/sdk/simulation-service.d.ts.map +1 -0
- package/dist/sdk/simulation-service.js +143 -0
- package/dist/sdk/simulation-service.js.map +1 -0
- package/dist/sdk/vault-utils.d.ts +125 -0
- package/dist/sdk/vault-utils.d.ts.map +1 -0
- package/dist/sdk/vault-utils.js +165 -0
- package/dist/sdk/vault-utils.js.map +1 -0
- package/dist/server.d.ts +21 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +225 -0
- package/dist/server.js.map +1 -0
- package/dist/services/analytics/protocol-overview.service.d.ts +61 -0
- package/dist/services/analytics/protocol-overview.service.d.ts.map +1 -0
- package/dist/services/analytics/protocol-overview.service.js +182 -0
- package/dist/services/analytics/protocol-overview.service.js.map +1 -0
- package/dist/services/analytics/risk.service.d.ts +92 -0
- package/dist/services/analytics/risk.service.d.ts.map +1 -0
- package/dist/services/analytics/risk.service.js +423 -0
- package/dist/services/analytics/risk.service.js.map +1 -0
- package/dist/services/base.service.d.ts +39 -0
- package/dist/services/base.service.d.ts.map +1 -0
- package/dist/services/base.service.js +37 -0
- package/dist/services/base.service.js.map +1 -0
- package/dist/services/index.d.ts +30 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +101 -0
- package/dist/services/index.js.map +1 -0
- package/dist/tools/__tests__/simulate-vault.test.d.ts +5 -0
- package/dist/tools/__tests__/simulate-vault.test.d.ts.map +1 -0
- package/dist/tools/__tests__/simulate-vault.test.js +363 -0
- package/dist/tools/__tests__/simulate-vault.test.js.map +1 -0
- package/dist/tools/analyze-risk.d.ts +34 -0
- package/dist/tools/analyze-risk.d.ts.map +1 -0
- package/dist/tools/analyze-risk.js +100 -0
- package/dist/tools/analyze-risk.js.map +1 -0
- package/dist/tools/compare-vaults.d.ts +29 -0
- package/dist/tools/compare-vaults.d.ts.map +1 -0
- package/dist/tools/compare-vaults.js +285 -0
- package/dist/tools/compare-vaults.js.map +1 -0
- package/dist/tools/export-data.d.ts +34 -0
- package/dist/tools/export-data.d.ts.map +1 -0
- package/dist/tools/export-data.js +309 -0
- package/dist/tools/export-data.js.map +1 -0
- package/dist/tools/get-price-history.d.ts +29 -0
- package/dist/tools/get-price-history.d.ts.map +1 -0
- package/dist/tools/get-price-history.js +236 -0
- package/dist/tools/get-price-history.js.map +1 -0
- package/dist/tools/get-transactions.d.ts +29 -0
- package/dist/tools/get-transactions.d.ts.map +1 -0
- package/dist/tools/get-transactions.js +181 -0
- package/dist/tools/get-transactions.js.map +1 -0
- package/dist/tools/index.d.ts +26 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +32 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/optimize-portfolio.d.ts +37 -0
- package/dist/tools/optimize-portfolio.d.ts.map +1 -0
- package/dist/tools/optimize-portfolio.js +459 -0
- package/dist/tools/optimize-portfolio.js.map +1 -0
- package/dist/tools/predict-yield.d.ts +30 -0
- package/dist/tools/predict-yield.d.ts.map +1 -0
- package/dist/tools/predict-yield.js +248 -0
- package/dist/tools/predict-yield.js.map +1 -0
- package/dist/tools/query-graphql.d.ts +35 -0
- package/dist/tools/query-graphql.d.ts.map +1 -0
- package/dist/tools/query-graphql.js +54 -0
- package/dist/tools/query-graphql.js.map +1 -0
- package/dist/tools/registry.d.ts +42 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +231 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/search-vaults.d.ts +40 -0
- package/dist/tools/search-vaults.d.ts.map +1 -0
- package/dist/tools/search-vaults.js +184 -0
- package/dist/tools/search-vaults.js.map +1 -0
- package/dist/tools/simulate-vault.d.ts +80 -0
- package/dist/tools/simulate-vault.d.ts.map +1 -0
- package/dist/tools/simulate-vault.js +281 -0
- package/dist/tools/simulate-vault.js.map +1 -0
- package/dist/tools/user-portfolio.d.ts +30 -0
- package/dist/tools/user-portfolio.d.ts.map +1 -0
- package/dist/tools/user-portfolio.js +142 -0
- package/dist/tools/user-portfolio.js.map +1 -0
- package/dist/tools/vault-data.d.ts +23 -0
- package/dist/tools/vault-data.d.ts.map +1 -0
- package/dist/tools/vault-data.js +68 -0
- package/dist/tools/vault-data.js.map +1 -0
- package/dist/tools/vault-performance.d.ts +30 -0
- package/dist/tools/vault-performance.d.ts.map +1 -0
- package/dist/tools/vault-performance.js +275 -0
- package/dist/tools/vault-performance.js.map +1 -0
- package/dist/types/generated.d.ts +1109 -0
- package/dist/types/generated.d.ts.map +1 -0
- package/dist/types/generated.js +2 -0
- package/dist/types/generated.js.map +1 -0
- package/dist/types/index.d.ts +46 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/comparison-metrics.d.ts +120 -0
- package/dist/utils/comparison-metrics.d.ts.map +1 -0
- package/dist/utils/comparison-metrics.js +215 -0
- package/dist/utils/comparison-metrics.js.map +1 -0
- package/dist/utils/config-loader.d.ts +17 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +45 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/csv-generator.d.ts +89 -0
- package/dist/utils/csv-generator.d.ts.map +1 -0
- package/dist/utils/csv-generator.js +97 -0
- package/dist/utils/csv-generator.js.map +1 -0
- package/dist/utils/disclaimers.d.ts +70 -0
- package/dist/utils/disclaimers.d.ts.map +1 -0
- package/dist/utils/disclaimers.js +161 -0
- package/dist/utils/disclaimers.js.map +1 -0
- package/dist/utils/errors.d.ts +66 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +86 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/execute-tool-with-cache.d.ts +97 -0
- package/dist/utils/execute-tool-with-cache.d.ts.map +1 -0
- package/dist/utils/execute-tool-with-cache.js +105 -0
- package/dist/utils/execute-tool-with-cache.js.map +1 -0
- package/dist/utils/portfolio-optimization.d.ts +100 -0
- package/dist/utils/portfolio-optimization.d.ts.map +1 -0
- package/dist/utils/portfolio-optimization.js +283 -0
- package/dist/utils/portfolio-optimization.js.map +1 -0
- package/dist/utils/risk-scoring.d.ts +226 -0
- package/dist/utils/risk-scoring.d.ts.map +1 -0
- package/dist/utils/risk-scoring.js +523 -0
- package/dist/utils/risk-scoring.js.map +1 -0
- package/dist/utils/tool-error-handler.d.ts +16 -0
- package/dist/utils/tool-error-handler.d.ts.map +1 -0
- package/dist/utils/tool-error-handler.js +43 -0
- package/dist/utils/tool-error-handler.js.map +1 -0
- package/dist/utils/tool-handler.d.ts +33 -0
- package/dist/utils/tool-handler.d.ts.map +1 -0
- package/dist/utils/tool-handler.js +59 -0
- package/dist/utils/tool-handler.js.map +1 -0
- package/dist/utils/tool-response.d.ts +16 -0
- package/dist/utils/tool-response.d.ts.map +1 -0
- package/dist/utils/tool-response.js +25 -0
- package/dist/utils/tool-response.js.map +1 -0
- package/dist/utils/validators.d.ts +359 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +233 -0
- package/dist/utils/validators.js.map +1 -0
- package/dist/utils/yield-prediction.d.ts +69 -0
- package/dist/utils/yield-prediction.d.ts.map +1 -0
- package/dist/utils/yield-prediction.js +290 -0
- package/dist/utils/yield-prediction.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portfolio Queries
|
|
3
|
+
*
|
|
4
|
+
* GraphQL queries for user portfolio operations.
|
|
5
|
+
* Includes user portfolio data and portfolio optimization queries.
|
|
6
|
+
*/
|
|
7
|
+
import { VAULT_FRAGMENT, VAULT_LIST_FRAGMENT, VAULT_SUMMARY_FRAGMENT } from '../fragments/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Get fragment and fragment name based on response format for portfolio queries
|
|
10
|
+
*/
|
|
11
|
+
function getFragmentForPortfolioResponseFormat(responseFormat) {
|
|
12
|
+
switch (responseFormat) {
|
|
13
|
+
case 'list':
|
|
14
|
+
return { fragment: VAULT_LIST_FRAGMENT, fragmentName: 'VaultListFragment' };
|
|
15
|
+
case 'summary':
|
|
16
|
+
return { fragment: VAULT_SUMMARY_FRAGMENT, fragmentName: 'VaultSummaryFragment' };
|
|
17
|
+
case 'full':
|
|
18
|
+
return { fragment: VAULT_FRAGMENT, fragmentName: 'VaultFragment' };
|
|
19
|
+
default:
|
|
20
|
+
return { fragment: VAULT_SUMMARY_FRAGMENT, fragmentName: 'VaultSummaryFragment' };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create user portfolio GraphQL query with dynamic fragment selection
|
|
25
|
+
*
|
|
26
|
+
* Fetches complete user portfolio with vault positions and metadata.
|
|
27
|
+
* Fragment selection optimizes token usage based on required detail level.
|
|
28
|
+
*
|
|
29
|
+
* Used by: get_user_portfolio tool
|
|
30
|
+
*
|
|
31
|
+
* @param responseFormat - Detail level: 'list' (~60 tokens/vault), 'summary' (~170 tokens/vault), 'full' (~600 tokens/vault)
|
|
32
|
+
* @returns GraphQL query string with appropriate fragment
|
|
33
|
+
*
|
|
34
|
+
* Usage:
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const query = createGetUserPortfolioQuery('summary'); // Balanced data
|
|
37
|
+
* const data = await graphqlClient.request<UserPortfolioResponse>(
|
|
38
|
+
* query,
|
|
39
|
+
* { where: { user_eq: '0x...' } }
|
|
40
|
+
* );
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* Token optimization:
|
|
44
|
+
* - list: ~60 tokens/position (minimal vault data)
|
|
45
|
+
* - summary: ~170 tokens/position (balanced - includes curators, descriptions)
|
|
46
|
+
* - full: ~600 tokens/position (complete vault data)
|
|
47
|
+
*
|
|
48
|
+
* For a user with 10 positions:
|
|
49
|
+
* - list: 600 tokens (90% reduction)
|
|
50
|
+
* - summary: 1,700 tokens (72% reduction)
|
|
51
|
+
* - full: 6,000 tokens (current behavior)
|
|
52
|
+
*/
|
|
53
|
+
export function createGetUserPortfolioQuery(responseFormat = 'summary') {
|
|
54
|
+
const { fragment, fragmentName } = getFragmentForPortfolioResponseFormat(responseFormat);
|
|
55
|
+
return `
|
|
56
|
+
query GetUserPortfolio($where: UserFilterInput) {
|
|
57
|
+
users(where: $where) {
|
|
58
|
+
items {
|
|
59
|
+
state {
|
|
60
|
+
totalSharesUsd
|
|
61
|
+
}
|
|
62
|
+
vaultPositions {
|
|
63
|
+
vault {
|
|
64
|
+
...${fragmentName}
|
|
65
|
+
}
|
|
66
|
+
state {
|
|
67
|
+
assets
|
|
68
|
+
shares
|
|
69
|
+
sharesUsd
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
${fragment}
|
|
76
|
+
`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* User portfolio GraphQL query (legacy - uses full fragment)
|
|
80
|
+
*
|
|
81
|
+
* @deprecated Use createGetUserPortfolioQuery('full') instead for explicit fragment selection
|
|
82
|
+
*
|
|
83
|
+
* This maintains backward compatibility for existing code.
|
|
84
|
+
* Consider migrating to createGetUserPortfolioQuery() for better token efficiency.
|
|
85
|
+
*/
|
|
86
|
+
export const GET_USER_PORTFOLIO_QUERY = createGetUserPortfolioQuery('full');
|
|
87
|
+
/**
|
|
88
|
+
* GraphQL query for single vault optimization data
|
|
89
|
+
*
|
|
90
|
+
* Fetches one vault with its historical price and performance metrics
|
|
91
|
+
* for portfolio optimization calculations. Used in parallel queries.
|
|
92
|
+
*
|
|
93
|
+
* Used by: optimize_portfolio tool (per-vault queries)
|
|
94
|
+
*
|
|
95
|
+
* Usage:
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const data = await graphqlClient.request<SingleVaultOptimizationResponse>(
|
|
98
|
+
* SINGLE_VAULT_OPTIMIZATION_QUERY,
|
|
99
|
+
* { vaultAddress: '0x...', chainId: 1 }
|
|
100
|
+
* );
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
export const SINGLE_VAULT_OPTIMIZATION_QUERY = `
|
|
104
|
+
query SingleVaultOptimization($vaultAddress: Address!, $chainId: Int!) {
|
|
105
|
+
vault: vaultByAddress(address: $vaultAddress, chainId: $chainId) {
|
|
106
|
+
...VaultFragment
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
# Get price history for volatility calculation
|
|
110
|
+
priceHistory: transactions(
|
|
111
|
+
where: {
|
|
112
|
+
vault_in: [$vaultAddress],
|
|
113
|
+
type_in: [TotalAssetsUpdated]
|
|
114
|
+
},
|
|
115
|
+
orderBy: timestamp,
|
|
116
|
+
orderDirection: asc,
|
|
117
|
+
first: 1000
|
|
118
|
+
) {
|
|
119
|
+
items {
|
|
120
|
+
timestamp
|
|
121
|
+
data {
|
|
122
|
+
... on TotalAssetsUpdated {
|
|
123
|
+
totalAssets
|
|
124
|
+
totalAssetsUsd
|
|
125
|
+
totalSupply
|
|
126
|
+
vault {
|
|
127
|
+
decimals
|
|
128
|
+
asset {
|
|
129
|
+
decimals
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
${VAULT_FRAGMENT}
|
|
138
|
+
`;
|
|
139
|
+
/**
|
|
140
|
+
* GraphQL query for portfolio optimization data (DEPRECATED)
|
|
141
|
+
*
|
|
142
|
+
* This query is deprecated in favor of SINGLE_VAULT_OPTIMIZATION_QUERY
|
|
143
|
+
* executed in parallel for each vault. Multi-vault queries cannot
|
|
144
|
+
* distinguish which transactions belong to which vault.
|
|
145
|
+
*
|
|
146
|
+
* @deprecated Use SINGLE_VAULT_OPTIMIZATION_QUERY with Promise.all instead
|
|
147
|
+
*/
|
|
148
|
+
export const PORTFOLIO_OPTIMIZATION_QUERY = `
|
|
149
|
+
query PortfolioOptimization($vaultAddresses: [Address!]!, $chainId: Int!) {
|
|
150
|
+
vaults(where: { address_in: $vaultAddresses, chainId_eq: $chainId }) {
|
|
151
|
+
items {
|
|
152
|
+
...VaultFragment
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
# Get price history for volatility calculation
|
|
157
|
+
priceHistory: transactions(
|
|
158
|
+
where: {
|
|
159
|
+
vault_in: $vaultAddresses,
|
|
160
|
+
type_in: ["TotalAssetsUpdated"]
|
|
161
|
+
},
|
|
162
|
+
orderBy: "timestamp",
|
|
163
|
+
orderDirection: "asc",
|
|
164
|
+
first: 1000
|
|
165
|
+
) {
|
|
166
|
+
items {
|
|
167
|
+
timestamp
|
|
168
|
+
data {
|
|
169
|
+
... on TotalAssetsUpdated {
|
|
170
|
+
pricePerShareUsd
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
# Get APR data for return estimation
|
|
177
|
+
performanceData: transactions(
|
|
178
|
+
where: {
|
|
179
|
+
vault_in: $vaultAddresses,
|
|
180
|
+
type_in: ["PeriodSummary"]
|
|
181
|
+
},
|
|
182
|
+
orderBy: "timestamp",
|
|
183
|
+
orderDirection: "asc",
|
|
184
|
+
first: 1000
|
|
185
|
+
) {
|
|
186
|
+
items {
|
|
187
|
+
timestamp
|
|
188
|
+
data {
|
|
189
|
+
... on PeriodSummary {
|
|
190
|
+
linearNetApr
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
${VAULT_FRAGMENT}
|
|
197
|
+
`;
|
|
198
|
+
//# sourceMappingURL=portfolio.queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portfolio.queries.js","sourceRoot":"","sources":["../../../src/graphql/queries/portfolio.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAOpG;;GAEG;AACH,SAAS,qCAAqC,CAAC,cAAuC;IAIpF,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;QAC9E,KAAK,SAAS;YACZ,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;QACpF,KAAK,MAAM;YACT,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;QACrE;YACE,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACtF,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,2BAA2B,CACzC,iBAA0C,SAAS;IAEnD,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,qCAAqC,CAAC,cAAc,CAAC,CAAC;IAEzF,OAAO;;;;;;;;;mBASU,YAAY;;;;;;;;;;;MAWzB,QAAQ;GACX,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkC3C,cAAc;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgDxC,cAAc;CACjB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prediction Queries
|
|
3
|
+
*
|
|
4
|
+
* GraphQL queries for yield prediction and forecasting.
|
|
5
|
+
* Includes historical performance data for ML-based yield prediction.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Response format type for yield prediction query
|
|
9
|
+
*/
|
|
10
|
+
export type PredictionResponseFormat = 'quick' | 'detailed';
|
|
11
|
+
/**
|
|
12
|
+
* Create yield prediction GraphQL query with dynamic fragment selection
|
|
13
|
+
*/
|
|
14
|
+
export declare function createYieldPredictionQuery(responseFormat?: PredictionResponseFormat): string;
|
|
15
|
+
/**
|
|
16
|
+
* GraphQL query for vault yield prediction data
|
|
17
|
+
*
|
|
18
|
+
* Fetches historical performance and TVL data for ML-based yield forecasting:
|
|
19
|
+
* - Vault data with current state
|
|
20
|
+
* - Performance history (PeriodSummary) for APR trends
|
|
21
|
+
* - TVL history (TotalAssetsUpdated) for growth tracking
|
|
22
|
+
*
|
|
23
|
+
* Used by: predict_yield tool
|
|
24
|
+
*
|
|
25
|
+
* Usage:
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const data = await graphqlClient.request<YieldPredictionResponse>(
|
|
28
|
+
* YIELD_PREDICTION_QUERY,
|
|
29
|
+
* {
|
|
30
|
+
* vaultAddress: '0x...',
|
|
31
|
+
* chainId: 1,
|
|
32
|
+
* timestamp_gte: '1234567890'
|
|
33
|
+
* }
|
|
34
|
+
* );
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare const YIELD_PREDICTION_QUERY: string;
|
|
38
|
+
//# sourceMappingURL=prediction.queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prediction.queries.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries/prediction.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,UAAU,CAAC;AAmB5D;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,GAAE,wBAAkC,GACjD,MAAM,CAqDR;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,sBAAsB,QAAyC,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prediction Queries
|
|
3
|
+
*
|
|
4
|
+
* GraphQL queries for yield prediction and forecasting.
|
|
5
|
+
* Includes historical performance data for ML-based yield prediction.
|
|
6
|
+
*/
|
|
7
|
+
import { VAULT_FRAGMENT, VAULT_LIST_FRAGMENT } from '../fragments/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Get fragment and fragment name based on response format for prediction queries
|
|
10
|
+
*/
|
|
11
|
+
function getFragmentForPredictionResponseFormat(responseFormat) {
|
|
12
|
+
switch (responseFormat) {
|
|
13
|
+
case 'quick':
|
|
14
|
+
return { fragment: VAULT_LIST_FRAGMENT, fragmentName: 'VaultListFragment' };
|
|
15
|
+
case 'detailed':
|
|
16
|
+
return { fragment: VAULT_FRAGMENT, fragmentName: 'VaultFragment' };
|
|
17
|
+
default:
|
|
18
|
+
return { fragment: VAULT_LIST_FRAGMENT, fragmentName: 'VaultListFragment' };
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create yield prediction GraphQL query with dynamic fragment selection
|
|
23
|
+
*/
|
|
24
|
+
export function createYieldPredictionQuery(responseFormat = 'quick') {
|
|
25
|
+
const { fragment, fragmentName } = getFragmentForPredictionResponseFormat(responseFormat);
|
|
26
|
+
return `
|
|
27
|
+
query YieldPrediction($vaultAddress: Address!, $chainId: Int!) {
|
|
28
|
+
vault: vaultByAddress(address: $vaultAddress, chainId: $chainId) {
|
|
29
|
+
...${fragmentName}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
# Get historical performance data
|
|
33
|
+
performanceHistory: transactions(
|
|
34
|
+
where: {
|
|
35
|
+
vault_in: [$vaultAddress],
|
|
36
|
+
type_in: [PeriodSummary]
|
|
37
|
+
},
|
|
38
|
+
orderBy: timestamp,
|
|
39
|
+
orderDirection: asc,
|
|
40
|
+
first: 1000
|
|
41
|
+
) {
|
|
42
|
+
items {
|
|
43
|
+
timestamp
|
|
44
|
+
data {
|
|
45
|
+
... on PeriodSummary {
|
|
46
|
+
totalAssetsAtStart
|
|
47
|
+
totalSupplyAtStart
|
|
48
|
+
totalAssetsAtEnd
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
# Get recent total assets updates for TVL tracking
|
|
55
|
+
tvlHistory: transactions(
|
|
56
|
+
where: {
|
|
57
|
+
vault_in: [$vaultAddress],
|
|
58
|
+
type_in: [TotalAssetsUpdated]
|
|
59
|
+
},
|
|
60
|
+
orderBy: timestamp,
|
|
61
|
+
orderDirection: asc,
|
|
62
|
+
first: 100
|
|
63
|
+
) {
|
|
64
|
+
items {
|
|
65
|
+
timestamp
|
|
66
|
+
data {
|
|
67
|
+
... on TotalAssetsUpdated {
|
|
68
|
+
totalAssetsUsd
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
${fragment}
|
|
75
|
+
`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* GraphQL query for vault yield prediction data
|
|
79
|
+
*
|
|
80
|
+
* Fetches historical performance and TVL data for ML-based yield forecasting:
|
|
81
|
+
* - Vault data with current state
|
|
82
|
+
* - Performance history (PeriodSummary) for APR trends
|
|
83
|
+
* - TVL history (TotalAssetsUpdated) for growth tracking
|
|
84
|
+
*
|
|
85
|
+
* Used by: predict_yield tool
|
|
86
|
+
*
|
|
87
|
+
* Usage:
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const data = await graphqlClient.request<YieldPredictionResponse>(
|
|
90
|
+
* YIELD_PREDICTION_QUERY,
|
|
91
|
+
* {
|
|
92
|
+
* vaultAddress: '0x...',
|
|
93
|
+
* chainId: 1,
|
|
94
|
+
* timestamp_gte: '1234567890'
|
|
95
|
+
* }
|
|
96
|
+
* );
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export const YIELD_PREDICTION_QUERY = createYieldPredictionQuery('detailed');
|
|
100
|
+
//# sourceMappingURL=prediction.queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prediction.queries.js","sourceRoot":"","sources":["../../../src/graphql/queries/prediction.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAO5E;;GAEG;AACH,SAAS,sCAAsC,CAAC,cAAwC;IAItF,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,OAAO;YACV,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;QAC9E,KAAK,UAAU;YACb,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;QACrE;YACE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;IAChF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,iBAA2C,OAAO;IAElD,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,sCAAsC,CAAC,cAAc,CAAC,CAAC;IAE1F,OAAO;;;aAGI,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6CnB,QAAQ;GACX,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Risk Queries
|
|
3
|
+
*
|
|
4
|
+
* GraphQL queries for vault risk analysis.
|
|
5
|
+
* Includes multi-factor risk scoring with vault, protocol, and market data.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* GraphQL query for vault risk analysis data
|
|
9
|
+
*
|
|
10
|
+
* Fetches comprehensive data for multi-factor risk analysis including:
|
|
11
|
+
* - Vault data with complete metadata
|
|
12
|
+
* - All vaults for concentration risk calculation
|
|
13
|
+
* - Curator's other vaults for reputation analysis
|
|
14
|
+
* - Price history for volatility analysis
|
|
15
|
+
*
|
|
16
|
+
* Used by: analyze_risk tool
|
|
17
|
+
*
|
|
18
|
+
* Usage:
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const data = await graphqlClient.request<RiskAnalysisResponse>(
|
|
21
|
+
* RISK_ANALYSIS_QUERY,
|
|
22
|
+
* {
|
|
23
|
+
* vaultAddress: '0x...',
|
|
24
|
+
* chainId: 1,
|
|
25
|
+
* curatorId: 'curator-id',
|
|
26
|
+
* where: {
|
|
27
|
+
* vault_in: ['0x...'],
|
|
28
|
+
* type_in: ['TotalAssetsUpdated']
|
|
29
|
+
* },
|
|
30
|
+
* orderBy: 'timestamp',
|
|
31
|
+
* orderDirection: 'asc'
|
|
32
|
+
* }
|
|
33
|
+
* );
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare const RISK_ANALYSIS_QUERY = "\n query RiskAnalysis(\n $vaultAddress: Address!,\n $chainId: Int!,\n $curatorId: String!,\n $where: TransactionFilterInput!,\n $orderBy: TransactionOrderBy!,\n $orderDirection: OrderDirection!\n ) {\n vault: vaultByAddress(address: $vaultAddress, chainId: $chainId) {\n ...VaultFragment\n }\n\n # Get all vaults for concentration risk calculation\n allVaults: vaults(where: { chainId_eq: $chainId, isVisible_eq: true }) {\n items {\n state {\n totalAssetsUsd\n }\n }\n }\n\n # Get curator's other vaults for reputation analysis\n curatorVaults: vaults(where: { chainId_eq: $chainId, curatorIds_contains: $curatorId }) {\n items {\n address\n state {\n totalAssetsUsd\n }\n }\n }\n\n # Get price history for volatility analysis\n priceHistory: transactions(\n where: $where,\n orderBy: $orderBy,\n orderDirection: $orderDirection,\n first: 100\n ) {\n items {\n timestamp\n data {\n ... on TotalAssetsUpdated {\n totalAssets\n totalAssetsUsd\n totalSupply\n }\n }\n }\n }\n }\n \n fragment VaultFragment on Vault {\n address\n symbol\n decimals\n name\n description\n shortDescription\n maxCapacity\n logoUrl\n averageSettlement\n isVisible\n asset {\n ...AssetInfoFragment\n }\n chain {\n ...ChainInfoFragment\n }\n state {\n state\n totalAssets\n totalAssetsUsd\n totalSupply\n pricePerShare\n pricePerShareUsd\n safeAssetBalance\n liveAPR {\n grossApr\n name\n netApr\n description\n }\n roles {\n owner\n valuationManager\n whitelistManager\n safe\n feeReceiver\n }\n managementFee\n performanceFee\n pendingSettlement {\n assets\n assetsUsd\n shares\n }\n inceptionApr {\n ...APRBreakdownFragment\n }\n pendingSiloBalances {\n assets\n shares\n }\n monthlyApr {\n ...APRBreakdownFragment\n }\n newTotalAssets\n highWaterMark\n lastFeeTime\n safeAssetBalanceUsd\n weeklyApr {\n ...APRBreakdownFragment\n }\n yearlyApr {\n ...APRBreakdownFragment\n }\n }\n curators {\n name\n id\n aboutDescription\n logoUrl\n url\n }\n integrator {\n name\n url\n logoUrl\n aboutDescription\n }\n defiIntegrations {\n name\n description\n link\n logoUrl\n type\n }\n }\n \n fragment AssetInfoFragment on Asset {\n id\n name\n symbol\n decimals\n address\n logoUrl\n description\n isVisible\n priceUsd\n chain {\n id\n name\n nativeToken\n logoUrl\n }\n }\n\n \n fragment ChainInfoFragment on Chain {\n id\n name\n nativeToken\n logoUrl\n wrappedNativeToken {\n address\n decimals\n name\n symbol\n }\n factory\n }\n\n \n fragment APRBreakdownFragment on APRs {\n linearNetApr\n linearNetAprWithoutExtraYields\n airdrops {\n name\n apr\n description\n distributionTimestamp\n endTimestamp\n isEstimation\n logoUrl\n multiplier\n ppsIncrease\n startTimestamp\n }\n incentives {\n name\n apr\n aprDescription\n description\n endTimestamp\n incentiveRate {\n incentiveAmount\n referenceToken {\n id\n }\n referenceTokenAmount\n }\n }\n nativeYields {\n name\n apr\n aprDescription\n description\n endTimestamp\n isEstimation\n logoUrl\n multiplier\n startTimestamp\n }\n }\n\n\n";
|
|
37
|
+
//# sourceMappingURL=risk.queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk.queries.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries/risk.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,mBAAmB,80HAoD/B,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Risk Queries
|
|
3
|
+
*
|
|
4
|
+
* GraphQL queries for vault risk analysis.
|
|
5
|
+
* Includes multi-factor risk scoring with vault, protocol, and market data.
|
|
6
|
+
*/
|
|
7
|
+
import { VAULT_FRAGMENT } from '../fragments/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* GraphQL query for vault risk analysis data
|
|
10
|
+
*
|
|
11
|
+
* Fetches comprehensive data for multi-factor risk analysis including:
|
|
12
|
+
* - Vault data with complete metadata
|
|
13
|
+
* - All vaults for concentration risk calculation
|
|
14
|
+
* - Curator's other vaults for reputation analysis
|
|
15
|
+
* - Price history for volatility analysis
|
|
16
|
+
*
|
|
17
|
+
* Used by: analyze_risk tool
|
|
18
|
+
*
|
|
19
|
+
* Usage:
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const data = await graphqlClient.request<RiskAnalysisResponse>(
|
|
22
|
+
* RISK_ANALYSIS_QUERY,
|
|
23
|
+
* {
|
|
24
|
+
* vaultAddress: '0x...',
|
|
25
|
+
* chainId: 1,
|
|
26
|
+
* curatorId: 'curator-id',
|
|
27
|
+
* where: {
|
|
28
|
+
* vault_in: ['0x...'],
|
|
29
|
+
* type_in: ['TotalAssetsUpdated']
|
|
30
|
+
* },
|
|
31
|
+
* orderBy: 'timestamp',
|
|
32
|
+
* orderDirection: 'asc'
|
|
33
|
+
* }
|
|
34
|
+
* );
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export const RISK_ANALYSIS_QUERY = `
|
|
38
|
+
query RiskAnalysis(
|
|
39
|
+
$vaultAddress: Address!,
|
|
40
|
+
$chainId: Int!,
|
|
41
|
+
$curatorId: String!,
|
|
42
|
+
$where: TransactionFilterInput!,
|
|
43
|
+
$orderBy: TransactionOrderBy!,
|
|
44
|
+
$orderDirection: OrderDirection!
|
|
45
|
+
) {
|
|
46
|
+
vault: vaultByAddress(address: $vaultAddress, chainId: $chainId) {
|
|
47
|
+
...VaultFragment
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
# Get all vaults for concentration risk calculation
|
|
51
|
+
allVaults: vaults(where: { chainId_eq: $chainId, isVisible_eq: true }) {
|
|
52
|
+
items {
|
|
53
|
+
state {
|
|
54
|
+
totalAssetsUsd
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
# Get curator's other vaults for reputation analysis
|
|
60
|
+
curatorVaults: vaults(where: { chainId_eq: $chainId, curatorIds_contains: $curatorId }) {
|
|
61
|
+
items {
|
|
62
|
+
address
|
|
63
|
+
state {
|
|
64
|
+
totalAssetsUsd
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
# Get price history for volatility analysis
|
|
70
|
+
priceHistory: transactions(
|
|
71
|
+
where: $where,
|
|
72
|
+
orderBy: $orderBy,
|
|
73
|
+
orderDirection: $orderDirection,
|
|
74
|
+
first: 100
|
|
75
|
+
) {
|
|
76
|
+
items {
|
|
77
|
+
timestamp
|
|
78
|
+
data {
|
|
79
|
+
... on TotalAssetsUpdated {
|
|
80
|
+
totalAssets
|
|
81
|
+
totalAssetsUsd
|
|
82
|
+
totalSupply
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
${VAULT_FRAGMENT}
|
|
89
|
+
`;
|
|
90
|
+
//# sourceMappingURL=risk.queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk.queries.js","sourceRoot":"","sources":["../../../src/graphql/queries/risk.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmD/B,cAAc;CACjB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Queries
|
|
3
|
+
*
|
|
4
|
+
* GraphQL queries for vault search and discovery operations.
|
|
5
|
+
* Supports advanced filtering, pagination, and sorting.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Response format type for search vaults query
|
|
9
|
+
*/
|
|
10
|
+
export type SearchVaultsResponseFormat = 'list' | 'summary' | 'full';
|
|
11
|
+
/**
|
|
12
|
+
* Create search vaults GraphQL query with dynamic fragment selection
|
|
13
|
+
*
|
|
14
|
+
* Supports advanced filtering, pagination, and sorting for vault discovery.
|
|
15
|
+
* Fragment selection optimizes token usage based on required detail level.
|
|
16
|
+
*
|
|
17
|
+
* Used by: search_vaults tool
|
|
18
|
+
*
|
|
19
|
+
* @param responseFormat - Detail level: 'list' (~60 tokens/vault), 'summary' (~170 tokens/vault), 'full' (~600 tokens/vault)
|
|
20
|
+
* @returns GraphQL query string with appropriate fragment
|
|
21
|
+
*
|
|
22
|
+
* Usage:
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const query = createSearchVaultsQuery('list'); // Minimal data
|
|
25
|
+
* const data = await graphqlClient.request<SearchVaultsResponse>(
|
|
26
|
+
* query,
|
|
27
|
+
* {
|
|
28
|
+
* first: 20,
|
|
29
|
+
* skip: 0,
|
|
30
|
+
* orderBy: 'totalAssetsUsd',
|
|
31
|
+
* orderDirection: 'desc',
|
|
32
|
+
* where: { chainId_eq: 1, isVisible_eq: true }
|
|
33
|
+
* }
|
|
34
|
+
* );
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* Supported filters:
|
|
38
|
+
* - Asset filters: assetSymbol_eq, assetSymbol_in, assetId_eq, assetId_in
|
|
39
|
+
* - Chain filters: chainId_eq, chainId_in
|
|
40
|
+
* - Curator filters: curatorIds_contains, curatorIds_contains_any
|
|
41
|
+
* - Visibility: isVisible_eq
|
|
42
|
+
* - Address filters: address_eq, address_in
|
|
43
|
+
* - Symbol filters: symbol_eq, symbol_in
|
|
44
|
+
* - Integrator filters: integratorId_eq, integratorId_in
|
|
45
|
+
* - TVL filters: state_totalAssetsUsd_gte, state_totalAssetsUsd_lte
|
|
46
|
+
*
|
|
47
|
+
* Sorting options:
|
|
48
|
+
* - orderBy: 'totalAssetsUsd' | 'address' | 'chainId' | 'id'
|
|
49
|
+
* - orderDirection: 'asc' | 'desc'
|
|
50
|
+
*/
|
|
51
|
+
export declare function createSearchVaultsQuery(responseFormat?: SearchVaultsResponseFormat): string;
|
|
52
|
+
/**
|
|
53
|
+
* Search vaults GraphQL query (legacy - uses full fragment)
|
|
54
|
+
*
|
|
55
|
+
* @deprecated Use createSearchVaultsQuery('full') instead for explicit fragment selection
|
|
56
|
+
*
|
|
57
|
+
* This maintains backward compatibility for existing code.
|
|
58
|
+
* Consider migrating to createSearchVaultsQuery() for better token efficiency.
|
|
59
|
+
*/
|
|
60
|
+
export declare const SEARCH_VAULTS_QUERY: string;
|
|
61
|
+
//# sourceMappingURL=search.queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.queries.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries/search.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,GAAE,0BAAmC,GAClD,MAAM,CA6BR;AAqBD;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,QAAkC,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Queries
|
|
3
|
+
*
|
|
4
|
+
* GraphQL queries for vault search and discovery operations.
|
|
5
|
+
* Supports advanced filtering, pagination, and sorting.
|
|
6
|
+
*/
|
|
7
|
+
import { VAULT_FRAGMENT, PAGEINFO_MINIMAL_FRAGMENT } from '../fragments/index.js';
|
|
8
|
+
import { VAULT_LIST_FRAGMENT } from '../fragments/vault-list.fragment.js';
|
|
9
|
+
import { VAULT_SUMMARY_FRAGMENT } from '../fragments/vault-summary.fragment.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create search vaults GraphQL query with dynamic fragment selection
|
|
12
|
+
*
|
|
13
|
+
* Supports advanced filtering, pagination, and sorting for vault discovery.
|
|
14
|
+
* Fragment selection optimizes token usage based on required detail level.
|
|
15
|
+
*
|
|
16
|
+
* Used by: search_vaults tool
|
|
17
|
+
*
|
|
18
|
+
* @param responseFormat - Detail level: 'list' (~60 tokens/vault), 'summary' (~170 tokens/vault), 'full' (~600 tokens/vault)
|
|
19
|
+
* @returns GraphQL query string with appropriate fragment
|
|
20
|
+
*
|
|
21
|
+
* Usage:
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const query = createSearchVaultsQuery('list'); // Minimal data
|
|
24
|
+
* const data = await graphqlClient.request<SearchVaultsResponse>(
|
|
25
|
+
* query,
|
|
26
|
+
* {
|
|
27
|
+
* first: 20,
|
|
28
|
+
* skip: 0,
|
|
29
|
+
* orderBy: 'totalAssetsUsd',
|
|
30
|
+
* orderDirection: 'desc',
|
|
31
|
+
* where: { chainId_eq: 1, isVisible_eq: true }
|
|
32
|
+
* }
|
|
33
|
+
* );
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* Supported filters:
|
|
37
|
+
* - Asset filters: assetSymbol_eq, assetSymbol_in, assetId_eq, assetId_in
|
|
38
|
+
* - Chain filters: chainId_eq, chainId_in
|
|
39
|
+
* - Curator filters: curatorIds_contains, curatorIds_contains_any
|
|
40
|
+
* - Visibility: isVisible_eq
|
|
41
|
+
* - Address filters: address_eq, address_in
|
|
42
|
+
* - Symbol filters: symbol_eq, symbol_in
|
|
43
|
+
* - Integrator filters: integratorId_eq, integratorId_in
|
|
44
|
+
* - TVL filters: state_totalAssetsUsd_gte, state_totalAssetsUsd_lte
|
|
45
|
+
*
|
|
46
|
+
* Sorting options:
|
|
47
|
+
* - orderBy: 'totalAssetsUsd' | 'address' | 'chainId' | 'id'
|
|
48
|
+
* - orderDirection: 'asc' | 'desc'
|
|
49
|
+
*/
|
|
50
|
+
export function createSearchVaultsQuery(responseFormat = 'list') {
|
|
51
|
+
const { fragment, fragmentName } = getFragmentForResponseFormat(responseFormat);
|
|
52
|
+
return `
|
|
53
|
+
query SearchVaults(
|
|
54
|
+
$first: Int!,
|
|
55
|
+
$skip: Int!,
|
|
56
|
+
$orderBy: VaultOrderBy!,
|
|
57
|
+
$orderDirection: OrderDirection!,
|
|
58
|
+
$where: VaultFilterInput
|
|
59
|
+
) {
|
|
60
|
+
vaults(
|
|
61
|
+
first: $first,
|
|
62
|
+
skip: $skip,
|
|
63
|
+
orderBy: $orderBy,
|
|
64
|
+
orderDirection: $orderDirection,
|
|
65
|
+
where: $where
|
|
66
|
+
) {
|
|
67
|
+
items {
|
|
68
|
+
...${fragmentName}
|
|
69
|
+
}
|
|
70
|
+
pageInfo {
|
|
71
|
+
...PageInfoMinimalFragment
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
${fragment}
|
|
76
|
+
${PAGEINFO_MINIMAL_FRAGMENT}
|
|
77
|
+
`;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get fragment and fragment name based on response format
|
|
81
|
+
*/
|
|
82
|
+
function getFragmentForResponseFormat(responseFormat) {
|
|
83
|
+
switch (responseFormat) {
|
|
84
|
+
case 'list':
|
|
85
|
+
return { fragment: VAULT_LIST_FRAGMENT, fragmentName: 'VaultListFragment' };
|
|
86
|
+
case 'summary':
|
|
87
|
+
return { fragment: VAULT_SUMMARY_FRAGMENT, fragmentName: 'VaultSummaryFragment' };
|
|
88
|
+
case 'full':
|
|
89
|
+
return { fragment: VAULT_FRAGMENT, fragmentName: 'VaultFragment' };
|
|
90
|
+
default:
|
|
91
|
+
return { fragment: VAULT_LIST_FRAGMENT, fragmentName: 'VaultListFragment' };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Search vaults GraphQL query (legacy - uses full fragment)
|
|
96
|
+
*
|
|
97
|
+
* @deprecated Use createSearchVaultsQuery('full') instead for explicit fragment selection
|
|
98
|
+
*
|
|
99
|
+
* This maintains backward compatibility for existing code.
|
|
100
|
+
* Consider migrating to createSearchVaultsQuery() for better token efficiency.
|
|
101
|
+
*/
|
|
102
|
+
export const SEARCH_VAULTS_QUERY = createSearchVaultsQuery('full');
|
|
103
|
+
//# sourceMappingURL=search.queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.queries.js","sourceRoot":"","sources":["../../../src/graphql/queries/search.queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAOhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,uBAAuB,CACrC,iBAA6C,MAAM;IAEnD,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,4BAA4B,CAAC,cAAc,CAAC,CAAC;IAEhF,OAAO;;;;;;;;;;;;;;;;eAgBM,YAAY;;;;;;;MAOrB,QAAQ;MACR,yBAAyB;GAC5B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,4BAA4B,CAAC,cAA0C;IAI9E,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;QAC9E,KAAK,SAAS;YACZ,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;QACpF,KAAK,MAAM;YACT,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;QACrE;YACE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;IAChF,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC"}
|