@pulsight-xyz/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +70 -0
  2. package/dist/backtest.d.ts +18 -0
  3. package/dist/backtest.d.ts.map +1 -0
  4. package/dist/backtest.js +48 -0
  5. package/dist/backtest.js.map +1 -0
  6. package/dist/client.d.ts +34 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +77 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/errors.d.ts +41 -0
  11. package/dist/errors.d.ts.map +1 -0
  12. package/dist/errors.js +96 -0
  13. package/dist/errors.js.map +1 -0
  14. package/dist/generated/client/client.gen.d.ts +3 -0
  15. package/dist/generated/client/client.gen.d.ts.map +1 -0
  16. package/dist/generated/client/client.gen.js +217 -0
  17. package/dist/generated/client/client.gen.js.map +1 -0
  18. package/dist/generated/client/index.d.ts +9 -0
  19. package/dist/generated/client/index.d.ts.map +1 -0
  20. package/dist/generated/client/index.js +7 -0
  21. package/dist/generated/client/index.js.map +1 -0
  22. package/dist/generated/client/types.gen.d.ts +121 -0
  23. package/dist/generated/client/types.gen.d.ts.map +1 -0
  24. package/dist/generated/client/types.gen.js +3 -0
  25. package/dist/generated/client/types.gen.js.map +1 -0
  26. package/dist/generated/client/utils.gen.d.ts +38 -0
  27. package/dist/generated/client/utils.gen.d.ts.map +1 -0
  28. package/dist/generated/client/utils.gen.js +229 -0
  29. package/dist/generated/client/utils.gen.js.map +1 -0
  30. package/dist/generated/client.gen.d.ts +13 -0
  31. package/dist/generated/client.gen.d.ts.map +1 -0
  32. package/dist/generated/client.gen.js +4 -0
  33. package/dist/generated/client.gen.js.map +1 -0
  34. package/dist/generated/core/auth.gen.d.ts +19 -0
  35. package/dist/generated/core/auth.gen.d.ts.map +1 -0
  36. package/dist/generated/core/auth.gen.js +15 -0
  37. package/dist/generated/core/auth.gen.js.map +1 -0
  38. package/dist/generated/core/bodySerializer.gen.d.ts +26 -0
  39. package/dist/generated/core/bodySerializer.gen.d.ts.map +1 -0
  40. package/dist/generated/core/bodySerializer.gen.js +58 -0
  41. package/dist/generated/core/bodySerializer.gen.js.map +1 -0
  42. package/dist/generated/core/params.gen.d.ts +44 -0
  43. package/dist/generated/core/params.gen.d.ts.map +1 -0
  44. package/dist/generated/core/params.gen.js +101 -0
  45. package/dist/generated/core/params.gen.js.map +1 -0
  46. package/dist/generated/core/pathSerializer.gen.d.ts +34 -0
  47. package/dist/generated/core/pathSerializer.gen.d.ts.map +1 -0
  48. package/dist/generated/core/pathSerializer.gen.js +107 -0
  49. package/dist/generated/core/pathSerializer.gen.js.map +1 -0
  50. package/dist/generated/core/queryKeySerializer.gen.d.ts +19 -0
  51. package/dist/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
  52. package/dist/generated/core/queryKeySerializer.gen.js +93 -0
  53. package/dist/generated/core/queryKeySerializer.gen.js.map +1 -0
  54. package/dist/generated/core/serverSentEvents.gen.d.ts +72 -0
  55. package/dist/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  56. package/dist/generated/core/serverSentEvents.gen.js +133 -0
  57. package/dist/generated/core/serverSentEvents.gen.js.map +1 -0
  58. package/dist/generated/core/types.gen.d.ts +79 -0
  59. package/dist/generated/core/types.gen.d.ts.map +1 -0
  60. package/dist/generated/core/types.gen.js +3 -0
  61. package/dist/generated/core/types.gen.js.map +1 -0
  62. package/dist/generated/core/utils.gen.d.ts +20 -0
  63. package/dist/generated/core/utils.gen.d.ts.map +1 -0
  64. package/dist/generated/core/utils.gen.js +88 -0
  65. package/dist/generated/core/utils.gen.js.map +1 -0
  66. package/dist/generated/index.d.ts +3 -0
  67. package/dist/generated/index.d.ts.map +1 -0
  68. package/dist/generated/index.js +3 -0
  69. package/dist/generated/index.js.map +1 -0
  70. package/dist/generated/sdk.gen.d.ts +322 -0
  71. package/dist/generated/sdk.gen.d.ts.map +1 -0
  72. package/dist/generated/sdk.gen.js +550 -0
  73. package/dist/generated/sdk.gen.js.map +1 -0
  74. package/dist/generated/types.gen.d.ts +3337 -0
  75. package/dist/generated/types.gen.d.ts.map +1 -0
  76. package/dist/generated/types.gen.js +3 -0
  77. package/dist/generated/types.gen.js.map +1 -0
  78. package/dist/index.d.ts +21 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +19 -0
  81. package/dist/index.js.map +1 -0
  82. package/package.json +40 -0
  83. package/src/backtest.ts +72 -0
  84. package/src/client.ts +98 -0
  85. package/src/errors.ts +99 -0
  86. package/src/generated/client/client.gen.ts +277 -0
  87. package/src/generated/client/index.ts +25 -0
  88. package/src/generated/client/types.gen.ts +218 -0
  89. package/src/generated/client/utils.gen.ts +316 -0
  90. package/src/generated/client.gen.ts +16 -0
  91. package/src/generated/core/auth.gen.ts +41 -0
  92. package/src/generated/core/bodySerializer.gen.ts +82 -0
  93. package/src/generated/core/params.gen.ts +169 -0
  94. package/src/generated/core/pathSerializer.gen.ts +171 -0
  95. package/src/generated/core/queryKeySerializer.gen.ts +117 -0
  96. package/src/generated/core/serverSentEvents.gen.ts +242 -0
  97. package/src/generated/core/types.gen.ts +104 -0
  98. package/src/generated/core/utils.gen.ts +140 -0
  99. package/src/generated/index.ts +4 -0
  100. package/src/generated/sdk.gen.ts +625 -0
  101. package/src/generated/types.gen.ts +3730 -0
  102. package/src/index.ts +29 -0
