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