/** * This file was auto-generated by openapi-typescript. * Do not make direct changes to the file. */ export interface paths { "/health": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Liveness check * @description Returns service version + uptime. Use `/health/chains` for indexer freshness per chain. */ get: operations["health"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/health/chains": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Chain sync status * @description Returns per-chain indexer sync status with freshness indicators. */ get: operations["chain_sync_status"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/prices": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get latest token price * @description Returns the latest USD price for a token. Query parameters: `address` (required), `chain_id` (required), `at` (optional ISO 8601 timestamp). */ get: operations["get_latest_price"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/prices/timeseries": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get historical token prices * @description Returns a USD price timeseries for a token. Query parameters: `address` (required), `chain_id` (required), `start` (required ISO 8601), `end` (required ISO 8601), `granularity` (optional: `raw` | `hour` | `day` | `week` | `month`), `limit` (optional, default 1000, max 5000). */ get: operations["get_price_history"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/strategies": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List curated strategies * @description Returns one card per curated strategy (Earn, Prime Lending, …) with aggregate metrics across the strategy's visible vaults: total TVL in USD, the highest 7/30/90-day APY ("APY up to"), and the vault count. TVL sums only vaults whose numeraire has a USD price; unpriced vaults still count toward `vault_count` and the APY maxes. Strategy membership and visibility are curated by Gauntlet; metrics come from the indexer and are refreshed continuously. Ordered by curated display order. */ get: operations["list_strategies"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/tvl": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get live aggregate TVL * @description Returns live aggregate Gauntlet TVL composed from indexed Gaia vault data and configured external TVL sources. Source totals are always returned; pass `?include_breakdown=true` for chain and external-source explainability rows. */ get: operations["get_tvl"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/users/{wallet_address}/activity": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get user wallet activity (deposits, withdrawals, transfers) * @description Immutable log of on-chain events that affected the wallet's vault position. Each row is a frozen-in-time record; rows never mutate after emission. * * `?vault_id=` narrows to one vault; omitted = activity across every vault the wallet has touched, scoped to the Gauntlet-curated vault set (listed vaults by default, `include_hidden=true` widens to hidden vaults; disabled vaults never appear). Each row echoes its `vault_id` so wallet-wide consumers can distinguish per-vault activity. * * Async deposit/redeem lifecycles emit multiple rows (one at request time with `status=pending`, a later one with `status=settled` or `refunded`). Consumers correlate them via `request_hash` to follow a single action across rows. Sync flows emit one row directly in the settled state. * * Pagination is cursor-only. Default order is `desc` (newest first). Default page size 100, max 1000. */ get: operations["get_user_activity"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/users/{wallet_address}/positions": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get all current positions for a wallet * @description Returns every vault position the wallet currently holds or has pending exposure in (pending deposit or redeem). Fully-exited positions (zero shares, no pending escrow) are excluded. Scoped to the Gauntlet-curated vault set: only positions in publicly listed vaults are returned by default, `include_hidden=true` widens to hidden (enabled but unlisted) vaults, and positions in disabled vaults are never returned. * * All monetary metrics include a `usd` field (null when pricing is unavailable). `value.usd` and `pending_deposit_assets.usd` use the current spot price. `cost_basis.usd` and `pnl.realized.usd` are computed by replaying on-chain events against the token's historical price series — the same method used by `GET /v1/users/{wallet}/positions/{vault_id}`. `pnl.unrealized.usd`, `pnl.total.usd`, and `roi_pct.usd` are derived from those. * * Cursor-paginated on internal position ID. Default page size 100, max 500. */ get: operations["get_user_all_positions"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/users/{wallet_address}/positions/{vault_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get user position in a specific vault * @description Returns the current position snapshot for a wallet in a single vault. Historical points live on `/positions/{vault_id}/timeseries`. */ get: operations["get_user_vault_position"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/users/{wallet_address}/positions/{vault_id}/timeseries": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get user position timeseries for a specific vault * @description Returns historical value, cost basis, grouped PnL, and ROI data for a single vault position. Default order is `asc` (oldest first, chart-friendly); pass `?order=desc` for newest-first list views. Cursor-paginated — pass `meta.next_cursor` back as `?next=` for the next page (cursor is bound to the order it was created with). Defaults to `granularity=day` (one UTC-midnight snapshot per day); `week` returns Monday 00:00 UTC snapshots, `month` returns first-of-month 00:00 UTC snapshots, and `hour` returns the raw hourly cadence. Default page size is 1000. */ get: operations["get_user_vault_position_timeseries"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/vaults": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List Gauntlet-curated vaults * @description Returns identification-only rows for the admin-curated visible vaults, ordered most-recent-first; pass `?include_hidden=true` for every enabled vault (hidden included, disabled never). Each row's `group.id` groups deployments of the same logical Admin vault, `group.slug` is its unique public route, and `group.is_primary` identifies its representative. Use `/{vault_id}` for current metrics, `/{vault_id}/definition` for the full vault definition, `/{vault_id}/timeseries` for history. * * Cursor-paginated, but the default page size is the cap so most callers don't need to think about it — pass `meta.next_cursor` back as `?next=` only if the result exceeds 1000 vaults. */ get: operations["list_vaults"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/vaults/{vault_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get current vault metrics * @description Returns the current metrics snapshot for a vault — same metric shape that `/timeseries` emits per point, so this is `current point` and timeseries is `historical points`. The vault's Admin grouping is included when the deployment is associated. The protocol-specific definition (fees, hooks, curator, etc.) lives on `/{vault_id}/definition`. */ get: operations["get_vault"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/vaults/{vault_id}/definition": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get vault definition * @description Returns the vault's identity + protocol-specific definition: name, owner, numeraire token, hooks, fees, curator, etc., merged inline based on `vault_type`. Aera carries hooks/feeCalculator, Morpho V1/V2 carry curator + WAD-scaled fees, Symbiotic carries identity only. */ get: operations["get_vault_definition"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/vaults/{vault_id}/timeseries": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get vault timeseries data * @description Returns historical metric data points. Default order is `asc` (oldest first, chart-friendly); pass `?order=desc` for newest-first list views. Supports date range filtering and cursor pagination — pass `meta.next_cursor` back as `?next=` for the next page (cursor is bound to the order it was created with). Defaults to `granularity=day` (one UTC-midnight snapshot per day); `week` returns Monday 00:00 UTC snapshots, `month` returns first-of-month 00:00 UTC snapshots, and `hour` returns the raw hourly cadence. Default page size is 1000. */ get: operations["get_vault_timeseries"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/v1/vaults/featured": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List featured vaults * @description Returns the admin-curated featured shortlist, one card per logical vault in curated order: display name, marketing description, deployed chains (highest-TVL first), supply token, aggregate TVL, and the highest 7/30/90-day APY across deployments. `vault_ids` carries per-deployment `{chainId}:{address}` ids for `/v1/vaults/{vault_id}` links, in the same order as `chains`. */ get: operations["list_featured_vaults"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; } export type webhooks = Record; export interface components { schemas: { /** * @description Decimal-string metric paired across native (numeraire-token) and USD. * `native` is always present; `usd` is JSON null when pricing is unavailable. */ AmountPair: { native: string; usd?: string | null; }; /** * @description Asset-delta envelope on user activity rows. `native` is always present; * `token` is present when the indexer knows the row's asset token. * The struct shape is kept stable so derived denominations (usd, * numeraire token) can be added later without breaking integrators. */ AssetDelta: { native: string; token?: null | components["schemas"]["TokenRef"]; }; BasicMeta: { /** Format: date-time */ refreshed_at: string; request_id: string; }; ChainSyncStatus: { /** Format: int64 */ chain_id: number; freshness: string; /** Format: int64 */ lag_seconds: number; /** Format: int64 */ latest_block: number; /** Format: int64 */ latest_timestamp: number; }; /** * @description USD amount on curated aggregates: decimal string, `null` when the * pricing service is not configured. */ CuratedTvl: { usd?: string | null; }; ErrorBody: { /** @description Machine-readable error code (e.g. `NOT_FOUND`, `UNAUTHORIZED`) */ code: string; details?: unknown; /** @description Human-readable error message */ message: string; }; /** @description Standard error response envelope returned on 4xx/5xx */ ErrorResponse: { error: components["schemas"]["ErrorBody"]; }; FeaturedVault: { /** * Format: double * @description Highest 7-day APY across the vault's deployments, fraction * (0.0573 = 5.73%). `null` while every window is warming up. */ apy_7d_max?: number | null; /** * Format: double * @description Highest 30-day APY across the vault's deployments. */ apy_30d_max?: number | null; /** * Format: double * @description Highest 90-day APY across the vault's deployments. */ apy_90d_max?: number | null; /** @description Chain slugs the vault is deployed on, highest-TVL first. */ chains: string[]; /** * @description Curated marketing description; `null` when the curator hasn't * written one. */ description?: string | null; /** * @description Curated display name; falls back to the registry id when the * curator hasn't named the vault yet. `vault_id` carries the * stable logical identifier. */ name: string; /** * @description Card-length copy (e.g. "Conservative lending yield with low * risk"). `null` when the curator hasn't written any; consumers * decide whether to fall back to `description`. */ short_description?: string | null; /** @description Stable public route for the logical vault group. */ slug: string; /** * @description Supply (numeraire) token symbol, from the highest-TVL deployment * that reports one. */ supply_token?: string | null; /** @description Aggregate TVL across the vault's deployments ("Total Supply"). */ tvl: components["schemas"]["CuratedTvl"]; /** * Format: date-time * @description Most recent indexer snapshot among the vault's deployments; * `null` when no deployment carried a usable timestamp. */ updated_at?: string | null; /** @description Stable logical vault id assigned by Admin. */ vault_id: string; /** * @description Per-deployment API vault ids (`{chainId}:{address}`, same order * as `chains`) for `/v1/vaults/{vault_id}` links. */ vault_ids: string[]; }; FeaturedVaultsResponse: { data: components["schemas"]["FeaturedVault"][]; meta: components["schemas"]["ListMeta"]; }; HealthResponse: { status: string; /** Format: int64 */ uptime_seconds: number; version: string; }; HistoricalPriceValue: { /** Format: double */ usd: number; }; LatestPriceResponse: { address: string; /** Format: int64 */ chain_id: number; currency: string; price: components["schemas"]["PriceValue"]; symbol: string; timestamp: string; }; /** * @description Documented metadata for list endpoints; pagination fields are omitted * by unpaginated responses. */ ListMeta: { /** * Format: int64 * @description Number of items in this response. */ count: number; /** * Format: int64 * @description Page-size cap actually applied to paginated lists. */ limit?: number | null; /** @description Set when more pages exist; pass back as `?next=`. */ next_cursor?: string | null; /** @description Item-scoped failures isolated from an aggregate response. */ partial_errors?: components["schemas"]["PartialResponseError"][] | null; /** Format: date-time */ refreshed_at: string; request_id: string; }; PartialResponseError: { /** @description Machine-readable error code for the isolated item failure. */ code: string; /** @description Human-readable error message. */ message: string; /** @description Resource that failed inside the aggregate response, when known. */ resource_id?: string | null; }; PnlBreakdown: { /** @description Locked-in PnL from past disposals. */ realized: components["schemas"]["AmountPair"]; /** @description `unrealized` + `realized`. */ total: components["schemas"]["AmountPair"]; /** @description `value` − `cost_basis`. */ unrealized: components["schemas"]["AmountPair"]; }; PositionTimeseriesPoint: { /** @description Cumulative cost of held shares (`usd` uses per-event historical pricing). */ cost_basis: components["schemas"]["AmountPair"]; /** @description Profit and loss grouped by total, unrealized, and realized values. */ pnl: components["schemas"]["PnlBreakdown"]; /** @description ROI ratio (`native` is in-kind; `usd` is null when pricing unavailable). */ roi_pct: components["schemas"]["RatioPair"]; /** @description Shares currently held by the wallet at this timestamp. */ shares_owned: string; /** Format: date-time */ timestamp: string; /** * @description Position value at this timestamp (`native` = numeraire-token units, * `usd` = `native` × historical USD price; null when unavailable). */ value: components["schemas"]["AmountPair"]; }; PriceValue: { /** Format: int32 */ decimals: number; /** Format: double */ usd: number; }; /** * @description JSON-number ratio paired across native (in-kind) and USD denominations. * Null when event history is unavailable or cannot support ROI replay. */ RatioPair: { /** Format: double */ native?: number | null; /** Format: double */ usd?: number | null; }; StrategyCard: { /** * Format: double * @description Highest 7-day APY across the strategy's vaults ("APY Up To"), * fraction (0.0953 = 9.53%). `null` while every vault's window is * still warming up. */ apy_7d_max?: number | null; /** * Format: double * @description Highest 30-day APY across the strategy's vaults. */ apy_30d_max?: number | null; /** * Format: double * @description Highest 90-day APY across the strategy's vaults. */ apy_90d_max?: number | null; /** @description Marketing description of the strategy. */ description?: string | null; /** * @description Strategy identifier from the admin vocabulary (e.g. `earn`, * `prime_lending`). */ id: string; /** @description Display name (e.g. "Prime Lending"). */ name: string; /** * @description Card-length copy (e.g. "Conservative lending yield with low * risk"). `null` when the curator hasn't written any; consumers * decide whether to fall back to `description`. */ short_description?: string | null; /** * @description Aggregate TVL across the strategy's priced vaults ("Total * Supply"). Vaults whose numeraire has no USD price are left out of * the sum but still count toward `vault_count` and the APY maxes. */ tvl: components["schemas"]["CuratedTvl"]; /** * Format: date-time * @description Most recent indexer snapshot among the strategy's vaults; `null` * in the degenerate case where no matched row carried a timestamp. */ updated_at?: string | null; /** * Format: int64 * @description Visible curated vaults in this strategy that matched at least one * indexed deployment. */ vault_count: number; }; StrategyListResponse: { data: components["schemas"]["StrategyCard"][]; meta: components["schemas"]["ListMeta"]; }; /** @description Curated strategy assignment from the admin registry. */ StrategyRef: { /** * @description Strategy label id (`prime_lending`, `earn`, …) — matches * `/v1/strategies` card ids. */ id: string; /** @description Display name (`Prime Lending`). */ name: string; }; TimeseriesMeta: { /** * Format: int64 * @description Number of points in this response. */ count: number; /** Format: date-time */ end?: string | null; /** * Format: int64 * @description Page-size cap actually applied. */ limit: number; /** @description Set when more pages exist; pass back as `?next=`. */ next_cursor?: string | null; /** @description Item-scoped failures isolated from an aggregate response. */ partial_errors?: components["schemas"]["PartialResponseError"][] | null; /** Format: date-time */ refreshed_at: string; request_id: string; /** * Format: date-time * @description Window bounds the response covers (echoes the request when set). */ start?: string | null; }; TimeseriesPoint: { price: components["schemas"]["HistoricalPriceValue"]; timestamp: string; }; TimeseriesResponse: { data: components["schemas"]["TimeseriesPoint"][]; }; TokenRef: { address: string; /** Format: int32 */ decimals?: number | null; symbol?: string | null; }; TvlAmount: { usd: string; }; TvlBreakdown: { id: string; label: string; source_id: string; tvl: components["schemas"]["TvlAmount"]; /** Format: date-time */ updated_at: string; }; TvlResponse: { data: components["schemas"]["TvlSummary"]; meta: components["schemas"]["BasicMeta"]; }; TvlSummary: { breakdown?: components["schemas"]["TvlBreakdown"][] | null; totals: components["schemas"]["TvlTotal"][]; tvl: components["schemas"]["TvlAmount"]; /** Format: date-time */ updated_at: string; }; TvlTotal: { id: string; label: string; tvl: components["schemas"]["TvlAmount"]; /** Format: date-time */ updated_at: string; }; /** * @description One immutable entry in the wallet's activity log. * * Each row represents a single on-chain event that affected the * wallet's vault position. Async deposit/redeem lifecycles emit * multiple rows (one per lifecycle event — request, solve, refund); * each row is frozen at emission time and never mutates. To follow * an async action across rows, correlate via `request_hash`. */ UserActivity: { /** * @description Signed asset delta in the row's asset-token units, using a * deposit-ledger sign convention (NOT wallet-flow direction): * - Positive = a deposit-direction action (`deposit`, * `deposit_pending`, `transfer_in`). * - Negative = a withdraw-direction action (`withdraw`, * `deposit_refunded`, `transfer_out`). * - `0` = no asset movement at this event * (`deposit` on Aera async solve, `withdraw_pending`, * `withdraw_refunded`). * * Note: under this convention `deposit_refunded` is negative * (a deposit was unwound) even though tokens flow back INTO the * wallet, and async `withdraw` (Aera redeem_solved) is negative * even though tokens flow back INTO the wallet — the sign tracks * the deposit-ledger direction, not the user's wallet balance. * * Summing across rows for a single async lifecycle gives the net * signed asset movement of that lifecycle (no double-counting). * `assets_delta.token` identifies the asset token when known. Emitted * as a struct (`{ native: "...", token: { address, symbol } }`) so * derived denominations (e.g. usd) can be added later without breaking * the response shape. */ assets_delta: components["schemas"]["AssetDelta"]; /** * @description Block hash — 1:1 identifier for the block this event was mined * in. Consumers needing to detect reorgs should key off this rather * than `block_number` (multiple blocks can share a number across a * reorg). */ block_hash: string; /** * Format: int64 * @description Block number — kept alongside `block_timestamp` for on-chain * reconciliation / explorer linking. */ block_number: number; /** * Format: int64 * @description Unix seconds, block time (`block.timestamp` from the chain). */ block_timestamp: number; /** * @description Aera async-flow correlation hash. Links a `*_pending` row to * its later terminal row (bare `deposit`/`withdraw` for settled, * or `*_refunded`) of the same lifecycle. Emitted only on rows * that participate in an async flow; omitted on sync rows and on * secondary-market transfers. */ request_hash?: string | null; /** * @description Signed share delta in 18-decimal units, reported at the event * where the shares actually moved. Conventions by row type: * - `deposit` — positive (shares minted to the wallet). * - `deposit_pending` / `deposit_refunded` — `0` (no share * movement; deposit requests touch assets only). * - `withdraw_pending` — negative for Aera async redeems (shares * leave the wallet at request time, escrowed to the Provisioner). * - `withdraw` — negative for sync (Morpho) withdraws (shares * burn on the same row that pays out assets); `0` for Aera * async redeems (the share movement is recorded on the paired * `withdraw_pending` row). * - `withdraw_refunded` — positive (escrowed shares return). * - `transfer_in` — positive; `transfer_out` — negative. * * Summing across rows for a single async lifecycle gives the net * share movement of that lifecycle — there is no double-counting. */ shares_delta: string; /** @description Transaction hash of the on-chain event. */ tx_hash: string; /** * @description What happened. One of: * - `deposit` — settled deposit (sync vault flow or async terminal solve). * - `deposit_pending` — async deposit request submitted; awaiting solver. * - `deposit_refunded` — async deposit returned without settling; assets bounced back. * - `withdraw` — settled withdrawal (sync vault flow or async terminal solve). * - `withdraw_pending` — async redeem request submitted; awaiting solver. * - `withdraw_refunded` — async redeem returned without settling; shares bounced back. * - `transfer_in` — vault shares received from another EOA (secondary market). * - `transfer_out` — vault shares sent to another EOA. * * Async deposit/redeem lifecycles emit two rows (a `*_pending` at * request time, then a separate terminal row — bare `deposit` or * `_refunded` — at solve time). Rows are immutable; the pending * row never mutates. Correlate the pair via `request_hash`. */ type: string; /** @description CAIP-10 vault identifier this row belongs to. Always emitted. */ vault_id: string; }; UserActivityResponse: { data: components["schemas"]["UserActivity"][]; meta: components["schemas"]["TimeseriesMeta"]; }; UserAllPositionsResponse: { data: components["schemas"]["UserPosition"][]; meta: components["schemas"]["TimeseriesMeta"]; }; UserPosition: { metrics: components["schemas"]["UserPositionMetrics"]; numeraire_token?: null | components["schemas"]["TokenRef"]; vault_id: string; wallet_address: string; }; UserPositionLatestResponse: { data: components["schemas"]["UserPosition"]; meta: components["schemas"]["BasicMeta"]; }; UserPositionMetrics: { /** @description Cumulative cost of currently-held shares. */ cost_basis: components["schemas"]["AmountPair"]; /** * @description Assets escrowed at the Aera Provisioner pending share mint * (`native` = numeraire-token units, `usd` = `native` × current USD price). */ pending_deposit_assets: components["schemas"]["AmountPair"]; /** @description Shares escrowed at the Aera Provisioner pending asset return. */ pending_redeem_shares: string; /** @description Profit and loss grouped by total, unrealized, and realized values. */ pnl: components["schemas"]["PnlBreakdown"]; /** @description Time-weighted ROI from user deposit/redeem history. */ roi_pct: components["schemas"]["RatioPair"]; /** @description Shares currently held by the wallet. */ shares_owned: string; /** * @description Current market value of held shares (`native` = numeraire-token * units, `usd` = `native` × current USD price). */ value: components["schemas"]["AmountPair"]; }; UserPositionsTimeseriesResponse: { data: components["schemas"]["PositionTimeseriesPoint"][]; meta: components["schemas"]["TimeseriesMeta"]; }; VaultDetail: { address: string; /** Format: int64 */ chain_id: number; group?: null | components["schemas"]["VaultGroupRef"]; metrics: components["schemas"]["VaultMetrics"]; name: string; numeraire_token: components["schemas"]["TokenRef"]; strategy?: null | components["schemas"]["StrategyRef"]; symbol: string; vault_id: string; vault_type: string; }; VaultDetailResponse: { data: components["schemas"]["VaultDetail"]; meta: components["schemas"]["BasicMeta"]; }; /** @description Admin-curated logical grouping for a deployment-level vault row. */ VaultGroupRef: { /** @description Admin-curated deployment date (`YYYY-MM-DD`). */ deployment_date?: string | null; /** @description Admin-curated long-form detail-page copy. */ description?: string | null; /** @description Stable internal group id from the Admin vault registry (`vlt_176`). */ id: string; /** @description Whether this deployment is the group's primary representative. */ is_primary: boolean; /** @description Whether performance views should use a stable-denominated basis. */ is_stable: boolean; /** @description Unique, curator-managed public route (`stgusda`). */ slug: string; }; VaultListResponse: { data: components["schemas"]["VaultDetail"][]; meta: components["schemas"]["ListMeta"]; }; VaultMetrics: { /** Format: double */ apy_7d?: number | null; /** Format: double */ apy_30d?: number | null; /** Format: double */ apy_90d?: number | null; /** Format: int64 */ as_of?: number | null; total_supply: string; tvl: components["schemas"]["AmountPair"]; unit_price: string; }; VaultTimeseriesPoint: { /** Format: double */ apy_7d?: number | null; /** Format: double */ apy_30d?: number | null; /** Format: double */ apy_90d?: number | null; /** Format: date-time */ timestamp: string; total_supply: string; tvl: components["schemas"]["AmountPair"]; unit_price: string; }; VaultTimeseriesResponse: { data: components["schemas"]["VaultTimeseriesPoint"][]; meta: components["schemas"]["TimeseriesMeta"]; }; }; responses: never; parameters: never; requestBodies: never; headers: never; pathItems: never; } export type $defs = Record; export interface operations { health: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Service is live */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HealthResponse"]; }; }; }; }; chain_sync_status: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Chain sync status */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ChainSyncStatus"][]; }; }; }; }; get_latest_price: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Token price */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["LatestPriceResponse"]; }; }; /** @description Token not found */ 404: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Invalid parameters */ 422: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Pricing service not configured */ 503: { headers: { [name: string]: unknown; }; content?: never; }; }; }; get_price_history: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Price timeseries */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TimeseriesResponse"]; }; }; /** @description Invalid parameters */ 422: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Pricing service not configured */ 503: { headers: { [name: string]: unknown; }; content?: never; }; }; }; list_strategies: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description List of strategy cards */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["StrategyListResponse"]; }; }; /** @description Missing or invalid auth */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Data source unavailable */ 503: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; }; }; get_tvl: { parameters: { query?: { /** @description Include chain and external-source TVL breakdown rows. */ include_breakdown?: boolean; /** @description Deprecated alias for include_breakdown. */ include_sources?: boolean; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Live aggregate TVL */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TvlResponse"]; }; }; /** @description Missing or invalid auth */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Data source unavailable */ 503: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; }; }; get_user_activity: { parameters: { query?: { /** @description Wallet-wide feeds only: include activity in hidden (enabled but unlisted) vaults alongside visible ones. Activity in disabled vaults is never returned. Ignored when `vault_id` is set. */ include_hidden?: boolean; /** @description Page size (1–1000, default 100). */ limit?: number; /** @description Opaque cursor from previous `meta.next_cursor`. */ next?: string; /** @description Sort direction: `desc` (default) or `asc`. */ order?: string; /** @description CAIP-10 vault identifier. Optional — omit for wallet-wide activity across every vault the wallet has touched. */ vault_id?: string; }; header?: never; path: { /** @description Ethereum wallet address */ wallet_address: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description User wallet activity */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["UserActivityResponse"]; }; }; /** @description Missing or invalid auth */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Invalid cursor */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; }; }; get_user_all_positions: { parameters: { query?: { /** @description Include positions in hidden (enabled but unlisted) vaults alongside visible ones. Positions in disabled vaults are never returned. */ include_hidden?: boolean; /** @description Page size (1–500, default 100). */ limit?: number; /** @description Opaque cursor from previous `meta.next_cursor`. */ next?: string; }; header?: never; path: { /** @description Ethereum wallet address */ wallet_address: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description All wallet positions */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["UserAllPositionsResponse"]; }; }; /** @description Missing or invalid auth */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Invalid cursor */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; }; }; get_user_vault_position: { parameters: { query?: never; header?: never; path: { /** @description Vault identifier */ vault_id: string; /** @description Ethereum wallet address */ wallet_address: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Single vault position */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["UserPositionLatestResponse"]; }; }; /** @description Missing or invalid auth */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Position not found */ 404: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; }; }; get_user_vault_position_timeseries: { parameters: { query?: { /** @description Window end: ISO 8601 date (`2026-01-01`, read as 00:00:00 UTC) or RFC 3339 timestamp (`2026-01-01T00:00:00Z`). */ end?: string; /** @description Sampling granularity: `day` (default), `hour`, `week`, or `month`. Day/week/month buckets start at 00:00 UTC; weeks start Monday and months start on the 1st. */ granularity?: string; /** @description Page size (1–10000, default 1000). */ limit?: number; /** @description Opaque cursor from previous `meta.next_cursor`. */ next?: string; /** @description Sort direction: `asc` (default) or `desc`. */ order?: string; /** @description Window start: ISO 8601 date (`2026-01-01`, read as 00:00:00 UTC) or RFC 3339 timestamp (`2026-01-01T00:00:00Z`). */ start?: string; }; header?: never; path: { /** @description Vault identifier */ vault_id: string; /** @description Ethereum wallet address */ wallet_address: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Position timeseries */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["UserPositionsTimeseriesResponse"]; }; }; /** @description Missing or invalid auth */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Invalid cursor */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; }; }; list_vaults: { parameters: { query?: { /** @description Include hidden (enabled but unlisted) vaults alongside visible ones. Disabled vaults are never listed. */ include_hidden?: boolean; /** @description Page size (1–1000, default 1000). */ limit?: number; /** @description Opaque cursor from previous `meta.next_cursor`. */ next?: string; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description List of vaults */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["VaultListResponse"]; }; }; /** @description Missing or invalid auth */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Invalid cursor */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; }; }; get_vault: { parameters: { query?: never; header?: never; path: { /** @description Vault identifier (CAIP-10 `chainId:address`) */ vault_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Current vault metrics */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["VaultDetailResponse"]; }; }; /** @description Missing or invalid auth */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Vault not found */ 404: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; }; }; get_vault_definition: { parameters: { query?: never; header?: never; path: { /** @description Vault identifier (CAIP-10 `chainId:address`) */ vault_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Vault definition */ 200: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Missing or invalid auth */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Vault not found */ 404: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; }; }; get_vault_timeseries: { parameters: { query?: { /** @description Window end: ISO 8601 date (`2026-01-01`, read as 00:00:00 UTC) or RFC 3339 timestamp (`2026-01-01T00:00:00Z`). */ end?: string; /** @description Sampling granularity: `day` (default), `hour`, `week`, or `month`. Day/week/month buckets start at 00:00 UTC; weeks start Monday and months start on the 1st. */ granularity?: string; /** @description Page size (1–10000, default 1000). */ limit?: number; /** @description Opaque cursor from previous `meta.next_cursor`. */ next?: string; /** @description Sort direction: `asc` (default) or `desc`. */ order?: string; /** @description Window start: ISO 8601 date (`2026-01-01`, read as 00:00:00 UTC) or RFC 3339 timestamp (`2026-01-01T00:00:00Z`). */ start?: string; }; header?: never; path: { /** @description Vault identifier */ vault_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Timeseries data points */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["VaultTimeseriesResponse"]; }; }; /** @description Missing or invalid auth */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Vault not found */ 404: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Invalid parameters */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; }; }; list_featured_vaults: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Featured vault cards */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["FeaturedVaultsResponse"]; }; }; /** @description Missing or invalid auth */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; /** @description Data source unavailable */ 503: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ErrorResponse"]; }; }; }; }; } //# sourceMappingURL=generated.d.ts.map