@@ -0,0 +1,3730 @@
1
+ // This file is auto-generated by @hey-api/openapi-ts
2
+
3
+ export type ClientOptions = {
4
+ baseUrl: `${string}://${string}` | (string & {});
5
+ };
6
+
7
+ export type InternalAdaptersPrimaryHttpHandlerDashboardStats = {
8
+ aggregate_sim_pnl_sol?: number;
9
+ backtested_trades?: number;
10
+ best_run?: InternalAdaptersPrimaryHttpHandlerBestRunRef;
11
+ running_backtests?: number;
12
+ strategies_with_runs?: number;
13
+ total_strategies?: number;
14
+ };
15
+
16
+ export type InternalAdaptersPrimaryHttpHandlerPaginatedPnls = {
17
+ items?: Array<PulsightInternalCoreDomainTraderPnl>;
18
+ limit?: number;
19
+ offset?: number;
20
+ total?: number;
21
+ };
22
+
23
+ export type InternalAdaptersPrimaryHttpHandlerStrategyListItem = {
24
+ record?: PulsightInternalCoreDomainStrategyRecord;
25
+ stats?: InternalAdaptersPrimaryHttpHandlerStrategyStats;
26
+ };
27
+
28
+ export type InternalAdaptersPrimaryHttpHandlerStrategyStats = {
29
+ draft?: boolean;
30
+ /**
31
+ * EquityPoints is the cumulative-P&L curve across the most
32
+ * recent ≤20 `done` runs, ordered ascending by finished_at.
33
+ * Each element is the running sum of `summary.total_pnl_sol`
34
+ * through that run, so a frontend <polyline> over these points
35
+ * renders the dashboard sparkline directly.
36
+ */
37
+ equity_points?: Array<number>;
38
+ last_run_at?: string;
39
+ last_run_pnl_sol?: number;
40
+ last_run_status?: string;
41
+ last_run_trades?: number;
42
+ last_run_win_rate_pct?: number;
43
+ total_runs?: number;
44
+ };
45
+
46
+ export type InternalAdaptersPrimaryHttpHandlerTraderExportRequest = {
47
+ columns?: Array<string>;
48
+ direction?: string;
49
+ filters?: {
50
+ [key: string]: unknown;
51
+ };
52
+ format?: string;
53
+ sort_by?: string;
54
+ };
55
+
56
+ export type InternalAdaptersPrimaryHttpHandlerApiKeyRenameRequest = {
57
+ name?: string;
58
+ };
59
+
60
+ export type InternalAdaptersPrimaryHttpHandlerBacktestSettingsResponse = {
61
+ max_tick_budget?: number;
62
+ };
63
+
64
+ export type InternalAdaptersPrimaryHttpHandlerBestRunRef = {
65
+ backtest_id?: string;
66
+ pnl_sol?: number;
67
+ strategy_id?: string;
68
+ strategy_name?: string;
69
+ };
70
+
71
+ export type InternalAdaptersPrimaryHttpHandlerErrorResponse = {
72
+ error?: string;
73
+ };
74
+
75
+ export type InternalAdaptersPrimaryHttpHandlerServiceLoyaltyRow = {
76
+ share_pct?: number;
77
+ swap_count?: number;
78
+ tip_service?: string;
79
+ tip_sum_lamports?: number;
80
+ };
81
+
82
+ export type InternalAdaptersPrimaryHttpHandlerSnapshotResponse = {
83
+ rows?: Array<InternalAdaptersPrimaryHttpHandlerSnapshotRow>;
84
+ window?: string;
85
+ };
86
+
87
+ export type InternalAdaptersPrimaryHttpHandlerSnapshotRow = {
88
+ avg_buys_per_token?: number;
89
+ avg_hold_secs?: number;
90
+ avg_reactivity_secs?: number;
91
+ /**
92
+ * lamports
93
+ */
94
+ avg_rp_30d?: number;
95
+ /**
96
+ * lamports
97
+ */
98
+ avg_rp_7d?: number;
99
+ avg_sells_per_token?: number;
100
+ holding_pnl_lamports?: number;
101
+ med_buys_per_token?: number;
102
+ med_hold_secs?: number;
103
+ med_reactivity_secs?: number;
104
+ /**
105
+ * lamports
106
+ */
107
+ med_rp_30d?: number;
108
+ /**
109
+ * lamports
110
+ */
111
+ med_rp_7d?: number;
112
+ med_sells_per_token?: number;
113
+ oldest_trade_at?: string;
114
+ pnl_distribution?: Array<number>;
115
+ /**
116
+ * lamports per day
117
+ */
118
+ pnl_sparkline_7d?: Array<number>;
119
+ tags?: Array<string>;
120
+ /**
121
+ * lifetime mints created
122
+ */
123
+ tokens_created?: number;
124
+ /**
125
+ * subset that graduated
126
+ */
127
+ tokens_graduated?: number;
128
+ trader?: string;
129
+ };
130
+
131
+ export type InternalAdaptersPrimaryHttpHandlerStrategyCreateRequest = {
132
+ /**
133
+ * Config carries the visual node-graph DSL. Tagged `def` on the
134
+ * wire to match the frontend contract (pulsight/new-front/src/
135
+ * api/client.ts sends `{name, description, def}`); the Go field
136
+ * keeps its existing name so callers don't have to churn.
137
+ */
138
+ def?: PulsightInternalCoreDomainStrategyStrategyDef;
139
+ description?: string;
140
+ name?: string;
141
+ };
142
+
143
+ export type InternalAdaptersPrimaryHttpHandlerStrategyUpdateRequest = {
144
+ /**
145
+ * Config carries the visual node-graph DSL. Tagged `def` on the
146
+ * wire to match the frontend contract (pulsight/new-front/src/
147
+ * api/client.ts sends `{name, description, def}`); the Go field
148
+ * keeps its existing name so callers don't have to churn.
149
+ */
150
+ def?: PulsightInternalCoreDomainStrategyStrategyDef;
151
+ description?: string;
152
+ name?: string;
153
+ };
154
+
155
+ export type InternalAdaptersPrimaryHttpHandlerSwapEventRow = {
156
+ amount_in?: number;
157
+ amount_out?: number;
158
+ arb_pnl_lamports?: number;
159
+ dex?: string;
160
+ fee?: number;
161
+ is_arb?: boolean;
162
+ is_buy?: boolean;
163
+ mint?: string;
164
+ pool?: string;
165
+ priority_fee_lamports?: number;
166
+ quote_mint?: string;
167
+ realized_profit?: number;
168
+ signature?: string;
169
+ sold_more_than_bought?: boolean;
170
+ sold_without_buy?: boolean;
171
+ tip_lamports?: number;
172
+ tip_service?: string;
173
+ trader?: string;
174
+ ts?: number;
175
+ /**
176
+ * null — not in Pulsight SwapRow
177
+ */
178
+ virtual_sol?: number;
179
+ /**
180
+ * null — not in Pulsight SwapRow
181
+ */
182
+ virtual_token?: string;
183
+ };
184
+
185
+ export type InternalAdaptersPrimaryHttpHandlerTokensRow = {
186
+ buy_tx_count?: number;
187
+ cost_basis_lamports?: string;
188
+ first_buy_ts?: string;
189
+ holding_pnl_lamports?: number;
190
+ last_active_ts?: string;
191
+ mint?: string;
192
+ mint_decimals?: number;
193
+ mint_logo_uri?: string;
194
+ mint_name?: string;
195
+ mint_symbol?: string;
196
+ realized_profit?: number;
197
+ sell_tx_count?: number;
198
+ token_balance?: string;
199
+ total_fees?: number;
200
+ total_invested?: number;
201
+ trader?: string;
202
+ updated_at?: string;
203
+ };
204
+
205
+ export type InternalAdaptersPrimaryHttpHandlerTraderTipStatsResponse = {
206
+ exec_premium?: number;
207
+ priority_fee_sum?: number;
208
+ swap_count?: number;
209
+ tip_aggression_ratio?: number;
210
+ tip_avg_lamports?: number;
211
+ tip_count?: number;
212
+ tip_sum_lamports?: number;
213
+ trader?: string;
214
+ volume_in_sum?: number;
215
+ window?: string;
216
+ };
217
+
218
+ export type PulsightInternalCoreDomainAggregatorBondingCurveState = {
219
+ /**
220
+ * True iff mint_migrations carries any graduation row for this mint.
221
+ */
222
+ graduated?: boolean;
223
+ /**
224
+ * Destination dex of the graduation; nil when not graduated.
225
+ */
226
+ graduation_target_dex?: string;
227
+ /**
228
+ * Launchpad slug — pumpfun_amm | raydium_launchpad | meteora_dbc.
229
+ */
230
+ launchpad?: string;
231
+ /**
232
+ * Curve progress 0..=100. nil for Raydium Launchpad / Meteora DBC
233
+ * (per-pool config not persisted); always set for PumpFun.
234
+ */
235
+ progress_pct?: number;
236
+ /**
237
+ * Most recent observed virtual_sol (= dex_swaps.quote_reserves)
238
+ * snapshot on the launchpad dex, in lamports. 0 for pre-feature
239
+ * graduations with no curve swap on file.
240
+ */
241
+ virtual_sol_lamports?: number;
242
+ /**
243
+ * Most recent observed virtual_token (NUMERIC → decimal string for
244
+ * JSON safety). "0" when no curve swap is on file.
245
+ */
246
+ virtual_token?: string;
247
+ };
248
+
249
+ export type PulsightInternalCoreDomainAggregatorCreatedMintRow = {
250
+ decimals?: number;
251
+ /**
252
+ * FirstSeenTS proxies "created at" — the create-tx and first buy land in
253
+ * the same flush window. nil for fixture-only edge cases.
254
+ */
255
+ first_seen_ts?: string;
256
+ /**
257
+ * Graduated is true iff the mint has any `mint_migrations` row.
258
+ */
259
+ graduated?: boolean;
260
+ /**
261
+ * GraduationTargetDex is the most-recent migration's to_dex; nil when not
262
+ * graduated.
263
+ */
264
+ graduation_target_dex?: string;
265
+ logo_uri?: string;
266
+ mint?: string;
267
+ name?: string;
268
+ symbol?: string;
269
+ };
270
+
271
+ export type PulsightInternalCoreDomainAggregatorDevHoldings = {
272
+ /**
273
+ * Creator's raw token balance (NUMERIC → decimal string).
274
+ */
275
+ balance_raw?: string;
276
+ /**
277
+ * Creator wallet (mirrors MintRow.Creator).
278
+ */
279
+ creator?: string;
280
+ /**
281
+ * Percentage of supply held by the creator, 0..=100.
282
+ */
283
+ percent_of_supply?: number;
284
+ /**
285
+ * Mint's on-chain total supply (same encoding).
286
+ */
287
+ supply_raw?: string;
288
+ };
289
+
290
+ export type PulsightInternalCoreDomainAggregatorGlobalTipStats = {
291
+ p50_tip_lamports?: number;
292
+ p90_tip_lamports?: number;
293
+ priority_fee_sum?: number;
294
+ swap_count?: number;
295
+ tip_avg_lamports?: number;
296
+ tip_count?: number;
297
+ tip_sum_lamports?: number;
298
+ /**
299
+ * TippedFraction is tip_count / swap_count over the window (0..1).
300
+ */
301
+ tipped_fraction?: number;
302
+ window?: string;
303
+ };
304
+
305
+ export type PulsightInternalCoreDomainAggregatorHeatmapResponse = {
306
+ bucket?: string;
307
+ horizon_hours?: number;
308
+ points?: Array<PulsightInternalCoreDomainAggregatorTipHeatmapPoint>;
309
+ };
310
+
311
+ export type PulsightInternalCoreDomainAggregatorJitoEfficiencyRow = {
312
+ efficiency_score?: number;
313
+ tip_swaps?: number;
314
+ total_tip_sum?: number;
315
+ total_volume_in?: number;
316
+ trader?: string;
317
+ };
318
+
319
+ export type PulsightInternalCoreDomainAggregatorLpEvent = {
320
+ base_amount?: string;
321
+ base_mint?: string;
322
+ dex?: string;
323
+ ix_index?: number;
324
+ /**
325
+ * LpMint is the LP-token mint; "" when unknown.
326
+ */
327
+ lp_mint?: string;
328
+ lp_token_amount?: string;
329
+ /**
330
+ * Op ∈ {add, remove, burn}.
331
+ */
332
+ op?: string;
333
+ pool?: string;
334
+ quote_amount?: string;
335
+ quote_mint?: string;
336
+ signature?: string;
337
+ signer?: string;
338
+ slot?: number;
339
+ timestamp?: string;
340
+ };
341
+
342
+ export type PulsightInternalCoreDomainAggregatorMatPoint = {
343
+ bucket_ts?: number;
344
+ ma_1h?: number;
345
+ ma_5m?: number;
346
+ tip_avg?: number;
347
+ };
348
+
349
+ export type PulsightInternalCoreDomainAggregatorMevTipSharePoint = {
350
+ bucket_ts?: number;
351
+ share_pct?: number;
352
+ tipped_volume_lamports?: number;
353
+ total_volume_lamports?: number;
354
+ };
355
+
356
+ export type PulsightInternalCoreDomainAggregatorMintMarket = {
357
+ dex?: string;
358
+ last_swap_ts?: string;
359
+ pool?: string;
360
+ sol_volume_lamports?: number;
361
+ sol_volume_share?: number;
362
+ swap_count?: number;
363
+ };
364
+
365
+ export type PulsightInternalCoreDomainAggregatorMintMigration = {
366
+ destination_pool?: string;
367
+ from_dex?: string;
368
+ mint?: string;
369
+ slot?: number;
370
+ /**
371
+ * Source ∈ {"observed","inferred"} (CHECK constraint).
372
+ */
373
+ source?: string;
374
+ timestamp?: string;
375
+ to_dex?: string;
376
+ };
377
+
378
+ export type PulsightInternalCoreDomainAggregatorMintRow = {
379
+ authorities_observed_at?: string;
380
+ /**
381
+ * ── CA mint-catalog enrichment (ported from mint_catalog.rs::find /
382
+ * list_active). bonding_curve + dev_holdings populate on BOTH
383
+ * /api/mints (list) and /api/mints/:pubkey (detail); supply +
384
+ * authorities populate on the detail path only (nil on list rows).
385
+ * All pointer + omitempty so list rows stay lean. The frontend's
386
+ * CurveBadge/DevPill already render bonding_curve/dev_holdings.
387
+ */
388
+ bonding_curve?: PulsightInternalCoreDomainAggregatorBondingCurveState;
389
+ /**
390
+ * BuyCount/SellCount: buy- vs sell-side swap counts over the `?hours`
391
+ * activity window (countIf(is_buy)). Populated on the list path; 0 on
392
+ * the detail path.
393
+ */
394
+ buy_count?: number;
395
+ creator?: string;
396
+ decimals?: number;
397
+ dev_holdings?: PulsightInternalCoreDomainAggregatorDevHoldings;
398
+ fetch_status?: string;
399
+ first_seen_ts?: string;
400
+ freeze_authority?: string;
401
+ /**
402
+ * IsMayhemMode flags a Pump.fun "Mayhem"-mode token (its trades route
403
+ * through the Mayhem custody program). Populated on BOTH list and detail
404
+ * from the mint_mayhem table; omitted when false.
405
+ */
406
+ is_mayhem_mode?: boolean;
407
+ last_trade_ts?: string;
408
+ logo_uri?: string;
409
+ markets_count?: number;
410
+ /**
411
+ * MetadataURI/FetchStatus are detail-only identity fields the
412
+ * frontend's TokenIdentityCard renders (off-chain JSON link + enrich
413
+ * status). nil on list rows.
414
+ */
415
+ metadata_uri?: string;
416
+ mint?: string;
417
+ /**
418
+ * MintAuthority/FreezeAuthority: non-nil = active authority pubkey;
419
+ * nil with AuthoritiesObservedAt set = renounced; nil with
420
+ * AuthoritiesObservedAt nil = unknown (not yet observed).
421
+ */
422
+ mint_authority?: string;
423
+ name?: string;
424
+ sell_count?: number;
425
+ /**
426
+ * Windowed stats bundle keyed by window. Reuses the same
427
+ * MintStatsByWindow struct that GET /api/mints/:pubkey/stats
428
+ * returns so the frontend's ActiveMint.stats path consumes both
429
+ * endpoints identically.
430
+ *
431
+ * /api/mints/:pubkey/stats (FindStatsBundle) populates all four
432
+ * windows in one round-trip.
433
+ *
434
+ * /api/mints (ListActive) currently populates ONLY the active
435
+ * window's bucket — the other three windows in the per-row
436
+ * MintStatsByWindow stay zero-valued. The frontend's
437
+ * `m.stats?.[window]?.…` chain renders `—` on null, so this is
438
+ * safe; an N-row × 4-window fan-out would mean 3× more LATERAL
439
+ * joins per page and the UI only ever shows one window at a time
440
+ * (window switch refetches the page). If a future surface needs
441
+ * all four windows in the list response, extend ListActive to
442
+ * match FindStatsBundle's four-LATERAL pattern.
443
+ */
444
+ stats?: PulsightInternalCoreDomainAggregatorMintStatsByWindow;
445
+ /**
446
+ * Supply is the on-chain total supply (NUMERIC → decimal string);
447
+ * nil until the enricher has decoded the mint account.
448
+ */
449
+ supply?: string;
450
+ /**
451
+ * Window-bound activity aggregates over the `?hours` lookback,
452
+ * derived from hourly_mint_trader_activity + hourly_mint_pool_activity.
453
+ * All non-pointer because GROUP BY in the LATERAL produces a row even
454
+ * for zero swaps (we go through the activity gate first, so anything
455
+ * returned has at least one). SwapCount, TraderCount and MarketsCount
456
+ * default to 0 if the LATERAL came up empty; the frontend's `formatNum`
457
+ * renders 0 cleanly.
458
+ */
459
+ swap_count?: number;
460
+ symbol?: string;
461
+ trader_count?: number;
462
+ };
463
+
464
+ export type PulsightInternalCoreDomainAggregatorMintStatsByWindow = {
465
+ '1h'?: PulsightInternalCoreDomainAggregatorMintWindowStats;
466
+ '1m'?: PulsightInternalCoreDomainAggregatorMintWindowStats;
467
+ '24h'?: PulsightInternalCoreDomainAggregatorMintWindowStats;
468
+ '5m'?: PulsightInternalCoreDomainAggregatorMintWindowStats;
469
+ };
470
+
471
+ export type PulsightInternalCoreDomainAggregatorMintTraderRow = {
472
+ buy_tx_count?: number;
473
+ cost_basis_lamports?: string;
474
+ first_buy_ts?: string;
475
+ holding_pnl_lamports?: number;
476
+ last_active_ts?: string;
477
+ realized_profit?: number;
478
+ sell_tx_count?: number;
479
+ token_balance?: string;
480
+ total_fees?: number;
481
+ total_invested?: number;
482
+ trader?: string;
483
+ };
484
+
485
+ export type PulsightInternalCoreDomainAggregatorMintWindowStats = {
486
+ buy_swap_count?: number;
487
+ /**
488
+ * SOL spent buying, in lamports.
489
+ */
490
+ buy_volume_sol?: number;
491
+ /**
492
+ * buy_volume_sol - sell_volume_sol, in lamports.
493
+ */
494
+ net_buy_sol?: number;
495
+ /**
496
+ * Most recent virtual_sol (pool size) observed in the window, in lamports.
497
+ */
498
+ pool_sol?: number;
499
+ /**
500
+ * (close - open) / open × 100 over the window.
501
+ */
502
+ price_change_pct?: number;
503
+ sell_swap_count?: number;
504
+ /**
505
+ * SOL received from sells, in lamports.
506
+ */
507
+ sell_volume_sol?: number;
508
+ swap_count?: number;
509
+ /**
510
+ * Total SOL traded (buy + sell), in lamports.
511
+ */
512
+ volume_sol?: number;
513
+ };
514
+
515
+ export type PulsightInternalCoreDomainAggregatorMintWindowStatsBundle = {
516
+ as_of?: string;
517
+ mint?: string;
518
+ stats?: PulsightInternalCoreDomainAggregatorMintStatsByWindow;
519
+ };
520
+
521
+ export type PulsightInternalCoreDomainAggregatorOhlcvCandle = {
522
+ bucket?: string;
523
+ buy_volume_sol?: number;
524
+ c?: number;
525
+ h?: number;
526
+ l?: number;
527
+ mint?: string;
528
+ o?: number;
529
+ pool_sol?: number;
530
+ sell_volume_sol?: number;
531
+ swap_count?: number;
532
+ token_volume?: number;
533
+ };
534
+
535
+ export type PulsightInternalCoreDomainAggregatorSafetyEvent = {
536
+ /**
537
+ * AccountTarget is the affected token account; set for freeze/thaw.
538
+ */
539
+ account_target?: string;
540
+ /**
541
+ * Amount is a decimal token-amount string; set for burn/mint_to.
542
+ */
543
+ amount?: string;
544
+ /**
545
+ * AuthorityType ∈ {mint, freeze, account_owner, close_account};
546
+ * set only for kind=authority_change.
547
+ */
548
+ authority_type?: string;
549
+ ix_index?: number;
550
+ /**
551
+ * Kind ∈ {burn, mint_to, freeze, thaw, authority_change}.
552
+ */
553
+ kind?: string;
554
+ mint?: string;
555
+ /**
556
+ * NewAuthority is the new authority pubkey (nil = revoked / empty);
557
+ * set only for kind=authority_change.
558
+ */
559
+ new_authority?: string;
560
+ signature?: string;
561
+ signer?: string;
562
+ slot?: number;
563
+ timestamp?: string;
564
+ };
565
+
566
+ export type PulsightInternalCoreDomainAggregatorServiceDominanceRow = {
567
+ share_pct?: number;
568
+ tip_service?: string;
569
+ tip_sum_lamports?: number;
570
+ tipped_count?: number;
571
+ };
572
+
573
+ export type PulsightInternalCoreDomainAggregatorTimeframe = '1s' | '5s' | '15s' | '30s' | '1m' | '5m' | '15m' | '30m';
574
+
575
+ export type PulsightInternalCoreDomainAggregatorTipHeatmapPoint = {
576
+ /**
577
+ * unix epoch seconds at bucket start
578
+ */
579
+ bucket_ts?: number;
580
+ median_tip_lamports?: number;
581
+ p90_tip_lamports?: number;
582
+ tipped_count?: number;
583
+ };
584
+
585
+ export type PulsightInternalCoreDomainAggregatorTipPriorityRatioPoint = {
586
+ bucket_ts?: number;
587
+ priority_fee_sum?: number;
588
+ ratio?: number;
589
+ tip_sum_lamports?: number;
590
+ };
591
+
592
+ export type PulsightInternalCoreDomainAggregatorTraderBehavioralStats = {
593
+ active_hours_count?: number;
594
+ avg_buy_count_per_token?: number;
595
+ avg_holding_time_secs?: number;
596
+ avg_reactivity_secs?: number;
597
+ avg_sell_count_per_token?: number;
598
+ median_buy_count_per_token?: number;
599
+ median_holding_time_secs?: number;
600
+ median_reactivity_secs?: number;
601
+ median_sell_count_per_token?: number;
602
+ oldest_trade_at?: string;
603
+ profit_per_trade_lamports?: number;
604
+ pubkey?: string;
605
+ rebalancing_ratio?: number;
606
+ total_volume_lamports?: number;
607
+ window?: PulsightInternalCoreDomainAggregatorWindow;
608
+ };
609
+
610
+ export type PulsightInternalCoreDomainAggregatorTraderPeriodStatsRow = {
611
+ /**
612
+ * ArbTxRatio is the fraction (0..1) of the window's swaps that were
613
+ * arbitrage txs (is_arb). 0 when the window has no swaps.
614
+ */
615
+ arb_tx_ratio?: number;
616
+ buy_amount_lamports?: number;
617
+ buy_sell_ratio?: number;
618
+ /**
619
+ * DidntBuySells / SoldGtBoughtSells count the window's uncovered
620
+ * sells: countIf(sold_without_buy) and countIf(sold_more_than_bought)
621
+ * over `swaps`. Replaces the retired phantom proceeds split (CA
622
+ * migration 000018_remove_phantom_tracking).
623
+ */
624
+ didnt_buy_sells?: number;
625
+ loss_profit?: number;
626
+ loss_sells?: number;
627
+ realized_profit?: number;
628
+ sell_amount_lamports?: number;
629
+ sold_gt_bought_sells?: number;
630
+ swap_count?: number;
631
+ token_num?: number;
632
+ /**
633
+ * Count fields are int64, not int: periodStatsOne casts them with
634
+ * toInt64() in SQL, and clickhouse-go scans an Int64 column only into
635
+ * *int64 (it rejects *int with code-typed "try using *int64"). JSON
636
+ * serialisation is identical either way.
637
+ */
638
+ total_buys?: number;
639
+ total_fees?: number;
640
+ total_sells?: number;
641
+ trader?: string;
642
+ win_profit?: number;
643
+ win_sells?: number;
644
+ window_label?: string;
645
+ winrate?: number;
646
+ };
647
+
648
+ export type PulsightInternalCoreDomainAggregatorWindow = '1d' | '7d' | '30d' | 'all';
649
+
650
+ export type PulsightInternalCoreDomainApikeyKey = {
651
+ created_at?: string;
652
+ expires_at?: string;
653
+ id?: string;
654
+ last_used_at?: string;
655
+ name?: string;
656
+ prefix?: string;
657
+ revoked_at?: string;
658
+ scopes?: Array<PulsightInternalCoreDomainApikeyScope>;
659
+ user_id?: string;
660
+ };
661
+
662
+ export type PulsightInternalCoreDomainApikeyScope = 'data:read' | 'backtest:run' | 'strategy:read' | 'strategy:write';
663
+
664
+ export type PulsightInternalCoreDomainCreditPool = 'api';
665
+
666
+ export type PulsightInternalCoreDomainCreditReason = 'grant' | 'consume' | 'refund' | 'adjust' | 'referral_bonus';
667
+
668
+ export type PulsightInternalCoreDomainCreditTransaction = {
669
+ created_at?: string;
670
+ delta?: number;
671
+ id?: string;
672
+ pool?: PulsightInternalCoreDomainCreditPool;
673
+ reason?: PulsightInternalCoreDomainCreditReason;
674
+ ref?: string;
675
+ user_id?: string;
676
+ };
677
+
678
+ export type PulsightInternalCoreDomainStrategyComparisonOp = 'gt' | 'gte' | 'lt' | 'lte' | 'eq';
679
+
680
+ export type PulsightInternalCoreDomainStrategyEdge = {
681
+ from?: string;
682
+ port?: PulsightInternalCoreDomainStrategyEdgePort;
683
+ to?: string;
684
+ };
685
+
686
+ export type PulsightInternalCoreDomainStrategyEdgePort = 'default' | 'cond' | 'then' | 'else';
687
+
688
+ export type PulsightInternalCoreDomainStrategyEventKind = 'freeze_renounced' | 'mint_renounced' | 'lp_burned' | 'dev_sold';
689
+
690
+ export type PulsightInternalCoreDomainStrategyGlobalConstraints = {
691
+ max_buy_sol?: number;
692
+ /**
693
+ * MaxBuysPerOpenPosition is the max number of buys (initial open + adds)
694
+ * allowed within ONE open position. 0 ⇒ 1 — the historical single-buy-
695
+ * per-position behaviour; read it through EffectiveMaxBuysPerOpenPosition.
696
+ * Raise it above 1 to enable DCA / pyramiding.
697
+ */
698
+ max_buys_per_open_position?: number;
699
+ max_buys_per_token_per_hour?: number;
700
+ max_buys_per_token_per_minute?: number;
701
+ /**
702
+ * MaxPositionExposureSol caps the cumulative cost basis (SOL spent) of a
703
+ * single open position. 0 ⇒ unlimited. An add that would push the open
704
+ * position's exposure over this cap is skipped.
705
+ */
706
+ max_position_exposure_sol?: number;
707
+ min_buy_sol?: number;
708
+ };
709
+
710
+ export type PulsightInternalCoreDomainStrategyNode = {
711
+ id?: string;
712
+ kind?: PulsightInternalCoreDomainStrategyNodeKind;
713
+ label?: string;
714
+ };
715
+
716
+ export type PulsightInternalCoreDomainStrategyNodeKind = {
717
+ [key: string]: unknown;
718
+ };
719
+
720
+ export type PulsightInternalCoreDomainStrategyRecord = {
721
+ created_at?: string;
722
+ /**
723
+ * Config is the visual node-graph DSL. JSON-serialised as `def`
724
+ * to match the frontend contract (pulsight/new-front/src/api/
725
+ * types.ts::StrategyRecord.def). The DB column is still `config`
726
+ * — only the wire field name differs. Renaming the Go field would
727
+ * churn the StrategyStore + service signatures without benefit.
728
+ */
729
+ def?: PulsightInternalCoreDomainStrategyStrategyDef;
730
+ deleted_at?: string;
731
+ description?: string;
732
+ id?: string;
733
+ name?: string;
734
+ updated_at?: string;
735
+ user_id?: string;
736
+ };
737
+
738
+ export type PulsightInternalCoreDomainStrategyStrategyDef = {
739
+ constraints?: PulsightInternalCoreDomainStrategyGlobalConstraints;
740
+ entry?: PulsightInternalCoreDomainStrategySubGraph;
741
+ exit?: PulsightInternalCoreDomainStrategySubGraph;
742
+ };
743
+
744
+ export type PulsightInternalCoreDomainStrategySubGraph = {
745
+ edges?: Array<PulsightInternalCoreDomainStrategyEdge>;
746
+ nodes?: Array<PulsightInternalCoreDomainStrategyNode>;
747
+ };
748
+
749
+ export type PulsightInternalCoreDomainStrategyVenueId = 'solana' | 'hyperliquid' | 'polymarket';
750
+
751
+ export type PulsightInternalCoreDomainSubscriptionSubscriptionTier = 'free' | 'tier1' | 'tier2' | 'tier3' | 'enterprise';
752
+
753
+ export type PulsightInternalCoreDomainTraderDailyProfit = {
754
+ buy_amount_usd?: number;
755
+ created_at?: string;
756
+ date?: string;
757
+ id?: string;
758
+ loss_profit?: number;
759
+ loss_sells?: number;
760
+ sell_amount_usd?: number;
761
+ total_buys?: number;
762
+ total_profit?: number;
763
+ total_sells?: number;
764
+ trader_id?: string;
765
+ win_profit?: number;
766
+ win_sells?: number;
767
+ };
768
+
769
+ export type PulsightInternalCoreDomainTraderFilter = {
770
+ created_at?: string;
771
+ filters?: {
772
+ [key: string]: unknown;
773
+ };
774
+ id?: string;
775
+ is_default?: boolean;
776
+ name?: string;
777
+ updated_at?: string;
778
+ user_id?: string;
779
+ };
780
+
781
+ export type PulsightInternalCoreDomainTraderPnl = {
782
+ /**
783
+ * Position
784
+ */
785
+ balance?: number;
786
+ /**
787
+ * Activity
788
+ */
789
+ buy_tx_count?: number;
790
+ created_at?: string;
791
+ id?: string;
792
+ last_active_timestamp?: number;
793
+ /**
794
+ * Timing
795
+ */
796
+ open_timestamp?: number;
797
+ realized_profit?: number;
798
+ sell_tx_count?: number;
799
+ start_holding_at?: number;
800
+ /**
801
+ * Token info
802
+ */
803
+ token_address?: string;
804
+ token_logo?: string;
805
+ token_name?: string;
806
+ token_price?: number;
807
+ token_symbol?: string;
808
+ total_profit?: number;
809
+ total_profit_pnl?: number;
810
+ trader_id?: string;
811
+ unrealized_profit?: number;
812
+ updated_at?: string;
813
+ usd_value?: number;
814
+ };
815
+
816
+ export type PulsightInternalCoreDomainTraderTag = {
817
+ created_at?: string;
818
+ description?: string;
819
+ id?: string;
820
+ name?: string;
821
+ source?: PulsightInternalCoreDomainTraderTagSource;
822
+ };
823
+
824
+ export type PulsightInternalCoreDomainTraderTagSource = 'computed' | 'manual' | 'aggregator';
825
+
826
+ export type PulsightInternalCoreDomainTraderTrader = {
827
+ active_hours_count?: number;
828
+ arb_tx_ratio_30d?: number;
829
+ arb_tx_ratio_7d?: number;
830
+ avatar?: string;
831
+ /**
832
+ * Per-token buy/sell counts
833
+ */
834
+ avg_buy_count_per_token?: number;
835
+ /**
836
+ * First-buy reactivity (seconds after token launch)
837
+ */
838
+ avg_first_buy_reactivity?: number;
839
+ /**
840
+ * Holding time (seconds)
841
+ */
842
+ avg_holding_time?: number;
843
+ avg_realized_profit_30d?: number;
844
+ /**
845
+ * Realized profit per-mint averages / medians. UNIT: lamports
846
+ * (frontend FormattedSol divides by 1e9 on display).
847
+ */
848
+ avg_realized_profit_7d?: number;
849
+ avg_sell_count_per_token?: number;
850
+ buy_30d?: number;
851
+ buy_7d?: number;
852
+ buy_sell_ratio_30d?: number;
853
+ /**
854
+ * Computed ratios
855
+ */
856
+ buy_sell_ratio_7d?: number;
857
+ buy_size_cv?: number;
858
+ /**
859
+ * "sol" | "eth"
860
+ */
861
+ chain?: string;
862
+ created_at?: string;
863
+ daily_profits?: Array<PulsightInternalCoreDomainTraderDailyProfit>;
864
+ didnt_buy_sells_30d?: number;
865
+ /**
866
+ * Uncovered-sell counters for the window (CA migration 000018):
867
+ * sells with no observed buy of the mint / sells exceeding the
868
+ * observed bought balance.
869
+ */
870
+ didnt_buy_sells_7d?: number;
871
+ dust_tx_ratio?: number;
872
+ id?: string;
873
+ is_favorite?: boolean;
874
+ /**
875
+ * Activity
876
+ */
877
+ last_active_timestamp?: number;
878
+ median_buy_count_per_token?: number;
879
+ median_first_buy_reactivity?: number;
880
+ median_holding_time?: number;
881
+ median_realized_profit_30d?: number;
882
+ median_realized_profit_7d?: number;
883
+ median_sell_count_per_token?: number;
884
+ mm_score?: number;
885
+ /**
886
+ * Identifiers / social
887
+ */
888
+ name?: string;
889
+ oldest_trade_at?: number;
890
+ pnl_0x2x_num_30d?: number;
891
+ /**
892
+ * 0x to 2x
893
+ */
894
+ pnl_0x2x_num_7d?: number;
895
+ pnl_2x5x_num_30d?: number;
896
+ /**
897
+ * 2x to 5x
898
+ */
899
+ pnl_2x5x_num_7d?: number;
900
+ pnl_gt5x_num_30d?: number;
901
+ /**
902
+ * > 5x
903
+ */
904
+ pnl_gt5x_num_7d?: number;
905
+ /**
906
+ * PnL distribution buckets — 30d
907
+ */
908
+ pnl_lt_nd5_num_30d?: number;
909
+ /**
910
+ * PnL distribution buckets — 7d
911
+ */
912
+ pnl_lt_nd5_num_7d?: number;
913
+ pnl_nd50x_num_30d?: number;
914
+ /**
915
+ * -5x to 0x
916
+ */
917
+ pnl_nd50x_num_7d?: number;
918
+ pnls?: Array<PulsightInternalCoreDomainTraderPnl>;
919
+ profit_per_trade?: number;
920
+ realized_profit?: number;
921
+ /**
922
+ * 30-day period
923
+ */
924
+ realized_profit_30d?: number;
925
+ /**
926
+ * 7-day period. UNIT for realized_profit_*: lamports.
927
+ */
928
+ realized_profit_7d?: number;
929
+ realized_profit_pnl_30d?: number;
930
+ realized_profit_pnl_7d?: number;
931
+ rebalancing_ratio?: number;
932
+ risk_level?: string;
933
+ /**
934
+ * Risk assessment
935
+ */
936
+ risk_score?: number;
937
+ sell_30d?: number;
938
+ sell_7d?: number;
939
+ /**
940
+ * Balances. UNIT: lamports (BIGINT, held as *float64 for wire
941
+ * compatibility). The field name says "Sol" for historical reasons;
942
+ * the wire convention is lamports because the frontend's
943
+ * FormattedSol component divides by 1e9 itself.
944
+ */
945
+ sol_balance?: number;
946
+ sold_gt_bought_sells_30d?: number;
947
+ sold_gt_bought_sells_7d?: number;
948
+ /**
949
+ * Relations (loaded on demand)
950
+ */
951
+ tags?: Array<PulsightInternalCoreDomainTraderTag>;
952
+ token_num_30d?: number;
953
+ token_num_7d?: number;
954
+ /**
955
+ * Profit stats (all-time). UNIT: lamports (see SolBalance note).
956
+ */
957
+ total_profit?: number;
958
+ total_profit_30d?: number;
959
+ total_profit_7d?: number;
960
+ total_profit_pnl_30d?: number;
961
+ total_profit_pnl_7d?: number;
962
+ total_value?: number;
963
+ total_volume_usd?: number;
964
+ trade_interval_cv?: number;
965
+ /**
966
+ * Market-maker detection
967
+ */
968
+ trade_interval_mean?: number;
969
+ twitter_username?: string;
970
+ unrealized_profit?: number;
971
+ unrealized_profit_30d?: number;
972
+ unrealized_profit_7d?: number;
973
+ unrealized_profit_pnl_30d?: number;
974
+ unrealized_profit_pnl_7d?: number;
975
+ updated_at?: string;
976
+ wallet_address?: string;
977
+ winrate_30d?: number;
978
+ winrate_7d?: number;
979
+ };
980
+
981
+ export type PulsightInternalCorePortsInputApiKeyCreateRequest = {
982
+ expires_at?: string;
983
+ name?: string;
984
+ scopes?: Array<PulsightInternalCoreDomainApikeyScope>;
985
+ };
986
+
987
+ export type PulsightInternalCorePortsInputCreatedApiKey = {
988
+ key?: PulsightInternalCoreDomainApikeyKey;
989
+ plaintext?: string;
990
+ };
991
+
992
+ export type PulsightInternalCorePortsInputFilterCreateRequest = {
993
+ filters?: Array<number>;
994
+ is_default?: boolean;
995
+ name?: string;
996
+ };
997
+
998
+ export type PulsightInternalCorePortsInputFilterUpdateRequest = {
999
+ filters?: Array<number>;
1000
+ is_default?: boolean;
1001
+ name?: string;
1002
+ };
1003
+
1004
+ export type PulsightInternalCorePortsInputPlanLimitsRead = {
1005
+ can_use_tag_event_filters?: boolean;
1006
+ can_view_full_data?: boolean;
1007
+ max_filters?: number;
1008
+ max_webhooks?: number;
1009
+ };
1010
+
1011
+ export type PulsightInternalCorePortsInputSubscriptionInfo = {
1012
+ expires_at?: string;
1013
+ interval?: string;
1014
+ is_active?: boolean;
1015
+ /**
1016
+ * Label/PriceUSD/Interval describe a bespoke ENTERPRISE plan; populated
1017
+ * only for an active TierEnterprise user (from their custom entitlement)
1018
+ * so the plan page can render the negotiated plan instead of a tier card.
1019
+ */
1020
+ label?: string;
1021
+ limits?: PulsightInternalCorePortsInputPlanLimitsRead;
1022
+ price_usd?: number;
1023
+ provider?: string;
1024
+ started_at?: string;
1025
+ status?: string;
1026
+ tier?: PulsightInternalCoreDomainSubscriptionSubscriptionTier;
1027
+ usage?: PulsightInternalCorePortsInputUsageCounts;
1028
+ };
1029
+
1030
+ export type PulsightInternalCorePortsInputUsageCounts = {
1031
+ filters?: number;
1032
+ webhooks?: number;
1033
+ };
1034
+
1035
+ export type PulsightInternalCorePortsInputUserPoolCredits = {
1036
+ /**
1037
+ * tier grant per cycle (the limit)
1038
+ */
1039
+ allowance?: number;
1040
+ /**
1041
+ * total remaining = cycle balance + gift
1042
+ */
1043
+ balance?: number;
1044
+ /**
1045
+ * Gifted is the persistent admin-gift reserve still available. It is
1046
+ * spent down before the cycle allowance and survives tier changes.
1047
+ * Cycle tier balance remaining = Balance − Gifted.
1048
+ */
1049
+ gifted?: number;
1050
+ period_end?: string;
1051
+ period_start?: string;
1052
+ pool?: PulsightInternalCoreDomainCreditPool;
1053
+ /**
1054
+ * Used is the real consumption this cycle (positive), summed from the
1055
+ * ledger — not allowance−balance, which breaks once credits are gifted.
1056
+ */
1057
+ used?: number;
1058
+ };
1059
+
1060
+ export type PulsightInternalCoreUsecasesBacktestBacktestPosition = {
1061
+ cost_basis_sol?: number;
1062
+ exit_value_sol?: number;
1063
+ /**
1064
+ * FinalPriceSol is the last candle mid (SOL/token), for reference next to
1065
+ * the discounted exit value.
1066
+ */
1067
+ final_price_sol?: number;
1068
+ mint?: string;
1069
+ /**
1070
+ * PoolState flags the exit liquidity used to value the position:
1071
+ * "ok" (priced into a live pool), "drained" (pool empty → unrealizable,
1072
+ * ~total loss), or "unknown" (no pool snapshot → valued at raw mid).
1073
+ */
1074
+ pool_state?: string;
1075
+ remaining_tokens?: number;
1076
+ unrealized_pnl_sol?: number;
1077
+ };
1078
+
1079
+ export type PulsightInternalCoreUsecasesBacktestBacktestRecord = {
1080
+ created_at?: string;
1081
+ error?: string;
1082
+ finished_at?: string;
1083
+ id?: string;
1084
+ progress_note?: string;
1085
+ progress_pct?: number;
1086
+ scope?: PulsightInternalCoreUsecasesBacktestTokenScope;
1087
+ started_at?: string;
1088
+ starting_balance_sol?: number;
1089
+ status?: PulsightInternalCoreUsecasesBacktestBacktestStatus;
1090
+ strategy_id?: string;
1091
+ strategy_snapshot?: PulsightInternalCoreDomainStrategyStrategyDef;
1092
+ summary?: PulsightInternalCoreUsecasesBacktestBacktestSummary;
1093
+ target_trader?: string;
1094
+ time_from?: string;
1095
+ time_to?: string;
1096
+ timeframe?: PulsightInternalCoreDomainAggregatorTimeframe;
1097
+ user_id?: string;
1098
+ };
1099
+
1100
+ export type PulsightInternalCoreUsecasesBacktestBacktestRequest = {
1101
+ scope?: PulsightInternalCoreUsecasesBacktestTokenScope;
1102
+ starting_balance_sol?: number;
1103
+ strategy_id?: string;
1104
+ time_range?: PulsightInternalCoreUsecasesBacktestTimeRange;
1105
+ timeframe?: PulsightInternalCoreDomainAggregatorTimeframe;
1106
+ /**
1107
+ * Venue selects the trading venue / chain for the run. Empty ⇒ solana
1108
+ * (back-compat). The runner gates chain-specific strategy nodes against
1109
+ * the venue's capabilities via StrategyDef.ValidateForVenue.
1110
+ */
1111
+ venue?: PulsightInternalCoreDomainStrategyVenueId;
1112
+ };
1113
+
1114
+ export type PulsightInternalCoreUsecasesBacktestBacktestStatus = 'pending' | 'running' | 'done' | 'failed' | 'cancelled';
1115
+
1116
+ export type PulsightInternalCoreUsecasesBacktestBacktestSummary = {
1117
+ ending_balance_sol?: number;
1118
+ fees_paid_sol?: number;
1119
+ /**
1120
+ * HeldPositions is every mint still open at run end — the bags the
1121
+ * strategy never sold, valued at their liquidity-aware exit (see
1122
+ * BacktestPosition). Their UnrealizedPnlSol sums into UnrealizedPnlSol
1123
+ * above. Empty when the strategy closed everything (all "Sold all").
1124
+ * Additive JSONB field — pre-existing rows decode as nil.
1125
+ */
1126
+ held_positions?: Array<PulsightInternalCoreUsecasesBacktestBacktestPosition>;
1127
+ losses?: number;
1128
+ max_drawdown_sol?: number;
1129
+ /**
1130
+ * Price-impact rollups, in percent of mid. "Our*" averages over every
1131
+ * simulated trade that had a pool snapshot; "Target*" averages over the
1132
+ * copy trades that mirrored a target swap 1:1 (same timestamp). Zero when
1133
+ * no trade contributed (e.g. an indicator-only strategy, or a run with no
1134
+ * pool data). Additive JSONB fields — pre-existing rows decode as 0.
1135
+ */
1136
+ our_avg_price_impact_pct?: number;
1137
+ our_median_price_impact_pct?: number;
1138
+ realized_pnl_sol?: number;
1139
+ roi_pct?: number;
1140
+ /**
1141
+ * SimulationAssumptions is free-text notes about which real-world
1142
+ * cost components the simulator did NOT model (route hops, MEV,
1143
+ * partial fills, pre-trade gas estimation, etc.). Rendered
1144
+ * prominently on the result page so users don't read "won 4.2 SOL"
1145
+ * too literally.
1146
+ */
1147
+ simulation_assumptions?: Array<string>;
1148
+ starting_balance_sol?: number;
1149
+ target_avg_price_impact_pct?: number;
1150
+ target_median_price_impact_pct?: number;
1151
+ tips_paid_sol?: number;
1152
+ total_pnl_sol?: number;
1153
+ trades?: number;
1154
+ unrealized_pnl_sol?: number;
1155
+ wins?: number;
1156
+ };
1157
+
1158
+ export type PulsightInternalCoreUsecasesBacktestBacktestTrade = {
1159
+ backtest_id?: string;
1160
+ fee_sol?: number;
1161
+ idx?: number;
1162
+ mint?: string;
1163
+ pool_sol_at_trigger?: number;
1164
+ /**
1165
+ * PriceImpactPct is OUR own price impact on this fill, as a percent of the
1166
+ * mid price (size / pool_sol, the constant-product average-fill premium).
1167
+ * Nil when the engine had no pool snapshot at the tick (impact unknown →
1168
+ * pricing degraded to slippage-only). A buy moves price up, a sell down;
1169
+ * the magnitude is recorded either way.
1170
+ */
1171
+ price_impact_pct?: number;
1172
+ price_per_token?: number;
1173
+ realized_pnl_sol?: number;
1174
+ side?: PulsightInternalCoreUsecasesBacktestSide;
1175
+ sol_amount?: number;
1176
+ source?: PulsightInternalCoreUsecasesBacktestTradeSource;
1177
+ /**
1178
+ * TargetPriceImpactPct is the MIRRORED trader's own price impact on the
1179
+ * swap we copied — set only on copy trades that executed at the same
1180
+ * timestamp as the target (a true 1:1 mirror), where the target's move is
1181
+ * folded into our fill price. Nil for emit trades and delayed copies.
1182
+ */
1183
+ target_price_impact_pct?: number;
1184
+ tip_sol?: number;
1185
+ token_amount?: number;
1186
+ triggering_swap_sig?: string;
1187
+ ts?: string;
1188
+ };
1189
+
1190
+ export type PulsightInternalCoreUsecasesBacktestEventPredicate = {
1191
+ event?: PulsightInternalCoreDomainStrategyEventKind;
1192
+ negate?: boolean;
1193
+ };
1194
+
1195
+ export type PulsightInternalCoreUsecasesBacktestMetricPredicate = {
1196
+ metric?: PulsightInternalCoreUsecasesBacktestSelectionMetric;
1197
+ op?: PulsightInternalCoreDomainStrategyComparisonOp;
1198
+ value?: number;
1199
+ /**
1200
+ * Window — optional trailing window ending at the selection `to`. Ignored
1201
+ * for liquidity_sol (always the latest reserve).
1202
+ */
1203
+ window?: PulsightInternalCoreUsecasesBacktestSelectionMetricWindow;
1204
+ };
1205
+
1206
+ export type PulsightInternalCoreUsecasesBacktestPreviewMarker = {
1207
+ pool_sol_at_trigger?: number;
1208
+ /**
1209
+ * Price is the pessimistic execution price (slippage applied) so
1210
+ * the marker lines up with what a real run would have recorded.
1211
+ */
1212
+ price?: number;
1213
+ side?: PulsightInternalCoreUsecasesBacktestSide;
1214
+ source?: PulsightInternalCoreUsecasesBacktestTradeSource;
1215
+ /**
1216
+ * TS is epoch seconds.
1217
+ */
1218
+ ts?: number;
1219
+ };
1220
+
1221
+ export type PulsightInternalCoreUsecasesBacktestPreviewRequest = {
1222
+ def?: PulsightInternalCoreDomainStrategyStrategyDef;
1223
+ mint?: string;
1224
+ time_range?: PulsightInternalCoreUsecasesBacktestTimeRange;
1225
+ timeframe?: PulsightInternalCoreDomainAggregatorTimeframe;
1226
+ };
1227
+
1228
+ export type PulsightInternalCoreUsecasesBacktestPreviewResponse = {
1229
+ markers?: Array<PulsightInternalCoreUsecasesBacktestPreviewMarker>;
1230
+ simulation_assumptions?: Array<string>;
1231
+ };
1232
+
1233
+ export type PulsightInternalCoreUsecasesBacktestSelectionFilter = {
1234
+ events?: Array<PulsightInternalCoreUsecasesBacktestEventPredicate>;
1235
+ metrics?: Array<PulsightInternalCoreUsecasesBacktestMetricPredicate>;
1236
+ };
1237
+
1238
+ export type PulsightInternalCoreUsecasesBacktestSelectionMetric = 'liquidity_sol' | 'volume_sol' | 'price_change_pct' | 'swap_count';
1239
+
1240
+ export type PulsightInternalCoreUsecasesBacktestSelectionMetricWindow = '5m' | '30m' | '1h' | '6h' | '12h';
1241
+
1242
+ export type PulsightInternalCoreUsecasesBacktestSide = 'buy' | 'sell';
1243
+
1244
+ export type PulsightInternalCoreUsecasesBacktestTimeRange = {
1245
+ from?: string;
1246
+ to?: string;
1247
+ };
1248
+
1249
+ export type PulsightInternalCoreUsecasesBacktestTokenScope = {
1250
+ exclude?: PulsightInternalCoreUsecasesBacktestSelectionFilter;
1251
+ include?: PulsightInternalCoreUsecasesBacktestSelectionFilter;
1252
+ kind?: PulsightInternalCoreUsecasesBacktestTokenScopeKind;
1253
+ /**
1254
+ * MirrorsTraded + TraderTraded + Standalone (cap on selected mints).
1255
+ */
1256
+ max_mints?: number;
1257
+ /**
1258
+ * SingleMint
1259
+ */
1260
+ mint?: string;
1261
+ /**
1262
+ * Mints
1263
+ */
1264
+ mints?: Array<string>;
1265
+ /**
1266
+ * TraderTraded only.
1267
+ */
1268
+ trader?: string;
1269
+ /**
1270
+ * Standalone only — the point-in-time selection window + the
1271
+ * include / exclude ("unselect") predicate filters.
1272
+ */
1273
+ window?: PulsightInternalCoreUsecasesBacktestTimeRange;
1274
+ };
1275
+
1276
+ export type PulsightInternalCoreUsecasesBacktestTokenScopeKind = 'single_mint' | 'mints' | 'mirrors_traded' | 'standalone' | 'trader_traded';
1277
+
1278
+ export type PulsightInternalCoreUsecasesBacktestTradeSource = 'copy_buy' | 'copy_sell' | 'emit_buy' | 'emit_sell';
1279
+
1280
+ export type PulsightInternalCoreUsecasesTraderDailyProfitEntry = {
1281
+ date?: string;
1282
+ total_profit?: number;
1283
+ };
1284
+
1285
+ export type PulsightInternalCoreUsecasesTraderDailyProfitListItem = {
1286
+ buy_amount_usd?: number;
1287
+ created_at?: string;
1288
+ date?: string;
1289
+ id?: string;
1290
+ loss_profit?: number;
1291
+ loss_sells?: number;
1292
+ sell_amount_usd?: number;
1293
+ total_buys?: number;
1294
+ total_profit?: number;
1295
+ total_sells?: number;
1296
+ trader_id?: string;
1297
+ win_profit?: number;
1298
+ win_sells?: number;
1299
+ };
1300
+
1301
+ export type PulsightInternalCoreUsecasesTraderDailyProfitsResult = {
1302
+ items?: Array<PulsightInternalCoreUsecasesTraderDailyProfitListItem>;
1303
+ limit?: number;
1304
+ offset?: number;
1305
+ total?: number;
1306
+ };
1307
+
1308
+ export type PulsightInternalCoreUsecasesTraderPnlSeriesPoint = {
1309
+ day?: string;
1310
+ profit?: number;
1311
+ };
1312
+
1313
+ export type PulsightInternalCoreUsecasesTraderPnlSeriesResult = {
1314
+ points?: Array<PulsightInternalCoreUsecasesTraderPnlSeriesPoint>;
1315
+ window?: string;
1316
+ };
1317
+
1318
+ export type PulsightInternalCoreUsecasesTraderTraderListItem = {
1319
+ active_hours_count?: number;
1320
+ arb_tx_ratio_30d?: number;
1321
+ arb_tx_ratio_7d?: number;
1322
+ avg_buy_count_per_token?: number;
1323
+ avg_first_buy_reactivity?: number;
1324
+ avg_holding_time?: number;
1325
+ avg_realized_profit_30d?: number;
1326
+ avg_realized_profit_7d?: number;
1327
+ avg_sell_count_per_token?: number;
1328
+ behavioral_30d?: PulsightInternalCoreDomainAggregatorTraderBehavioralStats;
1329
+ /**
1330
+ * Behavioral7d / Behavioral30d are the two rows the
1331
+ * "Behavioural" panel toggles between (7d and 30d are the only
1332
+ * supported windows). nil → panel renders its empty state for that
1333
+ * window.
1334
+ */
1335
+ behavioral_7d?: PulsightInternalCoreDomainAggregatorTraderBehavioralStats;
1336
+ buy_30d?: number;
1337
+ buy_7d?: number;
1338
+ buy_sell_ratio_30d?: number;
1339
+ buy_sell_ratio_7d?: number;
1340
+ buy_size_cv?: number;
1341
+ chain?: string;
1342
+ created_at?: string;
1343
+ daily_profit_30d?: Array<PulsightInternalCoreUsecasesTraderDailyProfitEntry>;
1344
+ daily_profit_7d?: Array<PulsightInternalCoreUsecasesTraderDailyProfitEntry>;
1345
+ didnt_buy_sells_30d?: number;
1346
+ /**
1347
+ * Uncovered-sell counters (CA migration 000018): sells with no
1348
+ * observed buy of the mint / sells exceeding the observed bought
1349
+ * balance, scoped to the window.
1350
+ */
1351
+ didnt_buy_sells_7d?: number;
1352
+ dust_tx_ratio?: number;
1353
+ has_avatar?: boolean;
1354
+ /**
1355
+ * HoldingPnlLamports is the wallet's current unrealised PnL across
1356
+ * all open positions, in lamports. Nil when CA has no live price
1357
+ * quote for any of the held mints.
1358
+ */
1359
+ holding_pnl_lamports?: number;
1360
+ id?: string;
1361
+ is_favorite?: boolean;
1362
+ last_active_timestamp?: number;
1363
+ median_buy_count_per_token?: number;
1364
+ median_first_buy_reactivity?: number;
1365
+ median_holding_time?: number;
1366
+ median_realized_profit_30d?: number;
1367
+ median_realized_profit_7d?: number;
1368
+ median_sell_count_per_token?: number;
1369
+ mm_score?: number;
1370
+ name?: string;
1371
+ oldest_trade_at?: number;
1372
+ /**
1373
+ * Periods is one row per canonical UTC-aligned window (1d, 7d, 30d,
1374
+ * all) from CA's `trader_period_stats_for`. Drives the
1375
+ * "Calendar-based UTC windows" panel on the trader-detail page.
1376
+ */
1377
+ periods?: Array<PulsightInternalCoreDomainAggregatorTraderPeriodStatsRow>;
1378
+ pnl_0x_2x_num_30d?: number;
1379
+ pnl_0x_2x_num_7d?: number;
1380
+ pnl_2x_5x_num_30d?: number;
1381
+ pnl_2x_5x_num_7d?: number;
1382
+ /**
1383
+ * PnlDistribution is the 5-bucket realised-PnL distribution for
1384
+ * the request window: [<-50%, -50–0%, 0–2×, 2–5×, >5×]. Nil when
1385
+ * the snapshot wasn't inlined.
1386
+ */
1387
+ pnl_distribution?: Array<number>;
1388
+ pnl_gt_5x_num_30d?: number;
1389
+ pnl_gt_5x_num_7d?: number;
1390
+ pnl_lt_nd5_num_30d?: number;
1391
+ pnl_lt_nd5_num_7d?: number;
1392
+ pnl_nd5_0x_num_30d?: number;
1393
+ pnl_nd5_0x_num_7d?: number;
1394
+ /**
1395
+ * PnlSparkline7d is the 7-day realised-PnL series, oldest first,
1396
+ * expressed in lamports per day on the wire (matches CA's BIGINT
1397
+ * storage and the FormattedSol contract elsewhere). Nil when the
1398
+ * snapshot wasn't inlined.
1399
+ */
1400
+ pnl_sparkline_7d?: Array<number>;
1401
+ profit_per_trade?: number;
1402
+ realized_profit?: number;
1403
+ realized_profit_30d?: number;
1404
+ realized_profit_7d?: number;
1405
+ realized_profit_pnl_30d?: number;
1406
+ realized_profit_pnl_7d?: number;
1407
+ rebalancing_ratio?: number;
1408
+ risk_level?: string;
1409
+ risk_score?: number;
1410
+ sell_30d?: number;
1411
+ sell_7d?: number;
1412
+ sol_balance?: number;
1413
+ sold_gt_bought_sells_30d?: number;
1414
+ sold_gt_bought_sells_7d?: number;
1415
+ tags?: Array<string>;
1416
+ token_num_30d?: number;
1417
+ token_num_7d?: number;
1418
+ /**
1419
+ * TokensCreated / TokensGraduated are the wallet's lifetime
1420
+ * creator-token counts (distinct mints created, and the subset that
1421
+ * graduated). Inlined from the folded snapshot; nil when the snapshot
1422
+ * wasn't inlined. Mirror the creator_tokens_* leaderboard filters.
1423
+ */
1424
+ tokens_created?: number;
1425
+ tokens_graduated?: number;
1426
+ total_profit?: number;
1427
+ total_profit_30d?: number;
1428
+ total_profit_7d?: number;
1429
+ total_profit_pnl_30d?: number;
1430
+ total_profit_pnl_7d?: number;
1431
+ total_value?: number;
1432
+ total_volume_usd?: number;
1433
+ trade_interval_cv?: number;
1434
+ trade_interval_mean?: number;
1435
+ twitter_username?: string;
1436
+ unrealized_profit?: number;
1437
+ unrealized_profit_30d?: number;
1438
+ unrealized_profit_7d?: number;
1439
+ unrealized_profit_pnl_30d?: number;
1440
+ unrealized_profit_pnl_7d?: number;
1441
+ updated_at?: string;
1442
+ wallet_address?: string;
1443
+ winrate_30d?: number;
1444
+ winrate_7d?: number;
1445
+ };
1446
+
1447
+ export type PulsightInternalCoreUsecasesTraderTraderListResult = {
1448
+ items?: Array<PulsightInternalCoreUsecasesTraderTraderListItem>;
1449
+ limit?: number;
1450
+ next_cursor_pubkey?: string;
1451
+ next_cursor_value?: number;
1452
+ offset?: number;
1453
+ total?: number;
1454
+ };
1455
+
1456
+ export type GetBacktestsData = {
1457
+ body?: never;
1458
+ path?: never;
1459
+ query?: {
1460
+ /**
1461
+ * Strategy ID (when called via /api/backtests)
1462
+ */
1463
+ strategy_id?: string;
1464
+ };
1465
+ url: '/api/backtests';
1466
+ };
1467
+
1468
+ export type GetBacktestsErrors = {
1469
+ /**
1470
+ * Bad Request
1471
+ */
1472
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1473
+ };
1474
+
1475
+ export type GetBacktestsError = GetBacktestsErrors[keyof GetBacktestsErrors];
1476
+
1477
+ export type GetBacktestsResponses = {
1478
+ /**
1479
+ * OK
1480
+ */
1481
+ 200: Array<PulsightInternalCoreUsecasesBacktestBacktestRecord>;
1482
+ };
1483
+
1484
+ export type GetBacktestsResponse = GetBacktestsResponses[keyof GetBacktestsResponses];
1485
+
1486
+ export type PostBacktestsData = {
1487
+ /**
1488
+ * Backtest request
1489
+ */
1490
+ body: PulsightInternalCoreUsecasesBacktestBacktestRequest;
1491
+ path?: never;
1492
+ query?: never;
1493
+ url: '/api/backtests';
1494
+ };
1495
+
1496
+ export type PostBacktestsErrors = {
1497
+ /**
1498
+ * Bad Request
1499
+ */
1500
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1501
+ /**
1502
+ * Not Found
1503
+ */
1504
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1505
+ };
1506
+
1507
+ export type PostBacktestsError = PostBacktestsErrors[keyof PostBacktestsErrors];
1508
+
1509
+ export type PostBacktestsResponses = {
1510
+ /**
1511
+ * Accepted
1512
+ */
1513
+ 202: PulsightInternalCoreUsecasesBacktestBacktestRecord;
1514
+ };
1515
+
1516
+ export type PostBacktestsResponse = PostBacktestsResponses[keyof PostBacktestsResponses];
1517
+
1518
+ export type GetBacktestsLimitsData = {
1519
+ body?: never;
1520
+ path?: never;
1521
+ query?: never;
1522
+ url: '/api/backtests/limits';
1523
+ };
1524
+
1525
+ export type GetBacktestsLimitsErrors = {
1526
+ /**
1527
+ * Unauthorized
1528
+ */
1529
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1530
+ };
1531
+
1532
+ export type GetBacktestsLimitsError = GetBacktestsLimitsErrors[keyof GetBacktestsLimitsErrors];
1533
+
1534
+ export type GetBacktestsLimitsResponses = {
1535
+ /**
1536
+ * OK
1537
+ */
1538
+ 200: InternalAdaptersPrimaryHttpHandlerBacktestSettingsResponse;
1539
+ };
1540
+
1541
+ export type GetBacktestsLimitsResponse = GetBacktestsLimitsResponses[keyof GetBacktestsLimitsResponses];
1542
+
1543
+ export type DeleteBacktestsByIdData = {
1544
+ body?: never;
1545
+ path: {
1546
+ /**
1547
+ * Backtest ID
1548
+ */
1549
+ id: string;
1550
+ };
1551
+ query?: never;
1552
+ url: '/api/backtests/{id}';
1553
+ };
1554
+
1555
+ export type DeleteBacktestsByIdResponses = {
1556
+ /**
1557
+ * No Content
1558
+ */
1559
+ 204: void;
1560
+ };
1561
+
1562
+ export type DeleteBacktestsByIdResponse = DeleteBacktestsByIdResponses[keyof DeleteBacktestsByIdResponses];
1563
+
1564
+ export type GetBacktestsByIdData = {
1565
+ body?: never;
1566
+ path: {
1567
+ /**
1568
+ * Backtest ID
1569
+ */
1570
+ id: string;
1571
+ };
1572
+ query?: never;
1573
+ url: '/api/backtests/{id}';
1574
+ };
1575
+
1576
+ export type GetBacktestsByIdErrors = {
1577
+ /**
1578
+ * Not Found
1579
+ */
1580
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1581
+ };
1582
+
1583
+ export type GetBacktestsByIdError = GetBacktestsByIdErrors[keyof GetBacktestsByIdErrors];
1584
+
1585
+ export type GetBacktestsByIdResponses = {
1586
+ /**
1587
+ * OK
1588
+ */
1589
+ 200: PulsightInternalCoreUsecasesBacktestBacktestRecord;
1590
+ };
1591
+
1592
+ export type GetBacktestsByIdResponse = GetBacktestsByIdResponses[keyof GetBacktestsByIdResponses];
1593
+
1594
+ export type GetBacktestsByIdTradesData = {
1595
+ body?: never;
1596
+ path: {
1597
+ /**
1598
+ * Backtest ID
1599
+ */
1600
+ id: string;
1601
+ };
1602
+ query?: {
1603
+ /**
1604
+ * Page size (default 200, max 2000)
1605
+ */
1606
+ limit?: number;
1607
+ /**
1608
+ * Page offset (default 0)
1609
+ */
1610
+ offset?: number;
1611
+ };
1612
+ url: '/api/backtests/{id}/trades';
1613
+ };
1614
+
1615
+ export type GetBacktestsByIdTradesErrors = {
1616
+ /**
1617
+ * Bad Request
1618
+ */
1619
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1620
+ };
1621
+
1622
+ export type GetBacktestsByIdTradesError = GetBacktestsByIdTradesErrors[keyof GetBacktestsByIdTradesErrors];
1623
+
1624
+ export type GetBacktestsByIdTradesResponses = {
1625
+ /**
1626
+ * OK
1627
+ */
1628
+ 200: Array<PulsightInternalCoreUsecasesBacktestBacktestTrade>;
1629
+ };
1630
+
1631
+ export type GetBacktestsByIdTradesResponse = GetBacktestsByIdTradesResponses[keyof GetBacktestsByIdTradesResponses];
1632
+
1633
+ export type GetHealthData = {
1634
+ body?: never;
1635
+ path?: never;
1636
+ query?: never;
1637
+ url: '/api/health';
1638
+ };
1639
+
1640
+ export type GetHealthErrors = {
1641
+ /**
1642
+ * Service Unavailable
1643
+ */
1644
+ 503: {
1645
+ [key: string]: unknown;
1646
+ };
1647
+ };
1648
+
1649
+ export type GetHealthError = GetHealthErrors[keyof GetHealthErrors];
1650
+
1651
+ export type GetHealthResponses = {
1652
+ /**
1653
+ * OK
1654
+ */
1655
+ 200: {
1656
+ [key: string]: unknown;
1657
+ };
1658
+ };
1659
+
1660
+ export type GetHealthResponse = GetHealthResponses[keyof GetHealthResponses];
1661
+
1662
+ export type GetMeApiKeysData = {
1663
+ body?: never;
1664
+ path?: never;
1665
+ query?: never;
1666
+ url: '/api/me/api-keys';
1667
+ };
1668
+
1669
+ export type GetMeApiKeysErrors = {
1670
+ /**
1671
+ * Unauthorized
1672
+ */
1673
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1674
+ /**
1675
+ * Internal Server Error
1676
+ */
1677
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1678
+ };
1679
+
1680
+ export type GetMeApiKeysError = GetMeApiKeysErrors[keyof GetMeApiKeysErrors];
1681
+
1682
+ export type GetMeApiKeysResponses = {
1683
+ /**
1684
+ * OK
1685
+ */
1686
+ 200: Array<PulsightInternalCoreDomainApikeyKey>;
1687
+ };
1688
+
1689
+ export type GetMeApiKeysResponse = GetMeApiKeysResponses[keyof GetMeApiKeysResponses];
1690
+
1691
+ export type PostMeApiKeysData = {
1692
+ /**
1693
+ * Key name, scopes, optional expiry
1694
+ */
1695
+ body: PulsightInternalCorePortsInputApiKeyCreateRequest;
1696
+ path?: never;
1697
+ query?: never;
1698
+ url: '/api/me/api-keys';
1699
+ };
1700
+
1701
+ export type PostMeApiKeysErrors = {
1702
+ /**
1703
+ * Bad Request
1704
+ */
1705
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1706
+ /**
1707
+ * Unauthorized
1708
+ */
1709
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1710
+ /**
1711
+ * api key limit reached for the tier
1712
+ */
1713
+ 403: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1714
+ /**
1715
+ * Internal Server Error
1716
+ */
1717
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1718
+ };
1719
+
1720
+ export type PostMeApiKeysError = PostMeApiKeysErrors[keyof PostMeApiKeysErrors];
1721
+
1722
+ export type PostMeApiKeysResponses = {
1723
+ /**
1724
+ * Created
1725
+ */
1726
+ 201: PulsightInternalCorePortsInputCreatedApiKey;
1727
+ };
1728
+
1729
+ export type PostMeApiKeysResponse = PostMeApiKeysResponses[keyof PostMeApiKeysResponses];
1730
+
1731
+ export type DeleteMeApiKeysByIdData = {
1732
+ body?: never;
1733
+ path: {
1734
+ /**
1735
+ * Key ID (UUID)
1736
+ */
1737
+ id: string;
1738
+ };
1739
+ query?: never;
1740
+ url: '/api/me/api-keys/{id}';
1741
+ };
1742
+
1743
+ export type DeleteMeApiKeysByIdErrors = {
1744
+ /**
1745
+ * Bad Request
1746
+ */
1747
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1748
+ /**
1749
+ * Unauthorized
1750
+ */
1751
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1752
+ /**
1753
+ * Not Found
1754
+ */
1755
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1756
+ /**
1757
+ * Internal Server Error
1758
+ */
1759
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1760
+ };
1761
+
1762
+ export type DeleteMeApiKeysByIdError = DeleteMeApiKeysByIdErrors[keyof DeleteMeApiKeysByIdErrors];
1763
+
1764
+ export type DeleteMeApiKeysByIdResponses = {
1765
+ /**
1766
+ * No Content
1767
+ */
1768
+ 204: void;
1769
+ };
1770
+
1771
+ export type DeleteMeApiKeysByIdResponse = DeleteMeApiKeysByIdResponses[keyof DeleteMeApiKeysByIdResponses];
1772
+
1773
+ export type PatchMeApiKeysByIdData = {
1774
+ /**
1775
+ * New name
1776
+ */
1777
+ body: InternalAdaptersPrimaryHttpHandlerApiKeyRenameRequest;
1778
+ path: {
1779
+ /**
1780
+ * Key ID (UUID)
1781
+ */
1782
+ id: string;
1783
+ };
1784
+ query?: never;
1785
+ url: '/api/me/api-keys/{id}';
1786
+ };
1787
+
1788
+ export type PatchMeApiKeysByIdErrors = {
1789
+ /**
1790
+ * Bad Request
1791
+ */
1792
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1793
+ /**
1794
+ * Unauthorized
1795
+ */
1796
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1797
+ /**
1798
+ * Not Found
1799
+ */
1800
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1801
+ /**
1802
+ * Internal Server Error
1803
+ */
1804
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1805
+ };
1806
+
1807
+ export type PatchMeApiKeysByIdError = PatchMeApiKeysByIdErrors[keyof PatchMeApiKeysByIdErrors];
1808
+
1809
+ export type PatchMeApiKeysByIdResponses = {
1810
+ /**
1811
+ * No Content
1812
+ */
1813
+ 204: void;
1814
+ };
1815
+
1816
+ export type PatchMeApiKeysByIdResponse = PatchMeApiKeysByIdResponses[keyof PatchMeApiKeysByIdResponses];
1817
+
1818
+ export type GetMeCreditsData = {
1819
+ body?: never;
1820
+ path?: never;
1821
+ query?: never;
1822
+ url: '/api/me/credits';
1823
+ };
1824
+
1825
+ export type GetMeCreditsErrors = {
1826
+ /**
1827
+ * Unauthorized
1828
+ */
1829
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1830
+ /**
1831
+ * Internal Server Error
1832
+ */
1833
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1834
+ };
1835
+
1836
+ export type GetMeCreditsError = GetMeCreditsErrors[keyof GetMeCreditsErrors];
1837
+
1838
+ export type GetMeCreditsResponses = {
1839
+ /**
1840
+ * OK
1841
+ */
1842
+ 200: Array<PulsightInternalCorePortsInputUserPoolCredits>;
1843
+ };
1844
+
1845
+ export type GetMeCreditsResponse = GetMeCreditsResponses[keyof GetMeCreditsResponses];
1846
+
1847
+ export type GetMeCreditsLedgerData = {
1848
+ body?: never;
1849
+ path?: never;
1850
+ query?: {
1851
+ /**
1852
+ * Max entries to return (default 50, max 200)
1853
+ */
1854
+ limit?: number;
1855
+ };
1856
+ url: '/api/me/credits/ledger';
1857
+ };
1858
+
1859
+ export type GetMeCreditsLedgerErrors = {
1860
+ /**
1861
+ * Unauthorized
1862
+ */
1863
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1864
+ /**
1865
+ * Internal Server Error
1866
+ */
1867
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1868
+ };
1869
+
1870
+ export type GetMeCreditsLedgerError = GetMeCreditsLedgerErrors[keyof GetMeCreditsLedgerErrors];
1871
+
1872
+ export type GetMeCreditsLedgerResponses = {
1873
+ /**
1874
+ * OK
1875
+ */
1876
+ 200: Array<PulsightInternalCoreDomainCreditTransaction>;
1877
+ };
1878
+
1879
+ export type GetMeCreditsLedgerResponse = GetMeCreditsLedgerResponses[keyof GetMeCreditsLedgerResponses];
1880
+
1881
+ export type GetMintsData = {
1882
+ body?: never;
1883
+ path?: never;
1884
+ query: {
1885
+ /**
1886
+ * Window (1m|5m|1h|24h)
1887
+ */
1888
+ window: string;
1889
+ /**
1890
+ * Mint pubkey prefix or case-insensitive symbol/name substring (lifts the default liquidity floor)
1891
+ */
1892
+ search?: string;
1893
+ /**
1894
+ * trades|traders|recent|volume (others fall back to swap_count)
1895
+ */
1896
+ sort?: string;
1897
+ /**
1898
+ * Restrict to mints traded on any of these DEXes (repeatable)
1899
+ */
1900
+ dex?: Array<string>;
1901
+ /**
1902
+ * Activity-gate lookback hours (1..168, default 24)
1903
+ */
1904
+ hours?: number;
1905
+ /**
1906
+ * Min window pool quote-reserves (liquidity), WSOL lamports. Omitted ⇒ a default ~1 SOL floor hides dust on untargeted browse; pass 0 to disable, or any value to override.
1907
+ */
1908
+ min_pool_sol?: number;
1909
+ /**
1910
+ * Max rows (default 50, max 500)
1911
+ */
1912
+ limit?: number;
1913
+ /**
1914
+ * Pagination offset
1915
+ */
1916
+ offset?: number;
1917
+ };
1918
+ url: '/api/mints';
1919
+ };
1920
+
1921
+ export type GetMintsErrors = {
1922
+ /**
1923
+ * Bad Request
1924
+ */
1925
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1926
+ /**
1927
+ * CREDIT_EXHAUSTED — api credit pool empty (only when credit enforcement is enabled)
1928
+ */
1929
+ 402: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1930
+ /**
1931
+ * Internal Server Error
1932
+ */
1933
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1934
+ };
1935
+
1936
+ export type GetMintsError = GetMintsErrors[keyof GetMintsErrors];
1937
+
1938
+ export type GetMintsResponses = {
1939
+ /**
1940
+ * OK
1941
+ */
1942
+ 200: Array<PulsightInternalCoreDomainAggregatorMintRow>;
1943
+ };
1944
+
1945
+ export type GetMintsResponse = GetMintsResponses[keyof GetMintsResponses];
1946
+
1947
+ export type GetMintsByPubkeyData = {
1948
+ body?: never;
1949
+ path: {
1950
+ /**
1951
+ * Mint pubkey
1952
+ */
1953
+ pubkey: string;
1954
+ };
1955
+ query?: never;
1956
+ url: '/api/mints/{pubkey}';
1957
+ };
1958
+
1959
+ export type GetMintsByPubkeyErrors = {
1960
+ /**
1961
+ * Not Found
1962
+ */
1963
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1964
+ /**
1965
+ * Internal Server Error
1966
+ */
1967
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
1968
+ };
1969
+
1970
+ export type GetMintsByPubkeyError = GetMintsByPubkeyErrors[keyof GetMintsByPubkeyErrors];
1971
+
1972
+ export type GetMintsByPubkeyResponses = {
1973
+ /**
1974
+ * OK
1975
+ */
1976
+ 200: PulsightInternalCoreDomainAggregatorMintRow;
1977
+ };
1978
+
1979
+ export type GetMintsByPubkeyResponse = GetMintsByPubkeyResponses[keyof GetMintsByPubkeyResponses];
1980
+
1981
+ export type GetMintsByPubkeyLpEventsData = {
1982
+ body?: never;
1983
+ path: {
1984
+ /**
1985
+ * Mint pubkey
1986
+ */
1987
+ pubkey: string;
1988
+ };
1989
+ query?: {
1990
+ /**
1991
+ * Filter by op (add|remove|burn)
1992
+ */
1993
+ op?: string;
1994
+ /**
1995
+ * Max rows (default 50, max 200)
1996
+ */
1997
+ limit?: number;
1998
+ };
1999
+ url: '/api/mints/{pubkey}/lp-events';
2000
+ };
2001
+
2002
+ export type GetMintsByPubkeyLpEventsErrors = {
2003
+ /**
2004
+ * Bad Request
2005
+ */
2006
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2007
+ /**
2008
+ * Internal Server Error
2009
+ */
2010
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2011
+ };
2012
+
2013
+ export type GetMintsByPubkeyLpEventsError = GetMintsByPubkeyLpEventsErrors[keyof GetMintsByPubkeyLpEventsErrors];
2014
+
2015
+ export type GetMintsByPubkeyLpEventsResponses = {
2016
+ /**
2017
+ * OK
2018
+ */
2019
+ 200: Array<PulsightInternalCoreDomainAggregatorLpEvent>;
2020
+ };
2021
+
2022
+ export type GetMintsByPubkeyLpEventsResponse = GetMintsByPubkeyLpEventsResponses[keyof GetMintsByPubkeyLpEventsResponses];
2023
+
2024
+ export type GetMintsByPubkeyMarketsData = {
2025
+ body?: never;
2026
+ path: {
2027
+ /**
2028
+ * Mint pubkey
2029
+ */
2030
+ pubkey: string;
2031
+ };
2032
+ query?: {
2033
+ /**
2034
+ * Window (1m|5m|1h|24h|all, default 24h)
2035
+ */
2036
+ window?: string;
2037
+ };
2038
+ url: '/api/mints/{pubkey}/markets';
2039
+ };
2040
+
2041
+ export type GetMintsByPubkeyMarketsErrors = {
2042
+ /**
2043
+ * Bad Request
2044
+ */
2045
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2046
+ /**
2047
+ * Internal Server Error
2048
+ */
2049
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2050
+ };
2051
+
2052
+ export type GetMintsByPubkeyMarketsError = GetMintsByPubkeyMarketsErrors[keyof GetMintsByPubkeyMarketsErrors];
2053
+
2054
+ export type GetMintsByPubkeyMarketsResponses = {
2055
+ /**
2056
+ * OK
2057
+ */
2058
+ 200: Array<PulsightInternalCoreDomainAggregatorMintMarket>;
2059
+ };
2060
+
2061
+ export type GetMintsByPubkeyMarketsResponse = GetMintsByPubkeyMarketsResponses[keyof GetMintsByPubkeyMarketsResponses];
2062
+
2063
+ export type GetMintsByPubkeyMigrationsData = {
2064
+ body?: never;
2065
+ path: {
2066
+ /**
2067
+ * Mint pubkey
2068
+ */
2069
+ pubkey: string;
2070
+ };
2071
+ query?: never;
2072
+ url: '/api/mints/{pubkey}/migrations';
2073
+ };
2074
+
2075
+ export type GetMintsByPubkeyMigrationsErrors = {
2076
+ /**
2077
+ * Bad Request
2078
+ */
2079
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2080
+ /**
2081
+ * Internal Server Error
2082
+ */
2083
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2084
+ };
2085
+
2086
+ export type GetMintsByPubkeyMigrationsError = GetMintsByPubkeyMigrationsErrors[keyof GetMintsByPubkeyMigrationsErrors];
2087
+
2088
+ export type GetMintsByPubkeyMigrationsResponses = {
2089
+ /**
2090
+ * OK
2091
+ */
2092
+ 200: Array<PulsightInternalCoreDomainAggregatorMintMigration>;
2093
+ };
2094
+
2095
+ export type GetMintsByPubkeyMigrationsResponse = GetMintsByPubkeyMigrationsResponses[keyof GetMintsByPubkeyMigrationsResponses];
2096
+
2097
+ export type GetMintsByPubkeySafetyEventsData = {
2098
+ body?: never;
2099
+ path: {
2100
+ /**
2101
+ * Mint pubkey
2102
+ */
2103
+ pubkey: string;
2104
+ };
2105
+ query?: {
2106
+ /**
2107
+ * Filter by kind (burn|mint_to|freeze|thaw|authority_change)
2108
+ */
2109
+ kind?: string;
2110
+ /**
2111
+ * Max rows (default 50, max 500)
2112
+ */
2113
+ limit?: number;
2114
+ };
2115
+ url: '/api/mints/{pubkey}/safety-events';
2116
+ };
2117
+
2118
+ export type GetMintsByPubkeySafetyEventsErrors = {
2119
+ /**
2120
+ * Bad Request
2121
+ */
2122
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2123
+ /**
2124
+ * Internal Server Error
2125
+ */
2126
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2127
+ };
2128
+
2129
+ export type GetMintsByPubkeySafetyEventsError = GetMintsByPubkeySafetyEventsErrors[keyof GetMintsByPubkeySafetyEventsErrors];
2130
+
2131
+ export type GetMintsByPubkeySafetyEventsResponses = {
2132
+ /**
2133
+ * OK
2134
+ */
2135
+ 200: Array<PulsightInternalCoreDomainAggregatorSafetyEvent>;
2136
+ };
2137
+
2138
+ export type GetMintsByPubkeySafetyEventsResponse = GetMintsByPubkeySafetyEventsResponses[keyof GetMintsByPubkeySafetyEventsResponses];
2139
+
2140
+ export type GetMintsByPubkeyStatsData = {
2141
+ body?: never;
2142
+ path: {
2143
+ /**
2144
+ * Mint pubkey
2145
+ */
2146
+ pubkey: string;
2147
+ };
2148
+ query?: never;
2149
+ url: '/api/mints/{pubkey}/stats';
2150
+ };
2151
+
2152
+ export type GetMintsByPubkeyStatsErrors = {
2153
+ /**
2154
+ * Not Found
2155
+ */
2156
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2157
+ /**
2158
+ * Internal Server Error
2159
+ */
2160
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2161
+ };
2162
+
2163
+ export type GetMintsByPubkeyStatsError = GetMintsByPubkeyStatsErrors[keyof GetMintsByPubkeyStatsErrors];
2164
+
2165
+ export type GetMintsByPubkeyStatsResponses = {
2166
+ /**
2167
+ * OK
2168
+ */
2169
+ 200: PulsightInternalCoreDomainAggregatorMintWindowStatsBundle;
2170
+ };
2171
+
2172
+ export type GetMintsByPubkeyStatsResponse = GetMintsByPubkeyStatsResponses[keyof GetMintsByPubkeyStatsResponses];
2173
+
2174
+ export type GetMintsByPubkeyTopHoldersData = {
2175
+ body?: never;
2176
+ path: {
2177
+ /**
2178
+ * Mint pubkey
2179
+ */
2180
+ pubkey: string;
2181
+ };
2182
+ query?: {
2183
+ /**
2184
+ * Sort key (balance|holding_pnl|recent, default balance)
2185
+ */
2186
+ sort?: string;
2187
+ /**
2188
+ * Max rows (default 50, max 500)
2189
+ */
2190
+ limit?: number;
2191
+ /**
2192
+ * Page offset (default 0)
2193
+ */
2194
+ offset?: number;
2195
+ };
2196
+ url: '/api/mints/{pubkey}/top-holders';
2197
+ };
2198
+
2199
+ export type GetMintsByPubkeyTopHoldersErrors = {
2200
+ /**
2201
+ * Bad Request
2202
+ */
2203
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2204
+ /**
2205
+ * Internal Server Error
2206
+ */
2207
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2208
+ };
2209
+
2210
+ export type GetMintsByPubkeyTopHoldersError = GetMintsByPubkeyTopHoldersErrors[keyof GetMintsByPubkeyTopHoldersErrors];
2211
+
2212
+ export type GetMintsByPubkeyTopHoldersResponses = {
2213
+ /**
2214
+ * OK
2215
+ */
2216
+ 200: Array<PulsightInternalCoreDomainAggregatorMintTraderRow>;
2217
+ };
2218
+
2219
+ export type GetMintsByPubkeyTopHoldersResponse = GetMintsByPubkeyTopHoldersResponses[keyof GetMintsByPubkeyTopHoldersResponses];
2220
+
2221
+ export type GetMintsByPubkeyTopTradersData = {
2222
+ body?: never;
2223
+ path: {
2224
+ /**
2225
+ * Mint pubkey
2226
+ */
2227
+ pubkey: string;
2228
+ };
2229
+ query?: {
2230
+ /**
2231
+ * Sort key (pnl|volume|swaps|recent, default pnl)
2232
+ */
2233
+ sort?: string;
2234
+ /**
2235
+ * Max rows (default 50, max 500)
2236
+ */
2237
+ limit?: number;
2238
+ /**
2239
+ * Page offset (default 0)
2240
+ */
2241
+ offset?: number;
2242
+ };
2243
+ url: '/api/mints/{pubkey}/top-traders';
2244
+ };
2245
+
2246
+ export type GetMintsByPubkeyTopTradersErrors = {
2247
+ /**
2248
+ * Bad Request
2249
+ */
2250
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2251
+ /**
2252
+ * Internal Server Error
2253
+ */
2254
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2255
+ };
2256
+
2257
+ export type GetMintsByPubkeyTopTradersError = GetMintsByPubkeyTopTradersErrors[keyof GetMintsByPubkeyTopTradersErrors];
2258
+
2259
+ export type GetMintsByPubkeyTopTradersResponses = {
2260
+ /**
2261
+ * OK
2262
+ */
2263
+ 200: Array<PulsightInternalCoreDomainAggregatorMintTraderRow>;
2264
+ };
2265
+
2266
+ export type GetMintsByPubkeyTopTradersResponse = GetMintsByPubkeyTopTradersResponses[keyof GetMintsByPubkeyTopTradersResponses];
2267
+
2268
+ export type GetMintsByPubkeyTradersByTraderData = {
2269
+ body?: never;
2270
+ path: {
2271
+ /**
2272
+ * Mint pubkey
2273
+ */
2274
+ pubkey: string;
2275
+ /**
2276
+ * Trader wallet pubkey
2277
+ */
2278
+ trader: string;
2279
+ };
2280
+ query?: never;
2281
+ url: '/api/mints/{pubkey}/traders/{trader}';
2282
+ };
2283
+
2284
+ export type GetMintsByPubkeyTradersByTraderErrors = {
2285
+ /**
2286
+ * Bad Request
2287
+ */
2288
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2289
+ /**
2290
+ * Not Found
2291
+ */
2292
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2293
+ /**
2294
+ * Internal Server Error
2295
+ */
2296
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2297
+ };
2298
+
2299
+ export type GetMintsByPubkeyTradersByTraderError = GetMintsByPubkeyTradersByTraderErrors[keyof GetMintsByPubkeyTradersByTraderErrors];
2300
+
2301
+ export type GetMintsByPubkeyTradersByTraderResponses = {
2302
+ /**
2303
+ * OK
2304
+ */
2305
+ 200: PulsightInternalCoreDomainAggregatorMintTraderRow;
2306
+ };
2307
+
2308
+ export type GetMintsByPubkeyTradersByTraderResponse = GetMintsByPubkeyTradersByTraderResponses[keyof GetMintsByPubkeyTradersByTraderResponses];
2309
+
2310
+ export type GetOhlcvData = {
2311
+ body?: never;
2312
+ path?: never;
2313
+ query: {
2314
+ /**
2315
+ * Mint pubkey
2316
+ */
2317
+ mint: string;
2318
+ /**
2319
+ * Timeframe (e.g. 1m, 5m, 1h)
2320
+ */
2321
+ tf: string;
2322
+ /**
2323
+ * Market (pool pubkey) to chart; defaults to the most active pool
2324
+ */
2325
+ pool?: string;
2326
+ /**
2327
+ * Price denomination (native|sol|usd; default native)
2328
+ */
2329
+ quote?: string;
2330
+ /**
2331
+ * Start of window (RFC3339)
2332
+ */
2333
+ from?: string;
2334
+ /**
2335
+ * End of window (RFC3339, exclusive)
2336
+ */
2337
+ to?: string;
2338
+ };
2339
+ url: '/api/ohlcv';
2340
+ };
2341
+
2342
+ export type GetOhlcvErrors = {
2343
+ /**
2344
+ * Bad Request
2345
+ */
2346
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2347
+ /**
2348
+ * CREDIT_EXHAUSTED — api credit pool empty (only when credit enforcement is enabled)
2349
+ */
2350
+ 402: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2351
+ /**
2352
+ * Internal Server Error
2353
+ */
2354
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2355
+ };
2356
+
2357
+ export type GetOhlcvError = GetOhlcvErrors[keyof GetOhlcvErrors];
2358
+
2359
+ export type GetOhlcvResponses = {
2360
+ /**
2361
+ * OK
2362
+ */
2363
+ 200: Array<PulsightInternalCoreDomainAggregatorOhlcvCandle>;
2364
+ };
2365
+
2366
+ export type GetOhlcvResponse = GetOhlcvResponses[keyof GetOhlcvResponses];
2367
+
2368
+ export type GetStrategiesData = {
2369
+ body?: never;
2370
+ path?: never;
2371
+ query?: {
2372
+ /**
2373
+ * Max rows (default 200, max 1000)
2374
+ */
2375
+ limit?: number;
2376
+ /**
2377
+ * Row offset (default 0)
2378
+ */
2379
+ offset?: number;
2380
+ };
2381
+ url: '/api/strategies';
2382
+ };
2383
+
2384
+ export type GetStrategiesErrors = {
2385
+ /**
2386
+ * Bad Request
2387
+ */
2388
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2389
+ /**
2390
+ * Unauthorized
2391
+ */
2392
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2393
+ };
2394
+
2395
+ export type GetStrategiesError = GetStrategiesErrors[keyof GetStrategiesErrors];
2396
+
2397
+ export type GetStrategiesResponses = {
2398
+ /**
2399
+ * OK
2400
+ */
2401
+ 200: Array<PulsightInternalCoreDomainStrategyRecord>;
2402
+ };
2403
+
2404
+ export type GetStrategiesResponse = GetStrategiesResponses[keyof GetStrategiesResponses];
2405
+
2406
+ export type PostStrategiesData = {
2407
+ /**
2408
+ * Strategy config
2409
+ */
2410
+ body: InternalAdaptersPrimaryHttpHandlerStrategyCreateRequest;
2411
+ path?: never;
2412
+ query?: never;
2413
+ url: '/api/strategies';
2414
+ };
2415
+
2416
+ export type PostStrategiesErrors = {
2417
+ /**
2418
+ * Bad Request
2419
+ */
2420
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2421
+ };
2422
+
2423
+ export type PostStrategiesError = PostStrategiesErrors[keyof PostStrategiesErrors];
2424
+
2425
+ export type PostStrategiesResponses = {
2426
+ /**
2427
+ * Created
2428
+ */
2429
+ 201: PulsightInternalCoreDomainStrategyRecord;
2430
+ };
2431
+
2432
+ export type PostStrategiesResponse = PostStrategiesResponses[keyof PostStrategiesResponses];
2433
+
2434
+ export type GetStrategiesDashboardData = {
2435
+ body?: never;
2436
+ path?: never;
2437
+ query?: never;
2438
+ url: '/api/strategies/dashboard';
2439
+ };
2440
+
2441
+ export type GetStrategiesDashboardErrors = {
2442
+ /**
2443
+ * Unauthorized
2444
+ */
2445
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2446
+ };
2447
+
2448
+ export type GetStrategiesDashboardError = GetStrategiesDashboardErrors[keyof GetStrategiesDashboardErrors];
2449
+
2450
+ export type GetStrategiesDashboardResponses = {
2451
+ /**
2452
+ * OK
2453
+ */
2454
+ 200: InternalAdaptersPrimaryHttpHandlerDashboardStats;
2455
+ };
2456
+
2457
+ export type GetStrategiesDashboardResponse = GetStrategiesDashboardResponses[keyof GetStrategiesDashboardResponses];
2458
+
2459
+ export type PostStrategiesPreviewData = {
2460
+ /**
2461
+ * Preview request
2462
+ */
2463
+ body: PulsightInternalCoreUsecasesBacktestPreviewRequest;
2464
+ path?: never;
2465
+ query?: never;
2466
+ url: '/api/strategies/preview';
2467
+ };
2468
+
2469
+ export type PostStrategiesPreviewErrors = {
2470
+ /**
2471
+ * Bad Request
2472
+ */
2473
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2474
+ };
2475
+
2476
+ export type PostStrategiesPreviewError = PostStrategiesPreviewErrors[keyof PostStrategiesPreviewErrors];
2477
+
2478
+ export type PostStrategiesPreviewResponses = {
2479
+ /**
2480
+ * OK
2481
+ */
2482
+ 200: PulsightInternalCoreUsecasesBacktestPreviewResponse;
2483
+ };
2484
+
2485
+ export type PostStrategiesPreviewResponse = PostStrategiesPreviewResponses[keyof PostStrategiesPreviewResponses];
2486
+
2487
+ export type GetStrategiesWithStatsData = {
2488
+ body?: never;
2489
+ path?: never;
2490
+ query?: {
2491
+ /**
2492
+ * Max rows
2493
+ */
2494
+ limit?: number;
2495
+ /**
2496
+ * Row offset
2497
+ */
2498
+ offset?: number;
2499
+ };
2500
+ url: '/api/strategies/with-stats';
2501
+ };
2502
+
2503
+ export type GetStrategiesWithStatsErrors = {
2504
+ /**
2505
+ * Unauthorized
2506
+ */
2507
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2508
+ };
2509
+
2510
+ export type GetStrategiesWithStatsError = GetStrategiesWithStatsErrors[keyof GetStrategiesWithStatsErrors];
2511
+
2512
+ export type GetStrategiesWithStatsResponses = {
2513
+ /**
2514
+ * OK
2515
+ */
2516
+ 200: Array<InternalAdaptersPrimaryHttpHandlerStrategyListItem>;
2517
+ };
2518
+
2519
+ export type GetStrategiesWithStatsResponse = GetStrategiesWithStatsResponses[keyof GetStrategiesWithStatsResponses];
2520
+
2521
+ export type DeleteStrategiesByIdData = {
2522
+ body?: never;
2523
+ path: {
2524
+ /**
2525
+ * Strategy ID
2526
+ */
2527
+ id: string;
2528
+ };
2529
+ query?: never;
2530
+ url: '/api/strategies/{id}';
2531
+ };
2532
+
2533
+ export type DeleteStrategiesByIdErrors = {
2534
+ /**
2535
+ * Bad Request
2536
+ */
2537
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2538
+ };
2539
+
2540
+ export type DeleteStrategiesByIdError = DeleteStrategiesByIdErrors[keyof DeleteStrategiesByIdErrors];
2541
+
2542
+ export type DeleteStrategiesByIdResponses = {
2543
+ /**
2544
+ * No Content
2545
+ */
2546
+ 204: void;
2547
+ };
2548
+
2549
+ export type DeleteStrategiesByIdResponse = DeleteStrategiesByIdResponses[keyof DeleteStrategiesByIdResponses];
2550
+
2551
+ export type GetStrategiesByIdData = {
2552
+ body?: never;
2553
+ path: {
2554
+ /**
2555
+ * Strategy ID
2556
+ */
2557
+ id: string;
2558
+ };
2559
+ query?: never;
2560
+ url: '/api/strategies/{id}';
2561
+ };
2562
+
2563
+ export type GetStrategiesByIdErrors = {
2564
+ /**
2565
+ * Not Found
2566
+ */
2567
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2568
+ };
2569
+
2570
+ export type GetStrategiesByIdError = GetStrategiesByIdErrors[keyof GetStrategiesByIdErrors];
2571
+
2572
+ export type GetStrategiesByIdResponses = {
2573
+ /**
2574
+ * OK
2575
+ */
2576
+ 200: PulsightInternalCoreDomainStrategyRecord;
2577
+ };
2578
+
2579
+ export type GetStrategiesByIdResponse = GetStrategiesByIdResponses[keyof GetStrategiesByIdResponses];
2580
+
2581
+ export type PutStrategiesByIdData = {
2582
+ /**
2583
+ * Strategy def
2584
+ */
2585
+ body: InternalAdaptersPrimaryHttpHandlerStrategyUpdateRequest;
2586
+ path: {
2587
+ /**
2588
+ * Strategy ID
2589
+ */
2590
+ id: string;
2591
+ };
2592
+ query?: never;
2593
+ url: '/api/strategies/{id}';
2594
+ };
2595
+
2596
+ export type PutStrategiesByIdErrors = {
2597
+ /**
2598
+ * Bad Request
2599
+ */
2600
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2601
+ /**
2602
+ * Not Found
2603
+ */
2604
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2605
+ };
2606
+
2607
+ export type PutStrategiesByIdError = PutStrategiesByIdErrors[keyof PutStrategiesByIdErrors];
2608
+
2609
+ export type PutStrategiesByIdResponses = {
2610
+ /**
2611
+ * OK
2612
+ */
2613
+ 200: PulsightInternalCoreDomainStrategyRecord;
2614
+ };
2615
+
2616
+ export type PutStrategiesByIdResponse = PutStrategiesByIdResponses[keyof PutStrategiesByIdResponses];
2617
+
2618
+ export type GetSubscriptionsMeData = {
2619
+ body?: never;
2620
+ path?: never;
2621
+ query?: never;
2622
+ url: '/api/subscriptions/me';
2623
+ };
2624
+
2625
+ export type GetSubscriptionsMeErrors = {
2626
+ /**
2627
+ * Unauthorized
2628
+ */
2629
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2630
+ /**
2631
+ * Internal Server Error
2632
+ */
2633
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2634
+ };
2635
+
2636
+ export type GetSubscriptionsMeError = GetSubscriptionsMeErrors[keyof GetSubscriptionsMeErrors];
2637
+
2638
+ export type GetSubscriptionsMeResponses = {
2639
+ /**
2640
+ * OK
2641
+ */
2642
+ 200: PulsightInternalCorePortsInputSubscriptionInfo;
2643
+ };
2644
+
2645
+ export type GetSubscriptionsMeResponse = GetSubscriptionsMeResponses[keyof GetSubscriptionsMeResponses];
2646
+
2647
+ export type GetSwapsData = {
2648
+ body?: never;
2649
+ path?: never;
2650
+ query?: {
2651
+ /**
2652
+ * Mint pubkey (optional; combinable with trader)
2653
+ */
2654
+ mint?: string;
2655
+ /**
2656
+ * Trader pubkey; repeatable or comma-separated (optional; combinable with mint)
2657
+ */
2658
+ trader?: string;
2659
+ /**
2660
+ * Market (pool pubkey) to scope swaps to (optional)
2661
+ */
2662
+ pool?: string;
2663
+ /**
2664
+ * Start of window (RFC3339)
2665
+ */
2666
+ from?: string;
2667
+ /**
2668
+ * End of window (RFC3339, exclusive)
2669
+ */
2670
+ to?: string;
2671
+ /**
2672
+ * Start of window (Unix epoch seconds)
2673
+ */
2674
+ from_ts?: number;
2675
+ /**
2676
+ * End of window (Unix epoch seconds, exclusive)
2677
+ */
2678
+ to_ts?: number;
2679
+ /**
2680
+ * Cursor: return the latest swaps strictly before this Unix epoch timestamp (no lower bound)
2681
+ */
2682
+ before_ts?: number;
2683
+ /**
2684
+ * Max rows (default 100, max 1000)
2685
+ */
2686
+ limit?: number;
2687
+ };
2688
+ url: '/api/swaps';
2689
+ };
2690
+
2691
+ export type GetSwapsErrors = {
2692
+ /**
2693
+ * Bad Request
2694
+ */
2695
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2696
+ /**
2697
+ * CREDIT_EXHAUSTED — api credit pool empty (only when credit enforcement is enabled)
2698
+ */
2699
+ 402: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2700
+ /**
2701
+ * Internal Server Error
2702
+ */
2703
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2704
+ };
2705
+
2706
+ export type GetSwapsError = GetSwapsErrors[keyof GetSwapsErrors];
2707
+
2708
+ export type GetSwapsResponses = {
2709
+ /**
2710
+ * OK
2711
+ */
2712
+ 200: Array<InternalAdaptersPrimaryHttpHandlerSwapEventRow>;
2713
+ };
2714
+
2715
+ export type GetSwapsResponse = GetSwapsResponses[keyof GetSwapsResponses];
2716
+
2717
+ export type GetTipsGlobalData = {
2718
+ body?: never;
2719
+ path?: never;
2720
+ query?: {
2721
+ /**
2722
+ * Window (30m|1h|12h|1d|7d|30d|all)
2723
+ */
2724
+ window?: string;
2725
+ };
2726
+ url: '/api/tips/global';
2727
+ };
2728
+
2729
+ export type GetTipsGlobalErrors = {
2730
+ /**
2731
+ * Bad Request
2732
+ */
2733
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2734
+ };
2735
+
2736
+ export type GetTipsGlobalError = GetTipsGlobalErrors[keyof GetTipsGlobalErrors];
2737
+
2738
+ export type GetTipsGlobalResponses = {
2739
+ /**
2740
+ * OK
2741
+ */
2742
+ 200: PulsightInternalCoreDomainAggregatorGlobalTipStats;
2743
+ };
2744
+
2745
+ export type GetTipsGlobalResponse = GetTipsGlobalResponses[keyof GetTipsGlobalResponses];
2746
+
2747
+ export type GetTipsHeatmapData = {
2748
+ body?: never;
2749
+ path?: never;
2750
+ query?: {
2751
+ /**
2752
+ * Bucket (1m|5m|10m)
2753
+ */
2754
+ bucket?: string;
2755
+ /**
2756
+ * Horizon hours (1..24)
2757
+ */
2758
+ horizon_hours?: number;
2759
+ };
2760
+ url: '/api/tips/heatmap';
2761
+ };
2762
+
2763
+ export type GetTipsHeatmapErrors = {
2764
+ /**
2765
+ * Bad Request
2766
+ */
2767
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2768
+ };
2769
+
2770
+ export type GetTipsHeatmapError = GetTipsHeatmapErrors[keyof GetTipsHeatmapErrors];
2771
+
2772
+ export type GetTipsHeatmapResponses = {
2773
+ /**
2774
+ * OK
2775
+ */
2776
+ 200: PulsightInternalCoreDomainAggregatorHeatmapResponse;
2777
+ };
2778
+
2779
+ export type GetTipsHeatmapResponse = GetTipsHeatmapResponses[keyof GetTipsHeatmapResponses];
2780
+
2781
+ export type GetTipsLeaderboardJitoEfficiencyData = {
2782
+ body?: never;
2783
+ path?: never;
2784
+ query?: {
2785
+ /**
2786
+ * Window (30m|1h|12h|1d|7d|30d|all)
2787
+ */
2788
+ window?: string;
2789
+ /**
2790
+ * Row cap (1..200, default 50)
2791
+ */
2792
+ limit?: number;
2793
+ };
2794
+ url: '/api/tips/leaderboard/jito-efficiency';
2795
+ };
2796
+
2797
+ export type GetTipsLeaderboardJitoEfficiencyErrors = {
2798
+ /**
2799
+ * Bad Request
2800
+ */
2801
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2802
+ };
2803
+
2804
+ export type GetTipsLeaderboardJitoEfficiencyError = GetTipsLeaderboardJitoEfficiencyErrors[keyof GetTipsLeaderboardJitoEfficiencyErrors];
2805
+
2806
+ export type GetTipsLeaderboardJitoEfficiencyResponses = {
2807
+ /**
2808
+ * OK
2809
+ */
2810
+ 200: Array<PulsightInternalCoreDomainAggregatorJitoEfficiencyRow>;
2811
+ };
2812
+
2813
+ export type GetTipsLeaderboardJitoEfficiencyResponse = GetTipsLeaderboardJitoEfficiencyResponses[keyof GetTipsLeaderboardJitoEfficiencyResponses];
2814
+
2815
+ export type GetTipsMatData = {
2816
+ body?: never;
2817
+ path?: never;
2818
+ query?: {
2819
+ /**
2820
+ * Window (30m|1h|12h|1d|7d|30d|all)
2821
+ */
2822
+ window?: string;
2823
+ };
2824
+ url: '/api/tips/mat';
2825
+ };
2826
+
2827
+ export type GetTipsMatErrors = {
2828
+ /**
2829
+ * Bad Request
2830
+ */
2831
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2832
+ };
2833
+
2834
+ export type GetTipsMatError = GetTipsMatErrors[keyof GetTipsMatErrors];
2835
+
2836
+ export type GetTipsMatResponses = {
2837
+ /**
2838
+ * OK
2839
+ */
2840
+ 200: Array<PulsightInternalCoreDomainAggregatorMatPoint>;
2841
+ };
2842
+
2843
+ export type GetTipsMatResponse = GetTipsMatResponses[keyof GetTipsMatResponses];
2844
+
2845
+ export type GetTipsMevShareData = {
2846
+ body?: never;
2847
+ path?: never;
2848
+ query?: {
2849
+ /**
2850
+ * Window (30m|1h|12h|1d|7d|30d|all)
2851
+ */
2852
+ window?: string;
2853
+ };
2854
+ url: '/api/tips/mev-share';
2855
+ };
2856
+
2857
+ export type GetTipsMevShareErrors = {
2858
+ /**
2859
+ * Bad Request
2860
+ */
2861
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2862
+ };
2863
+
2864
+ export type GetTipsMevShareError = GetTipsMevShareErrors[keyof GetTipsMevShareErrors];
2865
+
2866
+ export type GetTipsMevShareResponses = {
2867
+ /**
2868
+ * OK
2869
+ */
2870
+ 200: Array<PulsightInternalCoreDomainAggregatorMevTipSharePoint>;
2871
+ };
2872
+
2873
+ export type GetTipsMevShareResponse = GetTipsMevShareResponses[keyof GetTipsMevShareResponses];
2874
+
2875
+ export type GetTipsPriorityRatioData = {
2876
+ body?: never;
2877
+ path?: never;
2878
+ query?: {
2879
+ /**
2880
+ * Window (30m|1h|12h|1d|7d|30d|all)
2881
+ */
2882
+ window?: string;
2883
+ };
2884
+ url: '/api/tips/priority-ratio';
2885
+ };
2886
+
2887
+ export type GetTipsPriorityRatioErrors = {
2888
+ /**
2889
+ * Bad Request
2890
+ */
2891
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2892
+ };
2893
+
2894
+ export type GetTipsPriorityRatioError = GetTipsPriorityRatioErrors[keyof GetTipsPriorityRatioErrors];
2895
+
2896
+ export type GetTipsPriorityRatioResponses = {
2897
+ /**
2898
+ * OK
2899
+ */
2900
+ 200: Array<PulsightInternalCoreDomainAggregatorTipPriorityRatioPoint>;
2901
+ };
2902
+
2903
+ export type GetTipsPriorityRatioResponse = GetTipsPriorityRatioResponses[keyof GetTipsPriorityRatioResponses];
2904
+
2905
+ export type GetTipsServicesData = {
2906
+ body?: never;
2907
+ path?: never;
2908
+ query?: {
2909
+ /**
2910
+ * Window (30m|1h|12h|1d|7d|30d|all)
2911
+ */
2912
+ window?: string;
2913
+ };
2914
+ url: '/api/tips/services';
2915
+ };
2916
+
2917
+ export type GetTipsServicesErrors = {
2918
+ /**
2919
+ * Bad Request
2920
+ */
2921
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2922
+ };
2923
+
2924
+ export type GetTipsServicesError = GetTipsServicesErrors[keyof GetTipsServicesErrors];
2925
+
2926
+ export type GetTipsServicesResponses = {
2927
+ /**
2928
+ * OK
2929
+ */
2930
+ 200: Array<PulsightInternalCoreDomainAggregatorServiceDominanceRow>;
2931
+ };
2932
+
2933
+ export type GetTipsServicesResponse = GetTipsServicesResponses[keyof GetTipsServicesResponses];
2934
+
2935
+ export type GetTraderFiltersData = {
2936
+ body?: never;
2937
+ path?: never;
2938
+ query?: never;
2939
+ url: '/api/trader-filters/';
2940
+ };
2941
+
2942
+ export type GetTraderFiltersErrors = {
2943
+ /**
2944
+ * Unauthorized
2945
+ */
2946
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2947
+ /**
2948
+ * Internal Server Error
2949
+ */
2950
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2951
+ };
2952
+
2953
+ export type GetTraderFiltersError = GetTraderFiltersErrors[keyof GetTraderFiltersErrors];
2954
+
2955
+ export type GetTraderFiltersResponses = {
2956
+ /**
2957
+ * OK
2958
+ */
2959
+ 200: Array<PulsightInternalCoreDomainTraderFilter>;
2960
+ };
2961
+
2962
+ export type GetTraderFiltersResponse = GetTraderFiltersResponses[keyof GetTraderFiltersResponses];
2963
+
2964
+ export type PostTraderFiltersData = {
2965
+ /**
2966
+ * Filter preset details
2967
+ */
2968
+ body: PulsightInternalCorePortsInputFilterCreateRequest;
2969
+ path?: never;
2970
+ query?: never;
2971
+ url: '/api/trader-filters/';
2972
+ };
2973
+
2974
+ export type PostTraderFiltersErrors = {
2975
+ /**
2976
+ * Bad Request
2977
+ */
2978
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2979
+ /**
2980
+ * Unauthorized
2981
+ */
2982
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2983
+ /**
2984
+ * Forbidden
2985
+ */
2986
+ 403: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2987
+ /**
2988
+ * Internal Server Error
2989
+ */
2990
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
2991
+ };
2992
+
2993
+ export type PostTraderFiltersError = PostTraderFiltersErrors[keyof PostTraderFiltersErrors];
2994
+
2995
+ export type PostTraderFiltersResponses = {
2996
+ /**
2997
+ * Created
2998
+ */
2999
+ 201: PulsightInternalCoreDomainTraderFilter;
3000
+ };
3001
+
3002
+ export type PostTraderFiltersResponse = PostTraderFiltersResponses[keyof PostTraderFiltersResponses];
3003
+
3004
+ export type DeleteTraderFiltersByIdData = {
3005
+ body?: never;
3006
+ path: {
3007
+ /**
3008
+ * Filter preset ID (UUID)
3009
+ */
3010
+ id: string;
3011
+ };
3012
+ query?: never;
3013
+ url: '/api/trader-filters/{id}';
3014
+ };
3015
+
3016
+ export type DeleteTraderFiltersByIdErrors = {
3017
+ /**
3018
+ * Bad Request
3019
+ */
3020
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3021
+ /**
3022
+ * Unauthorized
3023
+ */
3024
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3025
+ /**
3026
+ * Not Found
3027
+ */
3028
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3029
+ /**
3030
+ * Internal Server Error
3031
+ */
3032
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3033
+ };
3034
+
3035
+ export type DeleteTraderFiltersByIdError = DeleteTraderFiltersByIdErrors[keyof DeleteTraderFiltersByIdErrors];
3036
+
3037
+ export type DeleteTraderFiltersByIdResponses = {
3038
+ /**
3039
+ * No Content
3040
+ */
3041
+ 204: void;
3042
+ };
3043
+
3044
+ export type DeleteTraderFiltersByIdResponse = DeleteTraderFiltersByIdResponses[keyof DeleteTraderFiltersByIdResponses];
3045
+
3046
+ export type GetTraderFiltersByIdData = {
3047
+ body?: never;
3048
+ path: {
3049
+ /**
3050
+ * Filter preset ID (UUID)
3051
+ */
3052
+ id: string;
3053
+ };
3054
+ query?: never;
3055
+ url: '/api/trader-filters/{id}';
3056
+ };
3057
+
3058
+ export type GetTraderFiltersByIdErrors = {
3059
+ /**
3060
+ * Bad Request
3061
+ */
3062
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3063
+ /**
3064
+ * Unauthorized
3065
+ */
3066
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3067
+ /**
3068
+ * Not Found
3069
+ */
3070
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3071
+ /**
3072
+ * Internal Server Error
3073
+ */
3074
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3075
+ };
3076
+
3077
+ export type GetTraderFiltersByIdError = GetTraderFiltersByIdErrors[keyof GetTraderFiltersByIdErrors];
3078
+
3079
+ export type GetTraderFiltersByIdResponses = {
3080
+ /**
3081
+ * OK
3082
+ */
3083
+ 200: PulsightInternalCoreDomainTraderFilter;
3084
+ };
3085
+
3086
+ export type GetTraderFiltersByIdResponse = GetTraderFiltersByIdResponses[keyof GetTraderFiltersByIdResponses];
3087
+
3088
+ export type PutTraderFiltersByIdData = {
3089
+ /**
3090
+ * Updated filter preset
3091
+ */
3092
+ body: PulsightInternalCorePortsInputFilterUpdateRequest;
3093
+ path: {
3094
+ /**
3095
+ * Filter preset ID (UUID)
3096
+ */
3097
+ id: string;
3098
+ };
3099
+ query?: never;
3100
+ url: '/api/trader-filters/{id}';
3101
+ };
3102
+
3103
+ export type PutTraderFiltersByIdErrors = {
3104
+ /**
3105
+ * Bad Request
3106
+ */
3107
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3108
+ /**
3109
+ * Unauthorized
3110
+ */
3111
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3112
+ /**
3113
+ * Not Found
3114
+ */
3115
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3116
+ /**
3117
+ * Internal Server Error
3118
+ */
3119
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3120
+ };
3121
+
3122
+ export type PutTraderFiltersByIdError = PutTraderFiltersByIdErrors[keyof PutTraderFiltersByIdErrors];
3123
+
3124
+ export type PutTraderFiltersByIdResponses = {
3125
+ /**
3126
+ * OK
3127
+ */
3128
+ 200: PulsightInternalCoreDomainTraderFilter;
3129
+ };
3130
+
3131
+ export type PutTraderFiltersByIdResponse = PutTraderFiltersByIdResponses[keyof PutTraderFiltersByIdResponses];
3132
+
3133
+ export type GetTradersData = {
3134
+ body?: never;
3135
+ path?: never;
3136
+ query?: {
3137
+ /**
3138
+ * Limit
3139
+ */
3140
+ limit?: number;
3141
+ /**
3142
+ * Offset
3143
+ */
3144
+ offset?: number;
3145
+ /**
3146
+ * Sort By field
3147
+ */
3148
+ sort_by?: string;
3149
+ /**
3150
+ * Sort Direction
3151
+ */
3152
+ direction?: string;
3153
+ /**
3154
+ * Restrict to the caller's favorited traders (authenticated only)
3155
+ */
3156
+ favorites_only?: boolean;
3157
+ };
3158
+ url: '/api/traders';
3159
+ };
3160
+
3161
+ export type GetTradersErrors = {
3162
+ /**
3163
+ * Bad Request
3164
+ */
3165
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3166
+ /**
3167
+ * Unauthorized
3168
+ */
3169
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3170
+ /**
3171
+ * CREDIT_EXHAUSTED — api credit pool empty (only when credit enforcement is enabled)
3172
+ */
3173
+ 402: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3174
+ /**
3175
+ * Internal Server Error
3176
+ */
3177
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3178
+ };
3179
+
3180
+ export type GetTradersError = GetTradersErrors[keyof GetTradersErrors];
3181
+
3182
+ export type GetTradersResponses = {
3183
+ /**
3184
+ * OK
3185
+ */
3186
+ 200: PulsightInternalCoreUsecasesTraderTraderListResult;
3187
+ };
3188
+
3189
+ export type GetTradersResponse = GetTradersResponses[keyof GetTradersResponses];
3190
+
3191
+ export type GetTradersByIdByTraderIdData = {
3192
+ body?: never;
3193
+ path: {
3194
+ /**
3195
+ * Trader ID
3196
+ */
3197
+ traderID: string;
3198
+ };
3199
+ query?: never;
3200
+ url: '/api/traders/by-id/{traderID}';
3201
+ };
3202
+
3203
+ export type GetTradersByIdByTraderIdErrors = {
3204
+ /**
3205
+ * Bad Request
3206
+ */
3207
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3208
+ /**
3209
+ * Unauthorized
3210
+ */
3211
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3212
+ /**
3213
+ * Not Found
3214
+ */
3215
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3216
+ /**
3217
+ * Internal Server Error
3218
+ */
3219
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3220
+ };
3221
+
3222
+ export type GetTradersByIdByTraderIdError = GetTradersByIdByTraderIdErrors[keyof GetTradersByIdByTraderIdErrors];
3223
+
3224
+ export type GetTradersByIdByTraderIdResponses = {
3225
+ /**
3226
+ * OK
3227
+ */
3228
+ 200: PulsightInternalCoreUsecasesTraderTraderListItem;
3229
+ };
3230
+
3231
+ export type GetTradersByIdByTraderIdResponse = GetTradersByIdByTraderIdResponses[keyof GetTradersByIdByTraderIdResponses];
3232
+
3233
+ export type GetTradersByWalletByWalletAddressData = {
3234
+ body?: never;
3235
+ path: {
3236
+ /**
3237
+ * Wallet Address
3238
+ */
3239
+ walletAddress: string;
3240
+ };
3241
+ query?: never;
3242
+ url: '/api/traders/by-wallet/{walletAddress}';
3243
+ };
3244
+
3245
+ export type GetTradersByWalletByWalletAddressErrors = {
3246
+ /**
3247
+ * Unauthorized
3248
+ */
3249
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3250
+ /**
3251
+ * Not Found
3252
+ */
3253
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3254
+ /**
3255
+ * Internal Server Error
3256
+ */
3257
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3258
+ };
3259
+
3260
+ export type GetTradersByWalletByWalletAddressError = GetTradersByWalletByWalletAddressErrors[keyof GetTradersByWalletByWalletAddressErrors];
3261
+
3262
+ export type GetTradersByWalletByWalletAddressResponses = {
3263
+ /**
3264
+ * OK
3265
+ */
3266
+ 200: PulsightInternalCoreUsecasesTraderTraderListItem;
3267
+ };
3268
+
3269
+ export type GetTradersByWalletByWalletAddressResponse = GetTradersByWalletByWalletAddressResponses[keyof GetTradersByWalletByWalletAddressResponses];
3270
+
3271
+ export type PostTradersExportData = {
3272
+ /**
3273
+ * Export Filter Details
3274
+ */
3275
+ body: InternalAdaptersPrimaryHttpHandlerTraderExportRequest;
3276
+ path?: never;
3277
+ query?: never;
3278
+ url: '/api/traders/export';
3279
+ };
3280
+
3281
+ export type PostTradersExportErrors = {
3282
+ /**
3283
+ * Bad Request
3284
+ */
3285
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3286
+ /**
3287
+ * Unauthorized
3288
+ */
3289
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3290
+ /**
3291
+ * CREDIT_EXHAUSTED — api credit pool empty (only when credit enforcement is enabled)
3292
+ */
3293
+ 402: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3294
+ /**
3295
+ * Internal Server Error
3296
+ */
3297
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3298
+ };
3299
+
3300
+ export type PostTradersExportError = PostTradersExportErrors[keyof PostTradersExportErrors];
3301
+
3302
+ export type PostTradersExportResponses = {
3303
+ /**
3304
+ * OK
3305
+ */
3306
+ 200: Array<PulsightInternalCoreDomainTraderTrader>;
3307
+ };
3308
+
3309
+ export type PostTradersExportResponse = PostTradersExportResponses[keyof PostTradersExportResponses];
3310
+
3311
+ export type GetTradersSearchData = {
3312
+ body?: never;
3313
+ path?: never;
3314
+ query?: {
3315
+ /**
3316
+ * Search query
3317
+ */
3318
+ q?: string;
3319
+ /**
3320
+ * Blockchain filter — only 'sol' is accepted post roadmap subtask 2.6 (BSC removed). Empty defaults to 'sol'.
3321
+ */
3322
+ chain?: string;
3323
+ /**
3324
+ * Limit
3325
+ */
3326
+ limit?: number;
3327
+ };
3328
+ url: '/api/traders/search';
3329
+ };
3330
+
3331
+ export type GetTradersSearchErrors = {
3332
+ /**
3333
+ * Bad Request
3334
+ */
3335
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3336
+ /**
3337
+ * Unauthorized
3338
+ */
3339
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3340
+ /**
3341
+ * Internal Server Error
3342
+ */
3343
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3344
+ };
3345
+
3346
+ export type GetTradersSearchError = GetTradersSearchErrors[keyof GetTradersSearchErrors];
3347
+
3348
+ export type GetTradersSearchResponses = {
3349
+ /**
3350
+ * OK
3351
+ */
3352
+ 200: Array<PulsightInternalCoreDomainTraderTrader>;
3353
+ };
3354
+
3355
+ export type GetTradersSearchResponse = GetTradersSearchResponses[keyof GetTradersSearchResponses];
3356
+
3357
+ export type GetTradersSnapshotData = {
3358
+ body?: never;
3359
+ path?: never;
3360
+ query: {
3361
+ /**
3362
+ * Comma-separated wallet addresses
3363
+ */
3364
+ traders: string;
3365
+ /**
3366
+ * Window label (7d|30d)
3367
+ */
3368
+ window?: string;
3369
+ };
3370
+ url: '/api/traders/snapshot';
3371
+ };
3372
+
3373
+ export type GetTradersSnapshotErrors = {
3374
+ /**
3375
+ * Unauthorized
3376
+ */
3377
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3378
+ };
3379
+
3380
+ export type GetTradersSnapshotError = GetTradersSnapshotErrors[keyof GetTradersSnapshotErrors];
3381
+
3382
+ export type GetTradersSnapshotResponses = {
3383
+ /**
3384
+ * OK
3385
+ */
3386
+ 200: InternalAdaptersPrimaryHttpHandlerSnapshotResponse;
3387
+ };
3388
+
3389
+ export type GetTradersSnapshotResponse = GetTradersSnapshotResponses[keyof GetTradersSnapshotResponses];
3390
+
3391
+ export type GetTradersByTraderIdDailyProfitsData = {
3392
+ body?: never;
3393
+ path: {
3394
+ /**
3395
+ * Trader ID
3396
+ */
3397
+ traderID: string;
3398
+ };
3399
+ query?: {
3400
+ /**
3401
+ * Limit (1..200)
3402
+ */
3403
+ limit?: number;
3404
+ /**
3405
+ * Offset
3406
+ */
3407
+ offset?: number;
3408
+ /**
3409
+ * Inclusive lower bound, YYYY-MM-DD
3410
+ */
3411
+ from_date?: string;
3412
+ /**
3413
+ * Inclusive upper bound, YYYY-MM-DD
3414
+ */
3415
+ to_date?: string;
3416
+ /**
3417
+ * Sort column
3418
+ */
3419
+ sort_by?: string;
3420
+ /**
3421
+ * asc | desc
3422
+ */
3423
+ direction?: string;
3424
+ };
3425
+ url: '/api/traders/{traderID}/daily-profits';
3426
+ };
3427
+
3428
+ export type GetTradersByTraderIdDailyProfitsErrors = {
3429
+ /**
3430
+ * Bad Request
3431
+ */
3432
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3433
+ /**
3434
+ * Not Found
3435
+ */
3436
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3437
+ /**
3438
+ * Internal Server Error
3439
+ */
3440
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3441
+ };
3442
+
3443
+ export type GetTradersByTraderIdDailyProfitsError = GetTradersByTraderIdDailyProfitsErrors[keyof GetTradersByTraderIdDailyProfitsErrors];
3444
+
3445
+ export type GetTradersByTraderIdDailyProfitsResponses = {
3446
+ /**
3447
+ * OK
3448
+ */
3449
+ 200: PulsightInternalCoreUsecasesTraderDailyProfitsResult;
3450
+ };
3451
+
3452
+ export type GetTradersByTraderIdDailyProfitsResponse = GetTradersByTraderIdDailyProfitsResponses[keyof GetTradersByTraderIdDailyProfitsResponses];
3453
+
3454
+ export type GetTradersByTraderIdPnlsData = {
3455
+ body?: never;
3456
+ path: {
3457
+ /**
3458
+ * Trader ID
3459
+ */
3460
+ traderID: string;
3461
+ };
3462
+ query?: {
3463
+ /**
3464
+ * Search by token address or symbol
3465
+ */
3466
+ token_search?: string;
3467
+ /**
3468
+ * Limit
3469
+ */
3470
+ limit?: number;
3471
+ /**
3472
+ * Offset
3473
+ */
3474
+ offset?: number;
3475
+ /**
3476
+ * Sort By field
3477
+ */
3478
+ sort_by?: string;
3479
+ /**
3480
+ * Sort Direction
3481
+ */
3482
+ direction?: string;
3483
+ };
3484
+ url: '/api/traders/{traderID}/pnls';
3485
+ };
3486
+
3487
+ export type GetTradersByTraderIdPnlsErrors = {
3488
+ /**
3489
+ * Bad Request
3490
+ */
3491
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3492
+ /**
3493
+ * Internal Server Error
3494
+ */
3495
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3496
+ };
3497
+
3498
+ export type GetTradersByTraderIdPnlsError = GetTradersByTraderIdPnlsErrors[keyof GetTradersByTraderIdPnlsErrors];
3499
+
3500
+ export type GetTradersByTraderIdPnlsResponses = {
3501
+ /**
3502
+ * OK
3503
+ */
3504
+ 200: InternalAdaptersPrimaryHttpHandlerPaginatedPnls;
3505
+ };
3506
+
3507
+ export type GetTradersByTraderIdPnlsResponse = GetTradersByTraderIdPnlsResponses[keyof GetTradersByTraderIdPnlsResponses];
3508
+
3509
+ export type GetTradersByWalletAddressCreatedTokensData = {
3510
+ body?: never;
3511
+ path: {
3512
+ /**
3513
+ * Wallet Address
3514
+ */
3515
+ walletAddress: string;
3516
+ };
3517
+ query?: {
3518
+ /**
3519
+ * Max rows (default 100, max 500)
3520
+ */
3521
+ limit?: number;
3522
+ /**
3523
+ * Page offset
3524
+ */
3525
+ offset?: number;
3526
+ };
3527
+ url: '/api/traders/{walletAddress}/created-tokens';
3528
+ };
3529
+
3530
+ export type GetTradersByWalletAddressCreatedTokensErrors = {
3531
+ /**
3532
+ * Unauthorized
3533
+ */
3534
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3535
+ /**
3536
+ * Internal Server Error
3537
+ */
3538
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3539
+ };
3540
+
3541
+ export type GetTradersByWalletAddressCreatedTokensError = GetTradersByWalletAddressCreatedTokensErrors[keyof GetTradersByWalletAddressCreatedTokensErrors];
3542
+
3543
+ export type GetTradersByWalletAddressCreatedTokensResponses = {
3544
+ /**
3545
+ * OK
3546
+ */
3547
+ 200: Array<PulsightInternalCoreDomainAggregatorCreatedMintRow>;
3548
+ };
3549
+
3550
+ export type GetTradersByWalletAddressCreatedTokensResponse = GetTradersByWalletAddressCreatedTokensResponses[keyof GetTradersByWalletAddressCreatedTokensResponses];
3551
+
3552
+ export type GetTradersByWalletAddressPnlSeriesData = {
3553
+ body?: never;
3554
+ path: {
3555
+ /**
3556
+ * Wallet Address
3557
+ */
3558
+ walletAddress: string;
3559
+ };
3560
+ query?: {
3561
+ /**
3562
+ * Time window
3563
+ */
3564
+ window?: '1d' | '7d' | '30d' | 'all';
3565
+ };
3566
+ url: '/api/traders/{walletAddress}/pnl-series';
3567
+ };
3568
+
3569
+ export type GetTradersByWalletAddressPnlSeriesErrors = {
3570
+ /**
3571
+ * Bad Request
3572
+ */
3573
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3574
+ /**
3575
+ * Unauthorized
3576
+ */
3577
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3578
+ /**
3579
+ * Internal Server Error
3580
+ */
3581
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3582
+ };
3583
+
3584
+ export type GetTradersByWalletAddressPnlSeriesError = GetTradersByWalletAddressPnlSeriesErrors[keyof GetTradersByWalletAddressPnlSeriesErrors];
3585
+
3586
+ export type GetTradersByWalletAddressPnlSeriesResponses = {
3587
+ /**
3588
+ * OK
3589
+ */
3590
+ 200: PulsightInternalCoreUsecasesTraderPnlSeriesResult;
3591
+ };
3592
+
3593
+ export type GetTradersByWalletAddressPnlSeriesResponse = GetTradersByWalletAddressPnlSeriesResponses[keyof GetTradersByWalletAddressPnlSeriesResponses];
3594
+
3595
+ export type GetTradersByWalletAddressTipsData = {
3596
+ body?: never;
3597
+ path: {
3598
+ /**
3599
+ * Wallet address
3600
+ */
3601
+ walletAddress: string;
3602
+ };
3603
+ query?: {
3604
+ /**
3605
+ * Window (1d|7d|30d|all)
3606
+ */
3607
+ window?: string;
3608
+ };
3609
+ url: '/api/traders/{walletAddress}/tips';
3610
+ };
3611
+
3612
+ export type GetTradersByWalletAddressTipsErrors = {
3613
+ /**
3614
+ * Bad Request
3615
+ */
3616
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3617
+ /**
3618
+ * Unauthorized
3619
+ */
3620
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3621
+ /**
3622
+ * Not Found
3623
+ */
3624
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3625
+ /**
3626
+ * Internal Server Error
3627
+ */
3628
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3629
+ };
3630
+
3631
+ export type GetTradersByWalletAddressTipsError = GetTradersByWalletAddressTipsErrors[keyof GetTradersByWalletAddressTipsErrors];
3632
+
3633
+ export type GetTradersByWalletAddressTipsResponses = {
3634
+ /**
3635
+ * OK
3636
+ */
3637
+ 200: InternalAdaptersPrimaryHttpHandlerTraderTipStatsResponse;
3638
+ };
3639
+
3640
+ export type GetTradersByWalletAddressTipsResponse = GetTradersByWalletAddressTipsResponses[keyof GetTradersByWalletAddressTipsResponses];
3641
+
3642
+ export type GetTradersByWalletAddressTipsServicesData = {
3643
+ body?: never;
3644
+ path: {
3645
+ /**
3646
+ * Wallet address
3647
+ */
3648
+ walletAddress: string;
3649
+ };
3650
+ query?: {
3651
+ /**
3652
+ * Window (1d|7d|30d|all)
3653
+ */
3654
+ window?: string;
3655
+ };
3656
+ url: '/api/traders/{walletAddress}/tips/services';
3657
+ };
3658
+
3659
+ export type GetTradersByWalletAddressTipsServicesErrors = {
3660
+ /**
3661
+ * Bad Request
3662
+ */
3663
+ 400: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3664
+ /**
3665
+ * Unauthorized
3666
+ */
3667
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3668
+ /**
3669
+ * Internal Server Error
3670
+ */
3671
+ 500: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3672
+ };
3673
+
3674
+ export type GetTradersByWalletAddressTipsServicesError = GetTradersByWalletAddressTipsServicesErrors[keyof GetTradersByWalletAddressTipsServicesErrors];
3675
+
3676
+ export type GetTradersByWalletAddressTipsServicesResponses = {
3677
+ /**
3678
+ * OK
3679
+ */
3680
+ 200: Array<InternalAdaptersPrimaryHttpHandlerServiceLoyaltyRow>;
3681
+ };
3682
+
3683
+ export type GetTradersByWalletAddressTipsServicesResponse = GetTradersByWalletAddressTipsServicesResponses[keyof GetTradersByWalletAddressTipsServicesResponses];
3684
+
3685
+ export type GetTradersByWalletAddressTokensData = {
3686
+ body?: never;
3687
+ path: {
3688
+ /**
3689
+ * Wallet address
3690
+ */
3691
+ walletAddress: string;
3692
+ };
3693
+ query?: {
3694
+ /**
3695
+ * Sort key (profit|invested|balance|recent)
3696
+ */
3697
+ sort?: string;
3698
+ /**
3699
+ * Limit
3700
+ */
3701
+ limit?: number;
3702
+ /**
3703
+ * Offset
3704
+ */
3705
+ offset?: number;
3706
+ };
3707
+ url: '/api/traders/{walletAddress}/tokens';
3708
+ };
3709
+
3710
+ export type GetTradersByWalletAddressTokensErrors = {
3711
+ /**
3712
+ * Unauthorized
3713
+ */
3714
+ 401: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3715
+ /**
3716
+ * Not Found
3717
+ */
3718
+ 404: InternalAdaptersPrimaryHttpHandlerErrorResponse;
3719
+ };
3720
+
3721
+ export type GetTradersByWalletAddressTokensError = GetTradersByWalletAddressTokensErrors[keyof GetTradersByWalletAddressTokensErrors];
3722
+
3723
+ export type GetTradersByWalletAddressTokensResponses = {
3724
+ /**
3725
+ * OK
3726
+ */
3727
+ 200: Array<InternalAdaptersPrimaryHttpHandlerTokensRow>;
3728
+ };
3729
+
3730
+ export type GetTradersByWalletAddressTokensResponse = GetTradersByWalletAddressTokensResponses[keyof GetTradersByWalletAddressTokensResponses];