/** * Portfolio Queries * * GraphQL queries for user portfolio operations. * Includes user portfolio data and portfolio optimization queries. */ /** * Response format type for user portfolio query */ export type PortfolioResponseFormat = 'list' | 'summary' | 'full'; /** * Create user portfolio GraphQL query with dynamic fragment selection * * Fetches complete user portfolio with vault positions and metadata. * Fragment selection optimizes token usage based on required detail level. * * Used by: get_user_portfolio tool * * Aliases: `state.sharesUsd: usd` — backend deprecated * `VaultPositionState.sharesUsd` (schema.gql:2466) in favor of `usd`. The alias * keeps the downstream TS field name stable while reading the canonical field. * * @param responseFormat - Detail level: 'list' (~60 tokens/vault), 'summary' (~170 tokens/vault), 'full' (~600 tokens/vault) * @returns GraphQL query string with appropriate fragment * * Usage: * ```typescript * const query = createGetUserPortfolioQuery('summary'); // Balanced data * const data = await graphqlClient.request( * query, * { where: { user_eq: '0x...' } } * ); * ``` * * Token optimization: * - list: ~60 tokens/position (minimal vault data) * - summary: ~170 tokens/position (balanced - includes curators, descriptions) * - full: ~600 tokens/position (complete vault data) * * For a user with 10 positions: * - list: 600 tokens (90% reduction) * - summary: 1,700 tokens (72% reduction) * - full: 6,000 tokens (current behavior) */ export declare function createGetUserPortfolioQuery(responseFormat?: PortfolioResponseFormat): string; /** * User portfolio GraphQL query (legacy - uses full fragment) * * @deprecated Use createGetUserPortfolioQuery('full') instead for explicit fragment selection * * This maintains backward compatibility for existing code. * Consider migrating to createGetUserPortfolioQuery() for better token efficiency. */ export declare const GET_USER_PORTFOLIO_QUERY: string; /** * GraphQL query for single vault optimization data * * Fetches one vault with its historical price and performance metrics * for portfolio optimization calculations. Used in parallel queries. * * Used by: optimize_portfolio tool (per-vault queries) * * Usage: * ```typescript * const data = await graphqlClient.request( * SINGLE_VAULT_OPTIMIZATION_QUERY, * { vaultAddress: '0x...', chainId: 1 } * ); * ``` */ export declare const SINGLE_VAULT_OPTIMIZATION_QUERY = "\n query SingleVaultOptimization(\n $vaultAddress: Address!,\n $chainId: Int!,\n $options: TimeRangeOptions\n ) {\n vault: vaultByAddress(address: $vaultAddress, chainId: $chainId) {\n ...VaultFragment\n stateHistory {\n pricePerShareUsd(options: $options) {\n x\n y\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 creationDate\n inception\n asset {\n ...AssetInfoFragment\n }\n chain {\n ...ChainInfoFragment\n }\n state {\n state\n version\n syncMode\n isAsyncOnly\n isPaused\n safeLocked\n superOperatorLocked\n allowHighWaterMarkReset\n accessMode\n blacklist\n externalSanctionsList\n maxCap\n totalAssets\n totalAssetsUsd\n totalAssetsExpiration\n totalAssetsLifespan\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 securityCouncil\n superOperator\n }\n managementFee\n performanceFee\n protocolFee\n entryRate\n exitRate\n haircutRate\n upcomingManagementFee\n upcomingPerformanceFee\n feeRatesCooldown\n newRatesTimestamp\n guardrails {\n activated\n lowerRate\n upperRate\n }\n isWhitelistActivated\n whitelist\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 bundles {\n octav\n debank\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 twrrNetApr\n twrrNetAprWithoutExtraYields\n twrrGrossAprWithoutExtraYields\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"; /** * GraphQL query for single vault composition data * * Fetches cross-chain composition data for a vault from Octav API. * Returns a JSONObject with chain keys containing composition metrics. * * Note: Backend API changed - now uses `walletAddress` parameter and returns * JSONObject type (no fragment needed). Response contains chains as keys with * value, chainId, name, etc. * * Used by: get_user_portfolio tool (for composition aggregation) * compare_vaults tool (for diversification analysis) * * Usage: * ```typescript * const data = await graphqlClient.request<{ vaultComposition: RawVaultComposition | null }>( * SINGLE_VAULT_COMPOSITION_QUERY, * { walletAddress: '0x...' } * ); * ``` */ export declare const SINGLE_VAULT_COMPOSITION_QUERY = "\n query SingleVaultComposition($address: Address!, $chainId: Int!) {\n vaultByAddress(address: $address, chainId: $chainId) {\n address\n composition {\n ...CompositionFragment\n }\n }\n }\n \n fragment CompositionFragment on CompositionData {\n totalValueInUsd\n compositions {\n protocol\n valueInUsd\n repartition\n logoUrl\n details {\n protocol\n valueInUsd\n repartition\n logoUrl\n }\n }\n tokenCompositions {\n symbol\n name\n contract\n chainKey\n valueInUsd\n repartition\n logoUrl\n details {\n symbol\n name\n contract\n chainKey\n valueInUsd\n repartition\n logoUrl\n }\n }\n }\n\n"; //# sourceMappingURL=portfolio.queries.d.ts.map