@gauntlet-xyz/sdk 2.0.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/README.md +134 -1
  2. package/dist/api/activity.d.ts +70 -0
  3. package/dist/api/activity.d.ts.map +1 -0
  4. package/dist/api/activity.js +154 -0
  5. package/dist/api/activity.js.map +1 -0
  6. package/dist/api/caip.d.ts +29 -0
  7. package/dist/api/caip.d.ts.map +1 -0
  8. package/dist/api/caip.js +38 -0
  9. package/dist/api/caip.js.map +1 -0
  10. package/dist/api/client.d.ts +135 -0
  11. package/dist/api/client.d.ts.map +1 -0
  12. package/dist/api/client.js +119 -0
  13. package/dist/api/client.js.map +1 -0
  14. package/dist/api/decimal.d.ts +21 -0
  15. package/dist/api/decimal.d.ts.map +1 -0
  16. package/dist/api/decimal.js +44 -0
  17. package/dist/api/decimal.js.map +1 -0
  18. package/dist/api/errors.d.ts +32 -0
  19. package/dist/api/errors.d.ts.map +1 -0
  20. package/dist/api/errors.js +41 -0
  21. package/dist/api/errors.js.map +1 -0
  22. package/dist/api/generated.d.ts +1505 -0
  23. package/dist/api/generated.d.ts.map +1 -0
  24. package/dist/api/generated.js +6 -0
  25. package/dist/api/generated.js.map +1 -0
  26. package/dist/api/http.d.ts +16 -0
  27. package/dist/api/http.d.ts.map +1 -0
  28. package/dist/api/http.js +39 -0
  29. package/dist/api/http.js.map +1 -0
  30. package/dist/api/index.d.ts +14 -0
  31. package/dist/api/index.d.ts.map +1 -0
  32. package/dist/api/index.js +8 -0
  33. package/dist/api/index.js.map +1 -0
  34. package/dist/api/positionHistory.d.ts +44 -0
  35. package/dist/api/positionHistory.d.ts.map +1 -0
  36. package/dist/api/positionHistory.js +126 -0
  37. package/dist/api/positionHistory.js.map +1 -0
  38. package/dist/client.d.ts +6 -0
  39. package/dist/client.d.ts.map +1 -1
  40. package/dist/client.js +2 -0
  41. package/dist/client.js.map +1 -1
  42. package/dist/errors.d.ts +11 -0
  43. package/dist/errors.d.ts.map +1 -1
  44. package/dist/errors.js +21 -2
  45. package/dist/errors.js.map +1 -1
  46. package/dist/evm/abis/priceAndFeeCalculatorV2.d.ts +44 -0
  47. package/dist/evm/abis/priceAndFeeCalculatorV2.d.ts.map +1 -1
  48. package/dist/evm/abis/priceAndFeeCalculatorV2.js +22 -0
  49. package/dist/evm/abis/priceAndFeeCalculatorV2.js.map +1 -1
  50. package/dist/evm/abis/provisionerV2.d.ts +280 -0
  51. package/dist/evm/abis/provisionerV2.d.ts.map +1 -1
  52. package/dist/evm/abis/provisionerV2.js +92 -0
  53. package/dist/evm/abis/provisionerV2.js.map +1 -1
  54. package/dist/evm/adapters/aera.d.ts.map +1 -1
  55. package/dist/evm/adapters/aera.js +41 -10
  56. package/dist/evm/adapters/aera.js.map +1 -1
  57. package/dist/evm/adapters/types.d.ts +2 -0
  58. package/dist/evm/adapters/types.d.ts.map +1 -1
  59. package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts +10 -5
  60. package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts.map +1 -1
  61. package/dist/evm/aeraContracts/priceAndFeeCalculator.js +39 -5
  62. package/dist/evm/aeraContracts/priceAndFeeCalculator.js.map +1 -1
  63. package/dist/evm/aeraContracts/readOptions.d.ts +8 -0
  64. package/dist/evm/aeraContracts/readOptions.d.ts.map +1 -0
  65. package/dist/evm/aeraContracts/readOptions.js +4 -0
  66. package/dist/evm/aeraContracts/readOptions.js.map +1 -0
  67. package/dist/evm/aeraContracts/v2.d.ts +1932 -217
  68. package/dist/evm/aeraContracts/v2.d.ts.map +1 -1
  69. package/dist/evm/aeraContracts/v2.js +84 -28
  70. package/dist/evm/aeraContracts/v2.js.map +1 -1
  71. package/dist/evm/aeraContracts.d.ts +9 -3
  72. package/dist/evm/aeraContracts.d.ts.map +1 -1
  73. package/dist/evm/aeraContracts.js +69 -8
  74. package/dist/evm/aeraContracts.js.map +1 -1
  75. package/dist/evm/deposit.d.ts.map +1 -1
  76. package/dist/evm/deposit.js +1 -1
  77. package/dist/evm/deposit.js.map +1 -1
  78. package/dist/evm/index.d.ts +8 -0
  79. package/dist/evm/index.d.ts.map +1 -1
  80. package/dist/evm/index.js +3 -0
  81. package/dist/evm/index.js.map +1 -1
  82. package/dist/evm/tokenModes.d.ts +22 -0
  83. package/dist/evm/tokenModes.d.ts.map +1 -0
  84. package/dist/evm/tokenModes.js +34 -0
  85. package/dist/evm/tokenModes.js.map +1 -0
  86. package/dist/evm/withdraw.d.ts +8 -0
  87. package/dist/evm/withdraw.d.ts.map +1 -1
  88. package/dist/evm/withdraw.js +85 -5
  89. package/dist/evm/withdraw.js.map +1 -1
  90. package/dist/evm/withdrawQuote.d.ts +127 -0
  91. package/dist/evm/withdrawQuote.d.ts.map +1 -0
  92. package/dist/evm/withdrawQuote.js +164 -0
  93. package/dist/evm/withdrawQuote.js.map +1 -0
  94. package/dist/index.d.ts +8 -1
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +4 -1
  97. package/dist/index.js.map +1 -1
  98. package/dist/privy/index.d.ts +52 -0
  99. package/dist/privy/index.d.ts.map +1 -0
  100. package/dist/privy/index.js +51 -0
  101. package/dist/privy/index.js.map +1 -0
  102. package/manifest/vaults.json +255 -3
  103. package/package.json +2 -2
  104. package/src/api/activity.ts +219 -0
  105. package/src/api/caip.ts +61 -0
  106. package/src/api/client.ts +234 -0
  107. package/src/api/decimal.ts +49 -0
  108. package/src/api/errors.ts +64 -0
  109. package/src/api/generated.ts +1505 -0
  110. package/src/api/http.ts +62 -0
  111. package/src/api/index.ts +70 -0
  112. package/src/api/positionHistory.ts +167 -0
  113. package/src/client.ts +7 -1
  114. package/src/errors.ts +32 -2
  115. package/src/evm/abis/priceAndFeeCalculatorV2.ts +22 -0
  116. package/src/evm/abis/provisionerV2.ts +92 -0
  117. package/src/evm/adapters/aera.ts +50 -23
  118. package/src/evm/adapters/types.ts +2 -0
  119. package/src/evm/aeraContracts/priceAndFeeCalculator.ts +72 -5
  120. package/src/evm/aeraContracts/readOptions.ts +3 -0
  121. package/src/evm/aeraContracts/v2.ts +158 -34
  122. package/src/evm/aeraContracts.ts +81 -8
  123. package/src/evm/deposit.ts +2 -1
  124. package/src/evm/index.ts +32 -0
  125. package/src/evm/tokenModes.ts +54 -0
  126. package/src/evm/withdraw.ts +131 -7
  127. package/src/evm/withdrawQuote.ts +360 -0
  128. package/src/index.ts +18 -0
  129. package/src/privy/index.ts +95 -0
@@ -0,0 +1,1505 @@
1
+ /**
2
+ * This file was auto-generated by openapi-typescript.
3
+ * Do not make direct changes to the file.
4
+ */
5
+
6
+ export interface paths {
7
+ "/health": {
8
+ parameters: {
9
+ query?: never;
10
+ header?: never;
11
+ path?: never;
12
+ cookie?: never;
13
+ };
14
+ /**
15
+ * Liveness check
16
+ * @description Returns service version + uptime. Use `/health/chains` for indexer freshness per chain.
17
+ */
18
+ get: operations["health"];
19
+ put?: never;
20
+ post?: never;
21
+ delete?: never;
22
+ options?: never;
23
+ head?: never;
24
+ patch?: never;
25
+ trace?: never;
26
+ };
27
+ "/health/chains": {
28
+ parameters: {
29
+ query?: never;
30
+ header?: never;
31
+ path?: never;
32
+ cookie?: never;
33
+ };
34
+ /**
35
+ * Chain sync status
36
+ * @description Returns per-chain indexer sync status with freshness indicators.
37
+ */
38
+ get: operations["chain_sync_status"];
39
+ put?: never;
40
+ post?: never;
41
+ delete?: never;
42
+ options?: never;
43
+ head?: never;
44
+ patch?: never;
45
+ trace?: never;
46
+ };
47
+ "/v1/prices": {
48
+ parameters: {
49
+ query?: never;
50
+ header?: never;
51
+ path?: never;
52
+ cookie?: never;
53
+ };
54
+ /**
55
+ * Get latest token price
56
+ * @description Returns the latest USD price for a token. Query parameters: `address` (required), `chain_id` (required), `at` (optional ISO 8601 timestamp).
57
+ */
58
+ get: operations["get_latest_price"];
59
+ put?: never;
60
+ post?: never;
61
+ delete?: never;
62
+ options?: never;
63
+ head?: never;
64
+ patch?: never;
65
+ trace?: never;
66
+ };
67
+ "/v1/prices/timeseries": {
68
+ parameters: {
69
+ query?: never;
70
+ header?: never;
71
+ path?: never;
72
+ cookie?: never;
73
+ };
74
+ /**
75
+ * Get historical token prices
76
+ * @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).
77
+ */
78
+ get: operations["get_price_history"];
79
+ put?: never;
80
+ post?: never;
81
+ delete?: never;
82
+ options?: never;
83
+ head?: never;
84
+ patch?: never;
85
+ trace?: never;
86
+ };
87
+ "/v1/strategies": {
88
+ parameters: {
89
+ query?: never;
90
+ header?: never;
91
+ path?: never;
92
+ cookie?: never;
93
+ };
94
+ /**
95
+ * List curated strategies
96
+ * @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.
97
+ */
98
+ get: operations["list_strategies"];
99
+ put?: never;
100
+ post?: never;
101
+ delete?: never;
102
+ options?: never;
103
+ head?: never;
104
+ patch?: never;
105
+ trace?: never;
106
+ };
107
+ "/v1/tvl": {
108
+ parameters: {
109
+ query?: never;
110
+ header?: never;
111
+ path?: never;
112
+ cookie?: never;
113
+ };
114
+ /**
115
+ * Get live aggregate TVL
116
+ * @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.
117
+ */
118
+ get: operations["get_tvl"];
119
+ put?: never;
120
+ post?: never;
121
+ delete?: never;
122
+ options?: never;
123
+ head?: never;
124
+ patch?: never;
125
+ trace?: never;
126
+ };
127
+ "/v1/users/{wallet_address}/activity": {
128
+ parameters: {
129
+ query?: never;
130
+ header?: never;
131
+ path?: never;
132
+ cookie?: never;
133
+ };
134
+ /**
135
+ * Get user wallet activity (deposits, withdrawals, transfers)
136
+ * @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.
137
+ *
138
+ * `?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.
139
+ *
140
+ * 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.
141
+ *
142
+ * Pagination is cursor-only. Default order is `desc` (newest first). Default page size 100, max 1000.
143
+ */
144
+ get: operations["get_user_activity"];
145
+ put?: never;
146
+ post?: never;
147
+ delete?: never;
148
+ options?: never;
149
+ head?: never;
150
+ patch?: never;
151
+ trace?: never;
152
+ };
153
+ "/v1/users/{wallet_address}/positions": {
154
+ parameters: {
155
+ query?: never;
156
+ header?: never;
157
+ path?: never;
158
+ cookie?: never;
159
+ };
160
+ /**
161
+ * Get all current positions for a wallet
162
+ * @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.
163
+ *
164
+ * 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.
165
+ *
166
+ * Cursor-paginated on internal position ID. Default page size 100, max 500.
167
+ */
168
+ get: operations["get_user_all_positions"];
169
+ put?: never;
170
+ post?: never;
171
+ delete?: never;
172
+ options?: never;
173
+ head?: never;
174
+ patch?: never;
175
+ trace?: never;
176
+ };
177
+ "/v1/users/{wallet_address}/positions/{vault_id}": {
178
+ parameters: {
179
+ query?: never;
180
+ header?: never;
181
+ path?: never;
182
+ cookie?: never;
183
+ };
184
+ /**
185
+ * Get user position in a specific vault
186
+ * @description Returns the current position snapshot for a wallet in a single vault. Historical points live on `/positions/{vault_id}/timeseries`.
187
+ */
188
+ get: operations["get_user_vault_position"];
189
+ put?: never;
190
+ post?: never;
191
+ delete?: never;
192
+ options?: never;
193
+ head?: never;
194
+ patch?: never;
195
+ trace?: never;
196
+ };
197
+ "/v1/users/{wallet_address}/positions/{vault_id}/timeseries": {
198
+ parameters: {
199
+ query?: never;
200
+ header?: never;
201
+ path?: never;
202
+ cookie?: never;
203
+ };
204
+ /**
205
+ * Get user position timeseries for a specific vault
206
+ * @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.
207
+ */
208
+ get: operations["get_user_vault_position_timeseries"];
209
+ put?: never;
210
+ post?: never;
211
+ delete?: never;
212
+ options?: never;
213
+ head?: never;
214
+ patch?: never;
215
+ trace?: never;
216
+ };
217
+ "/v1/vaults": {
218
+ parameters: {
219
+ query?: never;
220
+ header?: never;
221
+ path?: never;
222
+ cookie?: never;
223
+ };
224
+ /**
225
+ * List Gauntlet-curated vaults
226
+ * @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.
227
+ *
228
+ * 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.
229
+ */
230
+ get: operations["list_vaults"];
231
+ put?: never;
232
+ post?: never;
233
+ delete?: never;
234
+ options?: never;
235
+ head?: never;
236
+ patch?: never;
237
+ trace?: never;
238
+ };
239
+ "/v1/vaults/{vault_id}": {
240
+ parameters: {
241
+ query?: never;
242
+ header?: never;
243
+ path?: never;
244
+ cookie?: never;
245
+ };
246
+ /**
247
+ * Get current vault metrics
248
+ * @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`.
249
+ */
250
+ get: operations["get_vault"];
251
+ put?: never;
252
+ post?: never;
253
+ delete?: never;
254
+ options?: never;
255
+ head?: never;
256
+ patch?: never;
257
+ trace?: never;
258
+ };
259
+ "/v1/vaults/{vault_id}/definition": {
260
+ parameters: {
261
+ query?: never;
262
+ header?: never;
263
+ path?: never;
264
+ cookie?: never;
265
+ };
266
+ /**
267
+ * Get vault definition
268
+ * @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.
269
+ */
270
+ get: operations["get_vault_definition"];
271
+ put?: never;
272
+ post?: never;
273
+ delete?: never;
274
+ options?: never;
275
+ head?: never;
276
+ patch?: never;
277
+ trace?: never;
278
+ };
279
+ "/v1/vaults/{vault_id}/timeseries": {
280
+ parameters: {
281
+ query?: never;
282
+ header?: never;
283
+ path?: never;
284
+ cookie?: never;
285
+ };
286
+ /**
287
+ * Get vault timeseries data
288
+ * @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.
289
+ */
290
+ get: operations["get_vault_timeseries"];
291
+ put?: never;
292
+ post?: never;
293
+ delete?: never;
294
+ options?: never;
295
+ head?: never;
296
+ patch?: never;
297
+ trace?: never;
298
+ };
299
+ "/v1/vaults/featured": {
300
+ parameters: {
301
+ query?: never;
302
+ header?: never;
303
+ path?: never;
304
+ cookie?: never;
305
+ };
306
+ /**
307
+ * List featured vaults
308
+ * @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`.
309
+ */
310
+ get: operations["list_featured_vaults"];
311
+ put?: never;
312
+ post?: never;
313
+ delete?: never;
314
+ options?: never;
315
+ head?: never;
316
+ patch?: never;
317
+ trace?: never;
318
+ };
319
+ }
320
+ export type webhooks = Record<string, never>;
321
+ export interface components {
322
+ schemas: {
323
+ /**
324
+ * @description Decimal-string metric paired across native (numeraire-token) and USD.
325
+ * `native` is always present; `usd` is JSON null when pricing is unavailable.
326
+ */
327
+ AmountPair: {
328
+ native: string;
329
+ usd?: string | null;
330
+ };
331
+ /**
332
+ * @description Asset-delta envelope on user activity rows. `native` is always present;
333
+ * `token` is present when the indexer knows the row's asset token.
334
+ * The struct shape is kept stable so derived denominations (usd,
335
+ * numeraire token) can be added later without breaking integrators.
336
+ */
337
+ AssetDelta: {
338
+ native: string;
339
+ token?: null | components["schemas"]["TokenRef"];
340
+ };
341
+ BasicMeta: {
342
+ /** Format: date-time */
343
+ refreshed_at: string;
344
+ request_id: string;
345
+ };
346
+ ChainSyncStatus: {
347
+ /** Format: int64 */
348
+ chain_id: number;
349
+ freshness: string;
350
+ /** Format: int64 */
351
+ lag_seconds: number;
352
+ /** Format: int64 */
353
+ latest_block: number;
354
+ /** Format: int64 */
355
+ latest_timestamp: number;
356
+ };
357
+ /**
358
+ * @description USD amount on curated aggregates: decimal string, `null` when the
359
+ * pricing service is not configured.
360
+ */
361
+ CuratedTvl: {
362
+ usd?: string | null;
363
+ };
364
+ ErrorBody: {
365
+ /** @description Machine-readable error code (e.g. `NOT_FOUND`, `UNAUTHORIZED`) */
366
+ code: string;
367
+ details?: unknown;
368
+ /** @description Human-readable error message */
369
+ message: string;
370
+ };
371
+ /** @description Standard error response envelope returned on 4xx/5xx */
372
+ ErrorResponse: {
373
+ error: components["schemas"]["ErrorBody"];
374
+ };
375
+ FeaturedVault: {
376
+ /**
377
+ * Format: double
378
+ * @description Highest 7-day APY across the vault's deployments, fraction
379
+ * (0.0573 = 5.73%). `null` while every window is warming up.
380
+ */
381
+ apy_7d_max?: number | null;
382
+ /**
383
+ * Format: double
384
+ * @description Highest 30-day APY across the vault's deployments.
385
+ */
386
+ apy_30d_max?: number | null;
387
+ /**
388
+ * Format: double
389
+ * @description Highest 90-day APY across the vault's deployments.
390
+ */
391
+ apy_90d_max?: number | null;
392
+ /** @description Chain slugs the vault is deployed on, highest-TVL first. */
393
+ chains: string[];
394
+ /**
395
+ * @description Curated marketing description; `null` when the curator hasn't
396
+ * written one.
397
+ */
398
+ description?: string | null;
399
+ /**
400
+ * @description Curated display name; falls back to the registry id when the
401
+ * curator hasn't named the vault yet. `vault_id` carries the
402
+ * stable logical identifier.
403
+ */
404
+ name: string;
405
+ /**
406
+ * @description Card-length copy (e.g. "Conservative lending yield with low
407
+ * risk"). `null` when the curator hasn't written any; consumers
408
+ * decide whether to fall back to `description`.
409
+ */
410
+ short_description?: string | null;
411
+ /** @description Stable public route for the logical vault group. */
412
+ slug: string;
413
+ /**
414
+ * @description Supply (numeraire) token symbol, from the highest-TVL deployment
415
+ * that reports one.
416
+ */
417
+ supply_token?: string | null;
418
+ /** @description Aggregate TVL across the vault's deployments ("Total Supply"). */
419
+ tvl: components["schemas"]["CuratedTvl"];
420
+ /**
421
+ * Format: date-time
422
+ * @description Most recent indexer snapshot among the vault's deployments;
423
+ * `null` when no deployment carried a usable timestamp.
424
+ */
425
+ updated_at?: string | null;
426
+ /** @description Stable logical vault id assigned by Admin. */
427
+ vault_id: string;
428
+ /**
429
+ * @description Per-deployment API vault ids (`{chainId}:{address}`, same order
430
+ * as `chains`) for `/v1/vaults/{vault_id}` links.
431
+ */
432
+ vault_ids: string[];
433
+ };
434
+ FeaturedVaultsResponse: {
435
+ data: components["schemas"]["FeaturedVault"][];
436
+ meta: components["schemas"]["ListMeta"];
437
+ };
438
+ HealthResponse: {
439
+ status: string;
440
+ /** Format: int64 */
441
+ uptime_seconds: number;
442
+ version: string;
443
+ };
444
+ HistoricalPriceValue: {
445
+ /** Format: double */
446
+ usd: number;
447
+ };
448
+ LatestPriceResponse: {
449
+ address: string;
450
+ /** Format: int64 */
451
+ chain_id: number;
452
+ currency: string;
453
+ price: components["schemas"]["PriceValue"];
454
+ symbol: string;
455
+ timestamp: string;
456
+ };
457
+ /**
458
+ * @description Documented metadata for list endpoints; pagination fields are omitted
459
+ * by unpaginated responses.
460
+ */
461
+ ListMeta: {
462
+ /**
463
+ * Format: int64
464
+ * @description Number of items in this response.
465
+ */
466
+ count: number;
467
+ /**
468
+ * Format: int64
469
+ * @description Page-size cap actually applied to paginated lists.
470
+ */
471
+ limit?: number | null;
472
+ /** @description Set when more pages exist; pass back as `?next=`. */
473
+ next_cursor?: string | null;
474
+ /** @description Item-scoped failures isolated from an aggregate response. */
475
+ partial_errors?: components["schemas"]["PartialResponseError"][] | null;
476
+ /** Format: date-time */
477
+ refreshed_at: string;
478
+ request_id: string;
479
+ };
480
+ PartialResponseError: {
481
+ /** @description Machine-readable error code for the isolated item failure. */
482
+ code: string;
483
+ /** @description Human-readable error message. */
484
+ message: string;
485
+ /** @description Resource that failed inside the aggregate response, when known. */
486
+ resource_id?: string | null;
487
+ };
488
+ PnlBreakdown: {
489
+ /** @description Locked-in PnL from past disposals. */
490
+ realized: components["schemas"]["AmountPair"];
491
+ /** @description `unrealized` + `realized`. */
492
+ total: components["schemas"]["AmountPair"];
493
+ /** @description `value` − `cost_basis`. */
494
+ unrealized: components["schemas"]["AmountPair"];
495
+ };
496
+ PositionTimeseriesPoint: {
497
+ /** @description Cumulative cost of held shares (`usd` uses per-event historical pricing). */
498
+ cost_basis: components["schemas"]["AmountPair"];
499
+ /** @description Profit and loss grouped by total, unrealized, and realized values. */
500
+ pnl: components["schemas"]["PnlBreakdown"];
501
+ /** @description ROI ratio (`native` is in-kind; `usd` is null when pricing unavailable). */
502
+ roi_pct: components["schemas"]["RatioPair"];
503
+ /** @description Shares currently held by the wallet at this timestamp. */
504
+ shares_owned: string;
505
+ /** Format: date-time */
506
+ timestamp: string;
507
+ /**
508
+ * @description Position value at this timestamp (`native` = numeraire-token units,
509
+ * `usd` = `native` × historical USD price; null when unavailable).
510
+ */
511
+ value: components["schemas"]["AmountPair"];
512
+ };
513
+ PriceValue: {
514
+ /** Format: int32 */
515
+ decimals: number;
516
+ /** Format: double */
517
+ usd: number;
518
+ };
519
+ /**
520
+ * @description JSON-number ratio paired across native (in-kind) and USD denominations.
521
+ * Null when event history is unavailable or cannot support ROI replay.
522
+ */
523
+ RatioPair: {
524
+ /** Format: double */
525
+ native?: number | null;
526
+ /** Format: double */
527
+ usd?: number | null;
528
+ };
529
+ StrategyCard: {
530
+ /**
531
+ * Format: double
532
+ * @description Highest 7-day APY across the strategy's vaults ("APY Up To"),
533
+ * fraction (0.0953 = 9.53%). `null` while every vault's window is
534
+ * still warming up.
535
+ */
536
+ apy_7d_max?: number | null;
537
+ /**
538
+ * Format: double
539
+ * @description Highest 30-day APY across the strategy's vaults.
540
+ */
541
+ apy_30d_max?: number | null;
542
+ /**
543
+ * Format: double
544
+ * @description Highest 90-day APY across the strategy's vaults.
545
+ */
546
+ apy_90d_max?: number | null;
547
+ /** @description Marketing description of the strategy. */
548
+ description?: string | null;
549
+ /**
550
+ * @description Strategy identifier from the admin vocabulary (e.g. `earn`,
551
+ * `prime_lending`).
552
+ */
553
+ id: string;
554
+ /** @description Display name (e.g. "Prime Lending"). */
555
+ name: string;
556
+ /**
557
+ * @description Card-length copy (e.g. "Conservative lending yield with low
558
+ * risk"). `null` when the curator hasn't written any; consumers
559
+ * decide whether to fall back to `description`.
560
+ */
561
+ short_description?: string | null;
562
+ /**
563
+ * @description Aggregate TVL across the strategy's priced vaults ("Total
564
+ * Supply"). Vaults whose numeraire has no USD price are left out of
565
+ * the sum but still count toward `vault_count` and the APY maxes.
566
+ */
567
+ tvl: components["schemas"]["CuratedTvl"];
568
+ /**
569
+ * Format: date-time
570
+ * @description Most recent indexer snapshot among the strategy's vaults; `null`
571
+ * in the degenerate case where no matched row carried a timestamp.
572
+ */
573
+ updated_at?: string | null;
574
+ /**
575
+ * Format: int64
576
+ * @description Visible curated vaults in this strategy that matched at least one
577
+ * indexed deployment.
578
+ */
579
+ vault_count: number;
580
+ };
581
+ StrategyListResponse: {
582
+ data: components["schemas"]["StrategyCard"][];
583
+ meta: components["schemas"]["ListMeta"];
584
+ };
585
+ /** @description Curated strategy assignment from the admin registry. */
586
+ StrategyRef: {
587
+ /**
588
+ * @description Strategy label id (`prime_lending`, `earn`, …) — matches
589
+ * `/v1/strategies` card ids.
590
+ */
591
+ id: string;
592
+ /** @description Display name (`Prime Lending`). */
593
+ name: string;
594
+ };
595
+ TimeseriesMeta: {
596
+ /**
597
+ * Format: int64
598
+ * @description Number of points in this response.
599
+ */
600
+ count: number;
601
+ /** Format: date-time */
602
+ end?: string | null;
603
+ /**
604
+ * Format: int64
605
+ * @description Page-size cap actually applied.
606
+ */
607
+ limit: number;
608
+ /** @description Set when more pages exist; pass back as `?next=`. */
609
+ next_cursor?: string | null;
610
+ /** @description Item-scoped failures isolated from an aggregate response. */
611
+ partial_errors?: components["schemas"]["PartialResponseError"][] | null;
612
+ /** Format: date-time */
613
+ refreshed_at: string;
614
+ request_id: string;
615
+ /**
616
+ * Format: date-time
617
+ * @description Window bounds the response covers (echoes the request when set).
618
+ */
619
+ start?: string | null;
620
+ };
621
+ TimeseriesPoint: {
622
+ price: components["schemas"]["HistoricalPriceValue"];
623
+ timestamp: string;
624
+ };
625
+ TimeseriesResponse: {
626
+ data: components["schemas"]["TimeseriesPoint"][];
627
+ };
628
+ TokenRef: {
629
+ address: string;
630
+ /** Format: int32 */
631
+ decimals?: number | null;
632
+ symbol?: string | null;
633
+ };
634
+ TvlAmount: {
635
+ usd: string;
636
+ };
637
+ TvlBreakdown: {
638
+ id: string;
639
+ label: string;
640
+ source_id: string;
641
+ tvl: components["schemas"]["TvlAmount"];
642
+ /** Format: date-time */
643
+ updated_at: string;
644
+ };
645
+ TvlResponse: {
646
+ data: components["schemas"]["TvlSummary"];
647
+ meta: components["schemas"]["BasicMeta"];
648
+ };
649
+ TvlSummary: {
650
+ breakdown?: components["schemas"]["TvlBreakdown"][] | null;
651
+ totals: components["schemas"]["TvlTotal"][];
652
+ tvl: components["schemas"]["TvlAmount"];
653
+ /** Format: date-time */
654
+ updated_at: string;
655
+ };
656
+ TvlTotal: {
657
+ id: string;
658
+ label: string;
659
+ tvl: components["schemas"]["TvlAmount"];
660
+ /** Format: date-time */
661
+ updated_at: string;
662
+ };
663
+ /**
664
+ * @description One immutable entry in the wallet's activity log.
665
+ *
666
+ * Each row represents a single on-chain event that affected the
667
+ * wallet's vault position. Async deposit/redeem lifecycles emit
668
+ * multiple rows (one per lifecycle event — request, solve, refund);
669
+ * each row is frozen at emission time and never mutates. To follow
670
+ * an async action across rows, correlate via `request_hash`.
671
+ */
672
+ UserActivity: {
673
+ /**
674
+ * @description Signed asset delta in the row's asset-token units, using a
675
+ * deposit-ledger sign convention (NOT wallet-flow direction):
676
+ * - Positive = a deposit-direction action (`deposit`,
677
+ * `deposit_pending`, `transfer_in`).
678
+ * - Negative = a withdraw-direction action (`withdraw`,
679
+ * `deposit_refunded`, `transfer_out`).
680
+ * - `0` = no asset movement at this event
681
+ * (`deposit` on Aera async solve, `withdraw_pending`,
682
+ * `withdraw_refunded`).
683
+ *
684
+ * Note: under this convention `deposit_refunded` is negative
685
+ * (a deposit was unwound) even though tokens flow back INTO the
686
+ * wallet, and async `withdraw` (Aera redeem_solved) is negative
687
+ * even though tokens flow back INTO the wallet — the sign tracks
688
+ * the deposit-ledger direction, not the user's wallet balance.
689
+ *
690
+ * Summing across rows for a single async lifecycle gives the net
691
+ * signed asset movement of that lifecycle (no double-counting).
692
+ * `assets_delta.token` identifies the asset token when known. Emitted
693
+ * as a struct (`{ native: "...", token: { address, symbol } }`) so
694
+ * derived denominations (e.g. usd) can be added later without breaking
695
+ * the response shape.
696
+ */
697
+ assets_delta: components["schemas"]["AssetDelta"];
698
+ /**
699
+ * @description Block hash — 1:1 identifier for the block this event was mined
700
+ * in. Consumers needing to detect reorgs should key off this rather
701
+ * than `block_number` (multiple blocks can share a number across a
702
+ * reorg).
703
+ */
704
+ block_hash: string;
705
+ /**
706
+ * Format: int64
707
+ * @description Block number — kept alongside `block_timestamp` for on-chain
708
+ * reconciliation / explorer linking.
709
+ */
710
+ block_number: number;
711
+ /**
712
+ * Format: int64
713
+ * @description Unix seconds, block time (`block.timestamp` from the chain).
714
+ */
715
+ block_timestamp: number;
716
+ /**
717
+ * @description Aera async-flow correlation hash. Links a `*_pending` row to
718
+ * its later terminal row (bare `deposit`/`withdraw` for settled,
719
+ * or `*_refunded`) of the same lifecycle. Emitted only on rows
720
+ * that participate in an async flow; omitted on sync rows and on
721
+ * secondary-market transfers.
722
+ */
723
+ request_hash?: string | null;
724
+ /**
725
+ * @description Signed share delta in 18-decimal units, reported at the event
726
+ * where the shares actually moved. Conventions by row type:
727
+ * - `deposit` — positive (shares minted to the wallet).
728
+ * - `deposit_pending` / `deposit_refunded` — `0` (no share
729
+ * movement; deposit requests touch assets only).
730
+ * - `withdraw_pending` — negative for Aera async redeems (shares
731
+ * leave the wallet at request time, escrowed to the Provisioner).
732
+ * - `withdraw` — negative for sync (Morpho) withdraws (shares
733
+ * burn on the same row that pays out assets); `0` for Aera
734
+ * async redeems (the share movement is recorded on the paired
735
+ * `withdraw_pending` row).
736
+ * - `withdraw_refunded` — positive (escrowed shares return).
737
+ * - `transfer_in` — positive; `transfer_out` — negative.
738
+ *
739
+ * Summing across rows for a single async lifecycle gives the net
740
+ * share movement of that lifecycle — there is no double-counting.
741
+ */
742
+ shares_delta: string;
743
+ /** @description Transaction hash of the on-chain event. */
744
+ tx_hash: string;
745
+ /**
746
+ * @description What happened. One of:
747
+ * - `deposit` — settled deposit (sync vault flow or async terminal solve).
748
+ * - `deposit_pending` — async deposit request submitted; awaiting solver.
749
+ * - `deposit_refunded` — async deposit returned without settling; assets bounced back.
750
+ * - `withdraw` — settled withdrawal (sync vault flow or async terminal solve).
751
+ * - `withdraw_pending` — async redeem request submitted; awaiting solver.
752
+ * - `withdraw_refunded` — async redeem returned without settling; shares bounced back.
753
+ * - `transfer_in` — vault shares received from another EOA (secondary market).
754
+ * - `transfer_out` — vault shares sent to another EOA.
755
+ *
756
+ * Async deposit/redeem lifecycles emit two rows (a `*_pending` at
757
+ * request time, then a separate terminal row — bare `deposit` or
758
+ * `_refunded` — at solve time). Rows are immutable; the pending
759
+ * row never mutates. Correlate the pair via `request_hash`.
760
+ */
761
+ type: string;
762
+ /** @description CAIP-10 vault identifier this row belongs to. Always emitted. */
763
+ vault_id: string;
764
+ };
765
+ UserActivityResponse: {
766
+ data: components["schemas"]["UserActivity"][];
767
+ meta: components["schemas"]["TimeseriesMeta"];
768
+ };
769
+ UserAllPositionsResponse: {
770
+ data: components["schemas"]["UserPosition"][];
771
+ meta: components["schemas"]["TimeseriesMeta"];
772
+ };
773
+ UserPosition: {
774
+ metrics: components["schemas"]["UserPositionMetrics"];
775
+ numeraire_token?: null | components["schemas"]["TokenRef"];
776
+ vault_id: string;
777
+ wallet_address: string;
778
+ };
779
+ UserPositionLatestResponse: {
780
+ data: components["schemas"]["UserPosition"];
781
+ meta: components["schemas"]["BasicMeta"];
782
+ };
783
+ UserPositionMetrics: {
784
+ /** @description Cumulative cost of currently-held shares. */
785
+ cost_basis: components["schemas"]["AmountPair"];
786
+ /**
787
+ * @description Assets escrowed at the Aera Provisioner pending share mint
788
+ * (`native` = numeraire-token units, `usd` = `native` × current USD price).
789
+ */
790
+ pending_deposit_assets: components["schemas"]["AmountPair"];
791
+ /** @description Shares escrowed at the Aera Provisioner pending asset return. */
792
+ pending_redeem_shares: string;
793
+ /** @description Profit and loss grouped by total, unrealized, and realized values. */
794
+ pnl: components["schemas"]["PnlBreakdown"];
795
+ /** @description Time-weighted ROI from user deposit/redeem history. */
796
+ roi_pct: components["schemas"]["RatioPair"];
797
+ /** @description Shares currently held by the wallet. */
798
+ shares_owned: string;
799
+ /**
800
+ * @description Current market value of held shares (`native` = numeraire-token
801
+ * units, `usd` = `native` × current USD price).
802
+ */
803
+ value: components["schemas"]["AmountPair"];
804
+ };
805
+ UserPositionsTimeseriesResponse: {
806
+ data: components["schemas"]["PositionTimeseriesPoint"][];
807
+ meta: components["schemas"]["TimeseriesMeta"];
808
+ };
809
+ VaultDetail: {
810
+ address: string;
811
+ /** Format: int64 */
812
+ chain_id: number;
813
+ group?: null | components["schemas"]["VaultGroupRef"];
814
+ metrics: components["schemas"]["VaultMetrics"];
815
+ name: string;
816
+ numeraire_token: components["schemas"]["TokenRef"];
817
+ strategy?: null | components["schemas"]["StrategyRef"];
818
+ symbol: string;
819
+ vault_id: string;
820
+ vault_type: string;
821
+ };
822
+ VaultDetailResponse: {
823
+ data: components["schemas"]["VaultDetail"];
824
+ meta: components["schemas"]["BasicMeta"];
825
+ };
826
+ /** @description Admin-curated logical grouping for a deployment-level vault row. */
827
+ VaultGroupRef: {
828
+ /** @description Admin-curated deployment date (`YYYY-MM-DD`). */
829
+ deployment_date?: string | null;
830
+ /** @description Admin-curated long-form detail-page copy. */
831
+ description?: string | null;
832
+ /** @description Stable internal group id from the Admin vault registry (`vlt_176`). */
833
+ id: string;
834
+ /** @description Whether this deployment is the group's primary representative. */
835
+ is_primary: boolean;
836
+ /** @description Whether performance views should use a stable-denominated basis. */
837
+ is_stable: boolean;
838
+ /** @description Unique, curator-managed public route (`stgusda`). */
839
+ slug: string;
840
+ };
841
+ VaultListResponse: {
842
+ data: components["schemas"]["VaultDetail"][];
843
+ meta: components["schemas"]["ListMeta"];
844
+ };
845
+ VaultMetrics: {
846
+ /** Format: double */
847
+ apy_7d?: number | null;
848
+ /** Format: double */
849
+ apy_30d?: number | null;
850
+ /** Format: double */
851
+ apy_90d?: number | null;
852
+ /** Format: int64 */
853
+ as_of?: number | null;
854
+ total_supply: string;
855
+ tvl: components["schemas"]["AmountPair"];
856
+ unit_price: string;
857
+ };
858
+ VaultTimeseriesPoint: {
859
+ /** Format: double */
860
+ apy_7d?: number | null;
861
+ /** Format: double */
862
+ apy_30d?: number | null;
863
+ /** Format: double */
864
+ apy_90d?: number | null;
865
+ /** Format: date-time */
866
+ timestamp: string;
867
+ total_supply: string;
868
+ tvl: components["schemas"]["AmountPair"];
869
+ unit_price: string;
870
+ };
871
+ VaultTimeseriesResponse: {
872
+ data: components["schemas"]["VaultTimeseriesPoint"][];
873
+ meta: components["schemas"]["TimeseriesMeta"];
874
+ };
875
+ };
876
+ responses: never;
877
+ parameters: never;
878
+ requestBodies: never;
879
+ headers: never;
880
+ pathItems: never;
881
+ }
882
+ export type $defs = Record<string, never>;
883
+ export interface operations {
884
+ health: {
885
+ parameters: {
886
+ query?: never;
887
+ header?: never;
888
+ path?: never;
889
+ cookie?: never;
890
+ };
891
+ requestBody?: never;
892
+ responses: {
893
+ /** @description Service is live */
894
+ 200: {
895
+ headers: {
896
+ [name: string]: unknown;
897
+ };
898
+ content: {
899
+ "application/json": components["schemas"]["HealthResponse"];
900
+ };
901
+ };
902
+ };
903
+ };
904
+ chain_sync_status: {
905
+ parameters: {
906
+ query?: never;
907
+ header?: never;
908
+ path?: never;
909
+ cookie?: never;
910
+ };
911
+ requestBody?: never;
912
+ responses: {
913
+ /** @description Chain sync status */
914
+ 200: {
915
+ headers: {
916
+ [name: string]: unknown;
917
+ };
918
+ content: {
919
+ "application/json": components["schemas"]["ChainSyncStatus"][];
920
+ };
921
+ };
922
+ };
923
+ };
924
+ get_latest_price: {
925
+ parameters: {
926
+ query?: never;
927
+ header?: never;
928
+ path?: never;
929
+ cookie?: never;
930
+ };
931
+ requestBody?: never;
932
+ responses: {
933
+ /** @description Token price */
934
+ 200: {
935
+ headers: {
936
+ [name: string]: unknown;
937
+ };
938
+ content: {
939
+ "application/json": components["schemas"]["LatestPriceResponse"];
940
+ };
941
+ };
942
+ /** @description Token not found */
943
+ 404: {
944
+ headers: {
945
+ [name: string]: unknown;
946
+ };
947
+ content?: never;
948
+ };
949
+ /** @description Invalid parameters */
950
+ 422: {
951
+ headers: {
952
+ [name: string]: unknown;
953
+ };
954
+ content?: never;
955
+ };
956
+ /** @description Pricing service not configured */
957
+ 503: {
958
+ headers: {
959
+ [name: string]: unknown;
960
+ };
961
+ content?: never;
962
+ };
963
+ };
964
+ };
965
+ get_price_history: {
966
+ parameters: {
967
+ query?: never;
968
+ header?: never;
969
+ path?: never;
970
+ cookie?: never;
971
+ };
972
+ requestBody?: never;
973
+ responses: {
974
+ /** @description Price timeseries */
975
+ 200: {
976
+ headers: {
977
+ [name: string]: unknown;
978
+ };
979
+ content: {
980
+ "application/json": components["schemas"]["TimeseriesResponse"];
981
+ };
982
+ };
983
+ /** @description Invalid parameters */
984
+ 422: {
985
+ headers: {
986
+ [name: string]: unknown;
987
+ };
988
+ content?: never;
989
+ };
990
+ /** @description Pricing service not configured */
991
+ 503: {
992
+ headers: {
993
+ [name: string]: unknown;
994
+ };
995
+ content?: never;
996
+ };
997
+ };
998
+ };
999
+ list_strategies: {
1000
+ parameters: {
1001
+ query?: never;
1002
+ header?: never;
1003
+ path?: never;
1004
+ cookie?: never;
1005
+ };
1006
+ requestBody?: never;
1007
+ responses: {
1008
+ /** @description List of strategy cards */
1009
+ 200: {
1010
+ headers: {
1011
+ [name: string]: unknown;
1012
+ };
1013
+ content: {
1014
+ "application/json": components["schemas"]["StrategyListResponse"];
1015
+ };
1016
+ };
1017
+ /** @description Missing or invalid auth */
1018
+ 401: {
1019
+ headers: {
1020
+ [name: string]: unknown;
1021
+ };
1022
+ content: {
1023
+ "application/json": components["schemas"]["ErrorResponse"];
1024
+ };
1025
+ };
1026
+ /** @description Data source unavailable */
1027
+ 503: {
1028
+ headers: {
1029
+ [name: string]: unknown;
1030
+ };
1031
+ content: {
1032
+ "application/json": components["schemas"]["ErrorResponse"];
1033
+ };
1034
+ };
1035
+ };
1036
+ };
1037
+ get_tvl: {
1038
+ parameters: {
1039
+ query?: {
1040
+ /** @description Include chain and external-source TVL breakdown rows. */
1041
+ include_breakdown?: boolean;
1042
+ /** @description Deprecated alias for include_breakdown. */
1043
+ include_sources?: boolean;
1044
+ };
1045
+ header?: never;
1046
+ path?: never;
1047
+ cookie?: never;
1048
+ };
1049
+ requestBody?: never;
1050
+ responses: {
1051
+ /** @description Live aggregate TVL */
1052
+ 200: {
1053
+ headers: {
1054
+ [name: string]: unknown;
1055
+ };
1056
+ content: {
1057
+ "application/json": components["schemas"]["TvlResponse"];
1058
+ };
1059
+ };
1060
+ /** @description Missing or invalid auth */
1061
+ 401: {
1062
+ headers: {
1063
+ [name: string]: unknown;
1064
+ };
1065
+ content: {
1066
+ "application/json": components["schemas"]["ErrorResponse"];
1067
+ };
1068
+ };
1069
+ /** @description Data source unavailable */
1070
+ 503: {
1071
+ headers: {
1072
+ [name: string]: unknown;
1073
+ };
1074
+ content: {
1075
+ "application/json": components["schemas"]["ErrorResponse"];
1076
+ };
1077
+ };
1078
+ };
1079
+ };
1080
+ get_user_activity: {
1081
+ parameters: {
1082
+ query?: {
1083
+ /** @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. */
1084
+ include_hidden?: boolean;
1085
+ /** @description Page size (1–1000, default 100). */
1086
+ limit?: number;
1087
+ /** @description Opaque cursor from previous `meta.next_cursor`. */
1088
+ next?: string;
1089
+ /** @description Sort direction: `desc` (default) or `asc`. */
1090
+ order?: string;
1091
+ /** @description CAIP-10 vault identifier. Optional — omit for wallet-wide activity across every vault the wallet has touched. */
1092
+ vault_id?: string;
1093
+ };
1094
+ header?: never;
1095
+ path: {
1096
+ /** @description Ethereum wallet address */
1097
+ wallet_address: string;
1098
+ };
1099
+ cookie?: never;
1100
+ };
1101
+ requestBody?: never;
1102
+ responses: {
1103
+ /** @description User wallet activity */
1104
+ 200: {
1105
+ headers: {
1106
+ [name: string]: unknown;
1107
+ };
1108
+ content: {
1109
+ "application/json": components["schemas"]["UserActivityResponse"];
1110
+ };
1111
+ };
1112
+ /** @description Missing or invalid auth */
1113
+ 401: {
1114
+ headers: {
1115
+ [name: string]: unknown;
1116
+ };
1117
+ content: {
1118
+ "application/json": components["schemas"]["ErrorResponse"];
1119
+ };
1120
+ };
1121
+ /** @description Invalid cursor */
1122
+ 422: {
1123
+ headers: {
1124
+ [name: string]: unknown;
1125
+ };
1126
+ content: {
1127
+ "application/json": components["schemas"]["ErrorResponse"];
1128
+ };
1129
+ };
1130
+ };
1131
+ };
1132
+ get_user_all_positions: {
1133
+ parameters: {
1134
+ query?: {
1135
+ /** @description Include positions in hidden (enabled but unlisted) vaults alongside visible ones. Positions in disabled vaults are never returned. */
1136
+ include_hidden?: boolean;
1137
+ /** @description Page size (1–500, default 100). */
1138
+ limit?: number;
1139
+ /** @description Opaque cursor from previous `meta.next_cursor`. */
1140
+ next?: string;
1141
+ };
1142
+ header?: never;
1143
+ path: {
1144
+ /** @description Ethereum wallet address */
1145
+ wallet_address: string;
1146
+ };
1147
+ cookie?: never;
1148
+ };
1149
+ requestBody?: never;
1150
+ responses: {
1151
+ /** @description All wallet positions */
1152
+ 200: {
1153
+ headers: {
1154
+ [name: string]: unknown;
1155
+ };
1156
+ content: {
1157
+ "application/json": components["schemas"]["UserAllPositionsResponse"];
1158
+ };
1159
+ };
1160
+ /** @description Missing or invalid auth */
1161
+ 401: {
1162
+ headers: {
1163
+ [name: string]: unknown;
1164
+ };
1165
+ content: {
1166
+ "application/json": components["schemas"]["ErrorResponse"];
1167
+ };
1168
+ };
1169
+ /** @description Invalid cursor */
1170
+ 422: {
1171
+ headers: {
1172
+ [name: string]: unknown;
1173
+ };
1174
+ content: {
1175
+ "application/json": components["schemas"]["ErrorResponse"];
1176
+ };
1177
+ };
1178
+ };
1179
+ };
1180
+ get_user_vault_position: {
1181
+ parameters: {
1182
+ query?: never;
1183
+ header?: never;
1184
+ path: {
1185
+ /** @description Vault identifier */
1186
+ vault_id: string;
1187
+ /** @description Ethereum wallet address */
1188
+ wallet_address: string;
1189
+ };
1190
+ cookie?: never;
1191
+ };
1192
+ requestBody?: never;
1193
+ responses: {
1194
+ /** @description Single vault position */
1195
+ 200: {
1196
+ headers: {
1197
+ [name: string]: unknown;
1198
+ };
1199
+ content: {
1200
+ "application/json": components["schemas"]["UserPositionLatestResponse"];
1201
+ };
1202
+ };
1203
+ /** @description Missing or invalid auth */
1204
+ 401: {
1205
+ headers: {
1206
+ [name: string]: unknown;
1207
+ };
1208
+ content: {
1209
+ "application/json": components["schemas"]["ErrorResponse"];
1210
+ };
1211
+ };
1212
+ /** @description Position not found */
1213
+ 404: {
1214
+ headers: {
1215
+ [name: string]: unknown;
1216
+ };
1217
+ content: {
1218
+ "application/json": components["schemas"]["ErrorResponse"];
1219
+ };
1220
+ };
1221
+ };
1222
+ };
1223
+ get_user_vault_position_timeseries: {
1224
+ parameters: {
1225
+ query?: {
1226
+ /** @description Window end: ISO 8601 date (`2026-01-01`, read as 00:00:00 UTC) or RFC 3339 timestamp (`2026-01-01T00:00:00Z`). */
1227
+ end?: string;
1228
+ /** @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. */
1229
+ granularity?: string;
1230
+ /** @description Page size (1–10000, default 1000). */
1231
+ limit?: number;
1232
+ /** @description Opaque cursor from previous `meta.next_cursor`. */
1233
+ next?: string;
1234
+ /** @description Sort direction: `asc` (default) or `desc`. */
1235
+ order?: string;
1236
+ /** @description Window start: ISO 8601 date (`2026-01-01`, read as 00:00:00 UTC) or RFC 3339 timestamp (`2026-01-01T00:00:00Z`). */
1237
+ start?: string;
1238
+ };
1239
+ header?: never;
1240
+ path: {
1241
+ /** @description Vault identifier */
1242
+ vault_id: string;
1243
+ /** @description Ethereum wallet address */
1244
+ wallet_address: string;
1245
+ };
1246
+ cookie?: never;
1247
+ };
1248
+ requestBody?: never;
1249
+ responses: {
1250
+ /** @description Position timeseries */
1251
+ 200: {
1252
+ headers: {
1253
+ [name: string]: unknown;
1254
+ };
1255
+ content: {
1256
+ "application/json": components["schemas"]["UserPositionsTimeseriesResponse"];
1257
+ };
1258
+ };
1259
+ /** @description Missing or invalid auth */
1260
+ 401: {
1261
+ headers: {
1262
+ [name: string]: unknown;
1263
+ };
1264
+ content: {
1265
+ "application/json": components["schemas"]["ErrorResponse"];
1266
+ };
1267
+ };
1268
+ /** @description Invalid cursor */
1269
+ 422: {
1270
+ headers: {
1271
+ [name: string]: unknown;
1272
+ };
1273
+ content: {
1274
+ "application/json": components["schemas"]["ErrorResponse"];
1275
+ };
1276
+ };
1277
+ };
1278
+ };
1279
+ list_vaults: {
1280
+ parameters: {
1281
+ query?: {
1282
+ /** @description Include hidden (enabled but unlisted) vaults alongside visible ones. Disabled vaults are never listed. */
1283
+ include_hidden?: boolean;
1284
+ /** @description Page size (1–1000, default 1000). */
1285
+ limit?: number;
1286
+ /** @description Opaque cursor from previous `meta.next_cursor`. */
1287
+ next?: string;
1288
+ };
1289
+ header?: never;
1290
+ path?: never;
1291
+ cookie?: never;
1292
+ };
1293
+ requestBody?: never;
1294
+ responses: {
1295
+ /** @description List of vaults */
1296
+ 200: {
1297
+ headers: {
1298
+ [name: string]: unknown;
1299
+ };
1300
+ content: {
1301
+ "application/json": components["schemas"]["VaultListResponse"];
1302
+ };
1303
+ };
1304
+ /** @description Missing or invalid auth */
1305
+ 401: {
1306
+ headers: {
1307
+ [name: string]: unknown;
1308
+ };
1309
+ content: {
1310
+ "application/json": components["schemas"]["ErrorResponse"];
1311
+ };
1312
+ };
1313
+ /** @description Invalid cursor */
1314
+ 422: {
1315
+ headers: {
1316
+ [name: string]: unknown;
1317
+ };
1318
+ content: {
1319
+ "application/json": components["schemas"]["ErrorResponse"];
1320
+ };
1321
+ };
1322
+ };
1323
+ };
1324
+ get_vault: {
1325
+ parameters: {
1326
+ query?: never;
1327
+ header?: never;
1328
+ path: {
1329
+ /** @description Vault identifier (CAIP-10 `chainId:address`) */
1330
+ vault_id: string;
1331
+ };
1332
+ cookie?: never;
1333
+ };
1334
+ requestBody?: never;
1335
+ responses: {
1336
+ /** @description Current vault metrics */
1337
+ 200: {
1338
+ headers: {
1339
+ [name: string]: unknown;
1340
+ };
1341
+ content: {
1342
+ "application/json": components["schemas"]["VaultDetailResponse"];
1343
+ };
1344
+ };
1345
+ /** @description Missing or invalid auth */
1346
+ 401: {
1347
+ headers: {
1348
+ [name: string]: unknown;
1349
+ };
1350
+ content: {
1351
+ "application/json": components["schemas"]["ErrorResponse"];
1352
+ };
1353
+ };
1354
+ /** @description Vault not found */
1355
+ 404: {
1356
+ headers: {
1357
+ [name: string]: unknown;
1358
+ };
1359
+ content: {
1360
+ "application/json": components["schemas"]["ErrorResponse"];
1361
+ };
1362
+ };
1363
+ };
1364
+ };
1365
+ get_vault_definition: {
1366
+ parameters: {
1367
+ query?: never;
1368
+ header?: never;
1369
+ path: {
1370
+ /** @description Vault identifier (CAIP-10 `chainId:address`) */
1371
+ vault_id: string;
1372
+ };
1373
+ cookie?: never;
1374
+ };
1375
+ requestBody?: never;
1376
+ responses: {
1377
+ /** @description Vault definition */
1378
+ 200: {
1379
+ headers: {
1380
+ [name: string]: unknown;
1381
+ };
1382
+ content?: never;
1383
+ };
1384
+ /** @description Missing or invalid auth */
1385
+ 401: {
1386
+ headers: {
1387
+ [name: string]: unknown;
1388
+ };
1389
+ content: {
1390
+ "application/json": components["schemas"]["ErrorResponse"];
1391
+ };
1392
+ };
1393
+ /** @description Vault not found */
1394
+ 404: {
1395
+ headers: {
1396
+ [name: string]: unknown;
1397
+ };
1398
+ content: {
1399
+ "application/json": components["schemas"]["ErrorResponse"];
1400
+ };
1401
+ };
1402
+ };
1403
+ };
1404
+ get_vault_timeseries: {
1405
+ parameters: {
1406
+ query?: {
1407
+ /** @description Window end: ISO 8601 date (`2026-01-01`, read as 00:00:00 UTC) or RFC 3339 timestamp (`2026-01-01T00:00:00Z`). */
1408
+ end?: string;
1409
+ /** @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. */
1410
+ granularity?: string;
1411
+ /** @description Page size (1–10000, default 1000). */
1412
+ limit?: number;
1413
+ /** @description Opaque cursor from previous `meta.next_cursor`. */
1414
+ next?: string;
1415
+ /** @description Sort direction: `asc` (default) or `desc`. */
1416
+ order?: string;
1417
+ /** @description Window start: ISO 8601 date (`2026-01-01`, read as 00:00:00 UTC) or RFC 3339 timestamp (`2026-01-01T00:00:00Z`). */
1418
+ start?: string;
1419
+ };
1420
+ header?: never;
1421
+ path: {
1422
+ /** @description Vault identifier */
1423
+ vault_id: string;
1424
+ };
1425
+ cookie?: never;
1426
+ };
1427
+ requestBody?: never;
1428
+ responses: {
1429
+ /** @description Timeseries data points */
1430
+ 200: {
1431
+ headers: {
1432
+ [name: string]: unknown;
1433
+ };
1434
+ content: {
1435
+ "application/json": components["schemas"]["VaultTimeseriesResponse"];
1436
+ };
1437
+ };
1438
+ /** @description Missing or invalid auth */
1439
+ 401: {
1440
+ headers: {
1441
+ [name: string]: unknown;
1442
+ };
1443
+ content: {
1444
+ "application/json": components["schemas"]["ErrorResponse"];
1445
+ };
1446
+ };
1447
+ /** @description Vault not found */
1448
+ 404: {
1449
+ headers: {
1450
+ [name: string]: unknown;
1451
+ };
1452
+ content: {
1453
+ "application/json": components["schemas"]["ErrorResponse"];
1454
+ };
1455
+ };
1456
+ /** @description Invalid parameters */
1457
+ 422: {
1458
+ headers: {
1459
+ [name: string]: unknown;
1460
+ };
1461
+ content: {
1462
+ "application/json": components["schemas"]["ErrorResponse"];
1463
+ };
1464
+ };
1465
+ };
1466
+ };
1467
+ list_featured_vaults: {
1468
+ parameters: {
1469
+ query?: never;
1470
+ header?: never;
1471
+ path?: never;
1472
+ cookie?: never;
1473
+ };
1474
+ requestBody?: never;
1475
+ responses: {
1476
+ /** @description Featured vault cards */
1477
+ 200: {
1478
+ headers: {
1479
+ [name: string]: unknown;
1480
+ };
1481
+ content: {
1482
+ "application/json": components["schemas"]["FeaturedVaultsResponse"];
1483
+ };
1484
+ };
1485
+ /** @description Missing or invalid auth */
1486
+ 401: {
1487
+ headers: {
1488
+ [name: string]: unknown;
1489
+ };
1490
+ content: {
1491
+ "application/json": components["schemas"]["ErrorResponse"];
1492
+ };
1493
+ };
1494
+ /** @description Data source unavailable */
1495
+ 503: {
1496
+ headers: {
1497
+ [name: string]: unknown;
1498
+ };
1499
+ content: {
1500
+ "application/json": components["schemas"]["ErrorResponse"];
1501
+ };
1502
+ };
1503
+ };
1504
+ };
1505
+ }