@structbuild/sdk 0.5.11 → 0.6.1

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.
@@ -157,6 +157,77 @@ export interface components {
157
157
  * @enum {string}
158
158
  */
159
159
  AssetWindowFilterTimeframe: "5m" | "15m" | "1h" | "4h" | "1d" | "24h";
160
+ /** @description Category PnL webhook payload. */
161
+ CategoryPnlPayload: {
162
+ trader?: string | null;
163
+ category?: string | null;
164
+ /** @description Aggregation timeframe: "1d", "7d", "30d", or "lifetime" */
165
+ timeframe: string;
166
+ /** Format: double */
167
+ realized_pnl_usd?: number | null;
168
+ /** Format: int64 */
169
+ markets_in_category?: number | null;
170
+ /** Format: int64 */
171
+ markets_traded?: number | null;
172
+ /** Format: int64 */
173
+ outcomes_traded?: number | null;
174
+ /** Format: int64 */
175
+ total_buys?: number | null;
176
+ /** Format: int64 */
177
+ total_sells?: number | null;
178
+ /** Format: int64 */
179
+ total_redemptions?: number | null;
180
+ /** Format: int64 */
181
+ total_merges?: number | null;
182
+ /** Format: int64 */
183
+ total_splits?: number | null;
184
+ /** Format: double */
185
+ total_volume_usd?: number | null;
186
+ /** Format: double */
187
+ buy_usd?: number | null;
188
+ /** Format: double */
189
+ sell_usd?: number | null;
190
+ /** Format: double */
191
+ redemption_usd?: number | null;
192
+ /** Format: double */
193
+ merge_usd?: number | null;
194
+ /** Format: double */
195
+ convert_collateral_usd?: number | null;
196
+ /** Format: double */
197
+ split_volume_usd?: number | null;
198
+ /** Format: double */
199
+ total_fees?: number | null;
200
+ /** Format: double */
201
+ total_shares_bought?: number | null;
202
+ /** Format: int64 */
203
+ markets_won?: number | null;
204
+ /** Format: int64 */
205
+ markets_lost?: number | null;
206
+ /** Format: double */
207
+ market_win_rate_pct?: number | null;
208
+ /** Format: double */
209
+ avg_hold_time_seconds?: number | null;
210
+ /** Format: double */
211
+ best_trade_pnl_usd?: number | null;
212
+ best_trade_condition_id?: string | null;
213
+ /** Format: double */
214
+ worst_trade_pnl_usd?: number | null;
215
+ worst_trade_condition_id?: string | null;
216
+ /** Format: double */
217
+ total_wins_usd?: number | null;
218
+ /** Format: double */
219
+ total_losses_usd?: number | null;
220
+ /** Format: double */
221
+ avg_win_usd?: number | null;
222
+ /** Format: double */
223
+ avg_loss_usd?: number | null;
224
+ /** Format: double */
225
+ profit_factor?: number | null;
226
+ /** Format: int64 */
227
+ first_trade_at?: number | null;
228
+ /** Format: int64 */
229
+ last_trade_at?: number | null;
230
+ };
160
231
  /**
161
232
  * @description Subscription filters for the `close_to_bond` event. At least one of
162
233
  * `min_probability` or `max_probability` is required (enforced at runtime).
@@ -257,6 +328,18 @@ export interface components {
257
328
  */
258
329
  threshold: number;
259
330
  };
331
+ ConditionHolderMetricsFilters: {
332
+ condition_ids?: string[];
333
+ };
334
+ ConditionHolderMetricsPayload: {
335
+ /** Format: int32 */
336
+ ts: number;
337
+ /** Format: int64 */
338
+ block: number;
339
+ condition_id: string;
340
+ /** Format: int32 */
341
+ holder_count: number;
342
+ };
260
343
  /** @description Payload delivered when a market's volume or transaction metrics cross a configured threshold */
261
344
  ConditionMetricsPayload: {
262
345
  /** @description Market condition ID */
@@ -363,6 +446,25 @@ export interface components {
363
446
  DeleteWebhookResponse: {
364
447
  deleted: boolean;
365
448
  };
449
+ /**
450
+ * @description What triggered a position update. Each value is serialised as a
451
+ * lowercase string in the `dirty_kinds` array on every payload, and
452
+ * the same values are accepted as a subscribe-time filter on rooms
453
+ * that expose one.
454
+ *
455
+ * * `trade` — a buy, sell, merge, split, redemption, or NegRisk
456
+ * convert landed for the position
457
+ * * `price` — the outcome price moved (mark-to-market refresh)
458
+ * * `window` — a 1d / 7d / 30d rolling window boundary was crossed
459
+ * * `position_resolved` — the market that owns this position resolved
460
+ * on this update
461
+ * * `market_resolved` — the market itself resolved (stamped on
462
+ * `MarketRollup` rows for lifetime holders who never redeemed).
463
+ * Carried on the resolution tick stream and on any full-row update
464
+ * that bundles a resolution with a trade.
465
+ * @enum {string}
466
+ */
467
+ DirtyKind: "trade" | "price" | "window" | "position_resolved" | "market_resolved";
366
468
  /** @description V2 UMA OOv2: a proposed price was disputed. */
367
469
  DisputePriceEvent: {
368
470
  id: string;
@@ -393,6 +495,18 @@ export interface components {
393
495
  slug?: string | null;
394
496
  event_slug?: string | null;
395
497
  };
498
+ EventHolderMetricsFilters: {
499
+ event_slugs?: string[];
500
+ };
501
+ EventHolderMetricsPayload: {
502
+ /** Format: int32 */
503
+ ts: number;
504
+ /** Format: int64 */
505
+ block: number;
506
+ event_slug: string;
507
+ /** Format: int32 */
508
+ holder_count: number;
509
+ };
396
510
  /** @description Subscription filters for the `event_metrics` event. All fields are optional. */
397
511
  EventMetricsFilters: {
398
512
  /** @description Restrict to these events. Empty = all events. */
@@ -482,47 +596,6 @@ export interface components {
482
596
  */
483
597
  unique_builder_traders?: number | null;
484
598
  };
485
- /** @description Event PnL webhook payload. */
486
- EventPnlPayload: {
487
- trader?: string | null;
488
- event_slug?: string | null;
489
- /** @description Aggregation timeframe: "1d", "7d", "30d", or "lifetime" */
490
- timeframe: string;
491
- /** Format: int64 */
492
- markets_traded?: number | null;
493
- /** Format: int64 */
494
- outcomes_traded?: number | null;
495
- /** Format: int64 */
496
- total_buys?: number | null;
497
- /** Format: int64 */
498
- total_sells?: number | null;
499
- /** Format: int64 */
500
- total_redemptions?: number | null;
501
- /** Format: int64 */
502
- total_merges?: number | null;
503
- /** Format: double */
504
- total_volume_usd?: number | null;
505
- /** Format: double */
506
- buy_usd?: number | null;
507
- /** Format: double */
508
- sell_usd?: number | null;
509
- /** Format: double */
510
- redemption_usd?: number | null;
511
- /** Format: double */
512
- merge_usd?: number | null;
513
- /** Format: double */
514
- realized_pnl_usd?: number | null;
515
- /** Format: int64 */
516
- winning_markets?: number | null;
517
- /** Format: int64 */
518
- losing_markets?: number | null;
519
- /** Format: double */
520
- total_fees?: number | null;
521
- /** Format: int64 */
522
- first_trade_at?: number | null;
523
- /** Format: int64 */
524
- last_trade_at?: number | null;
525
- };
526
599
  /** @description Subscription filters for the `event_volume_milestone` event. */
527
600
  EventVolumeMilestoneFilters: {
528
601
  /** @description **Required.** Aggregation windows to monitor. */
@@ -615,6 +688,35 @@ export interface components {
615
688
  */
616
689
  fees: number;
617
690
  };
691
+ /** @description Exit Markers webhook payload — one position open->closed transition. */
692
+ ExitMarkersPayload: {
693
+ trader: string;
694
+ position_id: string;
695
+ condition_id: string;
696
+ event_slug: string;
697
+ market_slug: string;
698
+ title: string;
699
+ question: string;
700
+ image_url: string;
701
+ outcome: string;
702
+ /** Format: int32 */
703
+ outcome_index?: number | null;
704
+ /** Format: double */
705
+ pnl_usd: number;
706
+ /** Format: double */
707
+ pnl_pct: number;
708
+ /** Format: double */
709
+ cost_basis_usd: number;
710
+ /** @description resolved_win | resolved_loss | sold_win | sold_loss */
711
+ reason: string;
712
+ /** Format: int64 */
713
+ block: number;
714
+ /**
715
+ * Format: int32
716
+ * @description Exit time, unix seconds.
717
+ */
718
+ ts: number;
719
+ };
618
720
  /** @description Payload delivered when a tracked trader executes their first-ever trade on Polymarket */
619
721
  FirstTradePayload: {
620
722
  /** @description Limit-order maker wallet address (lowercase) */
@@ -686,7 +788,10 @@ export interface components {
686
788
  trader?: string | null;
687
789
  /** @description Aggregation timeframe: "1d", "7d", "30d", or "lifetime" */
688
790
  timeframe: string;
689
- /** Format: double */
791
+ /**
792
+ * Format: double
793
+ * @description Realized PnL for the timeframe (matches REST `/pnl/global`).
794
+ */
690
795
  realized_pnl_usd?: number | null;
691
796
  /** Format: int64 */
692
797
  events_traded?: number | null;
@@ -700,6 +805,8 @@ export interface components {
700
805
  total_redemptions?: number | null;
701
806
  /** Format: int64 */
702
807
  total_merges?: number | null;
808
+ /** Format: int64 */
809
+ total_splits?: number | null;
703
810
  /** Format: double */
704
811
  total_volume_usd?: number | null;
705
812
  /** Format: double */
@@ -710,6 +817,26 @@ export interface components {
710
817
  redemption_volume_usd?: number | null;
711
818
  /** Format: double */
712
819
  merge_volume_usd?: number | null;
820
+ /** Format: double */
821
+ convert_collateral_usd?: number | null;
822
+ /** Format: double */
823
+ split_volume_usd?: number | null;
824
+ /** Format: int64 */
825
+ maker_rebate_count?: number | null;
826
+ /** Format: double */
827
+ maker_rebate_usd?: number | null;
828
+ /** Format: int64 */
829
+ reward_count?: number | null;
830
+ /** Format: double */
831
+ reward_usd?: number | null;
832
+ /** Format: int64 */
833
+ yield_count?: number | null;
834
+ /** Format: double */
835
+ yield_usd?: number | null;
836
+ /** Format: int64 */
837
+ total_credit_count?: number | null;
838
+ /** Format: double */
839
+ total_credit_usd?: number | null;
713
840
  /** Format: int64 */
714
841
  markets_won?: number | null;
715
842
  /** Format: int64 */
@@ -717,9 +844,15 @@ export interface components {
717
844
  /** Format: double */
718
845
  market_win_rate_pct?: number | null;
719
846
  /** Format: double */
720
- avg_pnl_per_market?: number | null;
847
+ total_wins_usd?: number | null;
848
+ /** Format: double */
849
+ total_losses_usd?: number | null;
850
+ /** Format: double */
851
+ avg_win_usd?: number | null;
852
+ /** Format: double */
853
+ avg_loss_usd?: number | null;
721
854
  /** Format: double */
722
- avg_pnl_per_trade?: number | null;
855
+ profit_factor?: number | null;
723
856
  /** Format: double */
724
857
  avg_hold_time_seconds?: number | null;
725
858
  /** Format: double */
@@ -727,6 +860,9 @@ export interface components {
727
860
  /** Format: double */
728
861
  best_trade_pnl_usd?: number | null;
729
862
  best_trade_condition_id?: string | null;
863
+ /** Format: double */
864
+ worst_trade_pnl_usd?: number | null;
865
+ worst_trade_condition_id?: string | null;
730
866
  /** Format: int64 */
731
867
  first_trade_at?: number | null;
732
868
  /** Format: int64 */
@@ -825,8 +961,13 @@ export interface components {
825
961
  trader?: string | null;
826
962
  condition_id?: string | null;
827
963
  event_slug?: string | null;
964
+ category?: string | null;
828
965
  /** @description Aggregation timeframe: "1d", "7d", "30d", or "lifetime" */
829
966
  timeframe: string;
967
+ /** Format: double */
968
+ realized_pnl_usd?: number | null;
969
+ /** Format: double */
970
+ current_shares_balance?: number | null;
830
971
  /** Format: int64 */
831
972
  outcomes_traded?: number | null;
832
973
  /** Format: int64 */
@@ -837,6 +978,8 @@ export interface components {
837
978
  total_redemptions?: number | null;
838
979
  /** Format: int64 */
839
980
  total_merges?: number | null;
981
+ /** Format: int64 */
982
+ total_splits?: number | null;
840
983
  /** Format: double */
841
984
  buy_usd?: number | null;
842
985
  /** Format: double */
@@ -846,11 +989,13 @@ export interface components {
846
989
  /** Format: double */
847
990
  merge_usd?: number | null;
848
991
  /** Format: double */
849
- realized_pnl_usd?: number | null;
850
- /** Format: int64 */
851
- winning_outcomes?: number | null;
992
+ convert_collateral_usd?: number | null;
993
+ /** Format: double */
994
+ split_volume_usd?: number | null;
852
995
  /** Format: double */
853
996
  total_fees?: number | null;
997
+ /** Format: double */
998
+ total_shares_bought?: number | null;
854
999
  /** Format: int64 */
855
1000
  first_trade_at?: number | null;
856
1001
  /** Format: int64 */
@@ -1187,7 +1332,7 @@ export interface components {
1187
1332
  */
1188
1333
  PnlFilterTimeframe: "1d" | "7d" | "30d" | "lifetime";
1189
1334
  /**
1190
- * @description PnL timeframe enum for webhook filtering
1335
+ * @description PnL timeframe enum for webhook filtering.
1191
1336
  * @enum {string}
1192
1337
  */
1193
1338
  PnlTimeframeFilter: "1d" | "7d" | "30d" | "lifetime";
@@ -1195,7 +1340,7 @@ export interface components {
1195
1340
  * @description Polymarket webhook event types
1196
1341
  * @enum {string}
1197
1342
  */
1198
- PolymarketWebhookEvent: "trader_first_trade" | "trader_new_market" | "trader_whale_trade" | "trader_new_trade" | "trader_trade_event" | "trader_global_pnl" | "trader_market_pnl" | "trader_event_pnl" | "trader_global_pnl_v3" | "trader_market_pnl_v3" | "trader_event_pnl_v3" | "trader_category_pnl_v3" | "trader_position_resolved_v3" | "trader_exit_markers_v3" | "position_holder_metrics_v3" | "condition_holder_metrics_v3" | "event_holder_metrics_v3" | "condition_metrics" | "event_metrics" | "tag_metrics" | "position_metrics" | "market_volume_milestone" | "event_volume_milestone" | "position_volume_milestone" | "probability_spike" | "market_volume_spike" | "event_volume_spike" | "position_volume_spike" | "close_to_bond" | "market_created" | "asset_price_tick" | "asset_price_window_update" | "price_spike" | "oracle_events";
1343
+ PolymarketWebhookEvent: "trader_first_trade" | "trader_new_market" | "trader_whale_trade" | "trader_new_trade" | "trader_trade_event" | "trader_global_pnl" | "trader_market_pnl" | "trader_category_pnl" | "trader_position_resolved" | "trader_exit_markers" | "position_holder_metrics" | "condition_holder_metrics" | "event_holder_metrics" | "condition_metrics" | "event_metrics" | "tag_metrics" | "position_metrics" | "market_volume_milestone" | "event_volume_milestone" | "position_volume_milestone" | "probability_spike" | "market_volume_spike" | "event_volume_spike" | "position_volume_spike" | "close_to_bond" | "market_created" | "asset_price_tick" | "asset_price_window_update" | "price_spike" | "oracle_events";
1199
1344
  /**
1200
1345
  * @description Polymarket-specific webhook filters
1201
1346
  *
@@ -1384,6 +1529,26 @@ export interface components {
1384
1529
  */
1385
1530
  oracle_event_types?: string[];
1386
1531
  };
1532
+ PositionHolderMetricsFilters: {
1533
+ position_ids?: string[];
1534
+ };
1535
+ PositionHolderMetricsPayload: {
1536
+ /** Format: int32 */
1537
+ ts: number;
1538
+ /** Format: int64 */
1539
+ block: number;
1540
+ position_id: string;
1541
+ /** Format: int32 */
1542
+ holder_count: number;
1543
+ /** Format: double */
1544
+ total_balance: number;
1545
+ /** Format: double */
1546
+ total_cost_basis: number;
1547
+ /** Format: int32 */
1548
+ condition_holder_count?: number | null;
1549
+ /** Format: int32 */
1550
+ event_holder_count?: number | null;
1551
+ };
1387
1552
  /** @description Subscription filters for the `position_metrics` event. All fields are optional. */
1388
1553
  PositionMetricsFilters: {
1389
1554
  /** @description Restrict to these outcome token IDs. */
@@ -1548,6 +1713,145 @@ export interface components {
1548
1713
  /** Format: double */
1549
1714
  avg_sell_shares?: number | null;
1550
1715
  };
1716
+ PositionResolvedPayload: {
1717
+ trader?: string;
1718
+ position_id?: string;
1719
+ condition_id?: string | null;
1720
+ event_slug?: string | null;
1721
+ /**
1722
+ * @description Market category slug (e.g. "politics", "sports") — mirror of
1723
+ * `PositionRollup.category_id` resolved against the rollup
1724
+ * interner. Surfaces on the `/trader/{addr}/positions` API and
1725
+ * enables direct category-filtered + sorted position lookups
1726
+ * without a cross-grain join.
1727
+ */
1728
+ category?: string | null;
1729
+ outcome?: string | null;
1730
+ /** Format: int32 */
1731
+ outcome_index?: number | null;
1732
+ /** Format: int64 */
1733
+ total_buys?: number;
1734
+ /** Format: int64 */
1735
+ total_sells?: number;
1736
+ /** Format: int64 */
1737
+ total_merges?: number;
1738
+ /** Format: int64 */
1739
+ total_splits?: number;
1740
+ /** Format: int32 */
1741
+ winning_outcome_index?: number | null;
1742
+ /** Format: double */
1743
+ total_shares_bought?: number;
1744
+ /** Format: double */
1745
+ total_shares_sold?: number;
1746
+ /** Format: double */
1747
+ buy_usd?: number;
1748
+ /** Format: double */
1749
+ sell_usd?: number;
1750
+ /** Format: double */
1751
+ avg_entry_price?: number;
1752
+ /** Format: double */
1753
+ total_fees?: number;
1754
+ /** Format: double */
1755
+ realized_pnl_usd?: number;
1756
+ /** Format: double */
1757
+ total_pnl_usd?: number;
1758
+ /** Format: double */
1759
+ unrealized_pnl_usd?: number;
1760
+ /** Format: double */
1761
+ redemption_usd?: number;
1762
+ open?: boolean;
1763
+ won?: boolean | null;
1764
+ /** Format: int64 */
1765
+ first_trade_at?: number | null;
1766
+ /** Format: int64 */
1767
+ last_trade_at?: number | null;
1768
+ /**
1769
+ * @description What kind of activity triggered this update. One or more of
1770
+ * `"trade"`, `"price"`, `"window"`, `"position_resolved"`.
1771
+ * Subscribers that only care about one kind filter on
1772
+ * `data.dirty_kinds` containing the value.
1773
+ */
1774
+ dirty_kinds?: components["schemas"]["DirtyKind"][];
1775
+ /**
1776
+ * Format: double
1777
+ * @description `realized_pnl_usd / (buy_usd + total_fees) * 100` for the
1778
+ * window. `0.0` when the trader has no cost basis on this row yet.
1779
+ */
1780
+ realized_pnl_pct?: number;
1781
+ /** Format: double */
1782
+ total_pnl_pct?: number;
1783
+ /** @description Market slug for the parent market of this outcome. */
1784
+ market_slug?: string | null;
1785
+ /** @description Market title. */
1786
+ title?: string | null;
1787
+ /** @description Market question. */
1788
+ question?: string | null;
1789
+ /** @description Market image URL. */
1790
+ image_url?: string | null;
1791
+ /**
1792
+ * Format: int32
1793
+ * @description NegRisk conversion count + share deltas for this position.
1794
+ */
1795
+ converted_count?: number;
1796
+ /** Format: double */
1797
+ converted_shares_gained?: number;
1798
+ /** Format: double */
1799
+ converted_shares_lost?: number;
1800
+ /**
1801
+ * Format: double
1802
+ * @description Aggregate buy/sell USD totals for this position across its
1803
+ * lifetime.
1804
+ */
1805
+ total_buy_usd?: number;
1806
+ /** Format: double */
1807
+ total_sell_usd?: number;
1808
+ /**
1809
+ * Format: double
1810
+ * @description Merge proceeds (Y+N → collateral).
1811
+ */
1812
+ merge_usd?: number;
1813
+ /**
1814
+ * Format: double
1815
+ * @description Sell-side average price.
1816
+ */
1817
+ avg_exit_price?: number | null;
1818
+ /**
1819
+ * Format: double
1820
+ * @description Volume-weighted average trade price across buys + sells.
1821
+ */
1822
+ avg_price?: number | null;
1823
+ /**
1824
+ * Format: double
1825
+ * @description Mark-to-market values from the latest price tick.
1826
+ */
1827
+ current_price?: number | null;
1828
+ /** Format: double */
1829
+ current_shares_balance?: number | null;
1830
+ /** Format: double */
1831
+ current_value?: number | null;
1832
+ /**
1833
+ * Format: double
1834
+ * @description Last on-chain trade price for the outcome token.
1835
+ */
1836
+ last_traded_price?: number | null;
1837
+ /**
1838
+ * Format: int64
1839
+ * @description Market resolution deadline as Unix seconds.
1840
+ */
1841
+ end_date?: number | null;
1842
+ /** @description NegRisk multi-outcome flag. */
1843
+ is_neg_risk?: boolean | null;
1844
+ /**
1845
+ * @description `true` when the market is resolved AND the trader still holds
1846
+ * shares (redeem available).
1847
+ */
1848
+ redeemable?: boolean | null;
1849
+ /**
1850
+ * @description `true` when the market is NegRisk, unresolved, and the trader
1851
+ * holds shares (NegRisk-adapter merge available).
1852
+ */
1853
+ mergeable?: boolean | null;
1854
+ };
1551
1855
  /** @description Subscription filters for the `position_volume_milestone` event. */
1552
1856
  PositionVolumeMilestoneFilters: {
1553
1857
  /** @description **Required.** Aggregation windows to monitor. */
@@ -2202,51 +2506,63 @@ export interface components {
2202
2506
  * @enum {string}
2203
2507
  */
2204
2508
  TradeEventFilterType: "OrderFilled" | "OrdersMatched" | "MakerRebate" | "Reward" | "Yield" | "Redemption" | "Merge" | "Split" | "Cancelled" | "PositionsConverted" | "Initialization" | "Proposal" | "Dispute" | "Settled" | "Resolution" | "ConditionResolution" | "Reset" | "Flag" | "Unflag" | "Pause" | "Unpause" | "ManualResolution" | "NegRiskOutcomeReported" | "RegisterToken";
2205
- /** @description Subscription filters for the `trader_event_pnl` event. All fields are optional. */
2206
- TraderEventPnlFilters: {
2207
- /** @description Track only these trader wallet addresses. */
2509
+ /** @description Subscription filters for the `trader_category_pnl` event. All fields are optional. */
2510
+ TraderCategoryPnlFilters: {
2511
+ /** @description Track only these trader wallet addresses. Empty = all traders. */
2208
2512
  traders?: string[] | null;
2209
- /** @description Restrict to these events. */
2210
- event_slugs?: string[] | null;
2513
+ /** @description Restrict to these market categories (e.g. `politics`, `sports`). */
2514
+ categories?: string[] | null;
2211
2515
  /**
2212
2516
  * Format: double
2213
- * @description Only fire when per-event realized PnL ≥ this value (USD).
2517
+ * @description Only fire when per-category realized PnL ≥ this value (USD). Use negative values for loss thresholds.
2214
2518
  */
2215
2519
  min_realized_pnl_usd?: number | null;
2216
2520
  /**
2217
2521
  * Format: double
2218
- * @description Only fire when per-event realized PnL ≤ this value (USD).
2522
+ * @description Only fire when per-category realized PnL ≤ this value (USD).
2219
2523
  */
2220
2524
  max_realized_pnl_usd?: number | null;
2221
2525
  /**
2222
2526
  * Format: double
2223
- * @description Only fire when total event volume ≥ this value (USD).
2527
+ * @description Only fire when total category volume ≥ this value (USD).
2224
2528
  */
2225
2529
  min_volume_usd?: number | null;
2226
2530
  /**
2227
2531
  * Format: double
2228
- * @description Only fire when total event volume ≤ this value (USD).
2532
+ * @description Only fire when total category volume ≤ this value (USD).
2229
2533
  */
2230
2534
  max_volume_usd?: number | null;
2231
2535
  /**
2232
2536
  * Format: double
2233
- * @description Only fire when buy volume within the event ≥ this value (USD).
2537
+ * @description Only fire when buy volume within the category ≥ this value (USD).
2234
2538
  */
2235
2539
  min_buy_usd?: number | null;
2236
2540
  /**
2237
2541
  * Format: double
2238
- * @description Only fire when sell volume within the event ≥ this value (USD).
2542
+ * @description Only fire when sell volume within the category ≥ this value (USD).
2239
2543
  */
2240
2544
  min_sell_volume_usd?: number | null;
2545
+ /**
2546
+ * Format: double
2547
+ * @description Only fire when market win rate ≥ this percentage (0.0–100.0).
2548
+ */
2549
+ min_win_rate?: number | null;
2241
2550
  /**
2242
2551
  * Format: int64
2243
- * @description Only fire when the trader has traded in ≥ this many markets within the event.
2552
+ * @description Only fire when the trader has traded in ≥ this many markets within the category.
2244
2553
  */
2245
2554
  min_markets_traded?: number | null;
2246
- /** @description Restrict to these PnL windows. */
2555
+ /** @description Restrict to these PnL windows. Empty = all windows. */
2247
2556
  timeframes?: components["schemas"]["PnlFilterTimeframe"][] | null;
2248
- /** @description When `true`, suppress webhooks for short-term "updown" markets. Default: `false`. */
2249
- exclude_shortterm_markets?: boolean | null;
2557
+ };
2558
+ /** @description Subscription filters for the `trader_pnl_exits` event. All fields are optional. */
2559
+ TraderExitMarkersFilters: {
2560
+ /** @description Track only these trader wallet addresses. Empty = all traders. */
2561
+ traders?: string[] | null;
2562
+ /** @description Restrict to these markets. */
2563
+ condition_ids?: string[] | null;
2564
+ /** @description Restrict to positions in these events. */
2565
+ event_slugs?: string[] | null;
2250
2566
  };
2251
2567
  /** @description Subscription filters for the `trader_first_trade` event. All fields are optional. */
2252
2568
  TraderFirstTradeFilters: {
@@ -2418,6 +2734,19 @@ export interface components {
2418
2734
  /** @description When `true`, suppress webhooks for short-term "updown" markets. Default: `false`. */
2419
2735
  exclude_shortterm_markets?: boolean | null;
2420
2736
  };
2737
+ /** @description Subscription filters for the `trader_position_resolved` event. All fields are optional. */
2738
+ TraderPositionResolvedFilters: {
2739
+ /** @description Track only these trader wallet addresses. Empty = all traders. */
2740
+ traders?: string[] | null;
2741
+ /** @description Restrict to these markets. */
2742
+ condition_ids?: string[] | null;
2743
+ /** @description Restrict to positions in these events. */
2744
+ event_slugs?: string[] | null;
2745
+ /** @description Restrict to these outcome indexes within the resolved market. */
2746
+ outcome_indexes?: number[] | null;
2747
+ /** @description Only fire for won (`true`) or lost (`false`) positions. Omit to receive both. */
2748
+ won_only?: boolean | null;
2749
+ };
2421
2750
  /**
2422
2751
  * @description Subscription filters for the `trader_trade_event` event. All fields are optional.
2423
2752
  * `event_slugs` and `exclude_shortterm_markets` require explicit `trade_types` that
@@ -3408,7 +3737,7 @@ export interface components {
3408
3737
  * @description All alert event types supported by both HTTP webhooks and the alerts WebSocket.
3409
3738
  * @enum {string}
3410
3739
  */
3411
- WsAlertEventType: "trader_first_trade" | "trader_new_market" | "trader_whale_trade" | "trader_new_trade" | "trader_trade_event" | "trader_global_pnl" | "trader_market_pnl" | "trader_event_pnl" | "condition_metrics" | "event_metrics" | "tag_metrics" | "position_metrics" | "market_volume_milestone" | "event_volume_milestone" | "position_volume_milestone" | "probability_spike" | "price_spike" | "market_volume_spike" | "event_volume_spike" | "position_volume_spike" | "close_to_bond" | "market_created" | "oracle_events" | "asset_price_tick" | "asset_price_window_update";
3740
+ WsAlertEventType: "trader_first_trade" | "trader_new_market" | "trader_whale_trade" | "trader_new_trade" | "trader_trade_event" | "trader_global_pnl" | "trader_market_pnl" | "trader_category_pnl" | "trader_position_resolved" | "trader_pnl_exits" | "position_holder_metrics" | "condition_holder_metrics" | "event_holder_metrics" | "condition_metrics" | "event_metrics" | "tag_metrics" | "position_metrics" | "market_volume_milestone" | "event_volume_milestone" | "position_volume_milestone" | "probability_spike" | "price_spike" | "market_volume_spike" | "event_volume_spike" | "position_volume_spike" | "close_to_bond" | "market_created" | "oracle_events" | "asset_price_tick" | "asset_price_window_update";
3412
3741
  /** @description Server acknowledgement for a successful alert subscription. */
3413
3742
  WsAlertSubscribedResponse: {
3414
3743
  /** @enum {string} */
@@ -3815,20 +4144,36 @@ export interface components {
3815
4144
  * "total_sells": 8,
3816
4145
  * "total_redemptions": 1,
3817
4146
  * "total_merges": 0,
4147
+ * "total_splits": 0,
3818
4148
  * "total_volume_usd": 1500,
3819
4149
  * "buy_volume_usd": 900,
3820
4150
  * "sell_volume_usd": 600,
3821
4151
  * "redemption_volume_usd": 50,
3822
4152
  * "merge_volume_usd": 0,
4153
+ * "convert_collateral_usd": 0,
4154
+ * "split_volume_usd": 0,
4155
+ * "maker_rebate_count": 0,
4156
+ * "maker_rebate_usd": 0,
4157
+ * "reward_count": 0,
4158
+ * "reward_usd": 0,
4159
+ * "yield_count": 0,
4160
+ * "yield_usd": 0,
4161
+ * "total_credit_count": 0,
4162
+ * "total_credit_usd": 0,
3823
4163
  * "markets_won": 3,
3824
4164
  * "markets_lost": 2,
3825
4165
  * "market_win_rate_pct": 60,
3826
- * "avg_pnl_per_market": 50,
3827
- * "avg_pnl_per_trade": 12.5,
4166
+ * "total_wins_usd": 400,
4167
+ * "total_losses_usd": 150,
4168
+ * "avg_win_usd": 133.3,
4169
+ * "avg_loss_usd": 75,
4170
+ * "profit_factor": 2.67,
3828
4171
  * "avg_hold_time_seconds": 86400,
3829
4172
  * "total_fees": 7.5,
3830
4173
  * "best_trade_pnl_usd": 180,
3831
4174
  * "best_trade_condition_id": "0x0000000000000000000000000000000000000000000000000000000000000000",
4175
+ * "worst_trade_pnl_usd": -50,
4176
+ * "worst_trade_condition_id": "0x0000000000000000000000000000000000000000000000000000000000000001",
3832
4177
  * "first_trade_at": 1700000000,
3833
4178
  * "last_trade_at": 1700000000
3834
4179
  * }
@@ -3880,19 +4225,24 @@ export interface components {
3880
4225
  * "trader": "0x0000000000000000000000000000000000000000",
3881
4226
  * "condition_id": "0x0000000000000000000000000000000000000000000000000000000000000000",
3882
4227
  * "event_slug": "test-event-0000000000",
4228
+ * "category": "crypto",
3883
4229
  * "timeframe": "7d",
4230
+ * "realized_pnl_usd": 100,
4231
+ * "current_shares_balance": 150,
3884
4232
  * "outcomes_traded": 2,
3885
4233
  * "total_buys": 4,
3886
4234
  * "total_sells": 3,
3887
4235
  * "total_redemptions": 1,
3888
4236
  * "total_merges": 0,
4237
+ * "total_splits": 0,
3889
4238
  * "buy_usd": 300,
3890
4239
  * "sell_usd": 200,
3891
4240
  * "redemption_usd": 50,
3892
4241
  * "merge_usd": 0,
3893
- * "realized_pnl_usd": 100,
3894
- * "winning_outcomes": 1,
4242
+ * "convert_collateral_usd": 0,
4243
+ * "split_volume_usd": 0,
3895
4244
  * "total_fees": 2.5,
4245
+ * "total_shares_bought": 500,
3896
4246
  * "first_trade_at": 1700000000,
3897
4247
  * "last_trade_at": 1700000000
3898
4248
  * }
@@ -3911,71 +4261,386 @@ export interface components {
3911
4261
  timestamp: number;
3912
4262
  data: components["schemas"]["MarketPnlPayload"];
3913
4263
  };
3914
- WsAlertTraderEventPnlSubscribeMessage: {
4264
+ WsAlertTraderCategoryPnlSubscribeMessage: {
3915
4265
  /** @enum {string} */
3916
4266
  op: "subscribe";
3917
4267
  /** @enum {string} */
3918
- event: "trader_event_pnl";
3919
- } & components["schemas"]["TraderEventPnlFilters"] & {
4268
+ event: "trader_category_pnl";
4269
+ } & components["schemas"]["TraderCategoryPnlFilters"] & {
3920
4270
  /**
3921
4271
  * @description discriminator enum property added by openapi-typescript
3922
4272
  * @enum {string}
3923
4273
  */
3924
- event: "trader_event_pnl";
4274
+ event: "trader_category_pnl";
3925
4275
  };
3926
- WsAlertTraderEventPnlUnsubscribeMessage: {
4276
+ WsAlertTraderCategoryPnlUnsubscribeMessage: {
3927
4277
  /** @enum {string} */
3928
4278
  op: "unsubscribe";
3929
4279
  /** @enum {string} */
3930
- event: "trader_event_pnl";
3931
- } & components["schemas"]["TraderEventPnlFilters"] & {
4280
+ event: "trader_category_pnl";
4281
+ } & components["schemas"]["TraderCategoryPnlFilters"] & {
3932
4282
  /**
3933
4283
  * @description discriminator enum property added by openapi-typescript
3934
4284
  * @enum {string}
3935
4285
  */
3936
- event: "trader_event_pnl";
4286
+ event: "trader_category_pnl";
3937
4287
  };
3938
4288
  /**
3939
- * @description Pushed `trader_event_pnl` alert. The `data` payload matches the corresponding HTTP webhook payload schema.
4289
+ * @description Pushed `trader_category_pnl` alert. The `data` payload matches the corresponding HTTP webhook payload schema.
3940
4290
  * @example {
3941
- * "event": "trader_event_pnl",
4291
+ * "event": "trader_category_pnl",
3942
4292
  * "timestamp": 1743500000000,
3943
4293
  * "data": {
3944
4294
  * "trader": "0x0000000000000000000000000000000000000000",
3945
- * "event_slug": "test-event-0000000000",
4295
+ * "category": "crypto",
3946
4296
  * "timeframe": "7d",
3947
- * "markets_traded": 2,
3948
- * "outcomes_traded": 3,
3949
- * "total_buys": 6,
3950
- * "total_sells": 4,
4297
+ * "realized_pnl_usd": 250,
4298
+ * "markets_in_category": 15,
4299
+ * "markets_traded": 5,
4300
+ * "outcomes_traded": 8,
4301
+ * "total_buys": 12,
4302
+ * "total_sells": 8,
3951
4303
  * "total_redemptions": 1,
3952
4304
  * "total_merges": 0,
3953
- * "total_volume_usd": 800,
3954
- * "buy_usd": 480,
3955
- * "sell_usd": 320,
4305
+ * "total_splits": 0,
4306
+ * "total_volume_usd": 1500,
4307
+ * "buy_usd": 900,
4308
+ * "sell_usd": 600,
3956
4309
  * "redemption_usd": 50,
3957
4310
  * "merge_usd": 0,
3958
- * "realized_pnl_usd": 150,
3959
- * "winning_markets": 1,
3960
- * "losing_markets": 1,
3961
- * "total_fees": 4,
4311
+ * "convert_collateral_usd": 0,
4312
+ * "split_volume_usd": 0,
4313
+ * "total_fees": 7.5,
4314
+ * "total_shares_bought": 500,
4315
+ * "markets_won": 3,
4316
+ * "markets_lost": 2,
4317
+ * "market_win_rate_pct": 60,
4318
+ * "avg_hold_time_seconds": 86400,
4319
+ * "best_trade_pnl_usd": 180,
4320
+ * "best_trade_condition_id": "0x0000000000000000000000000000000000000000000000000000000000000000",
4321
+ * "worst_trade_pnl_usd": -50,
4322
+ * "worst_trade_condition_id": "0x0000000000000000000000000000000000000000000000000000000000000001",
4323
+ * "total_wins_usd": 400,
4324
+ * "total_losses_usd": 150,
4325
+ * "avg_win_usd": 133.3,
4326
+ * "avg_loss_usd": 75,
4327
+ * "profit_factor": 2.67,
3962
4328
  * "first_trade_at": 1700000000,
3963
4329
  * "last_trade_at": 1700000000
3964
4330
  * }
3965
4331
  * }
3966
4332
  */
3967
- WsAlertTraderEventPnlEvent: {
4333
+ WsAlertTraderCategoryPnlEvent: {
4334
+ /**
4335
+ * @description discriminator enum property added by openapi-typescript
4336
+ * @enum {string}
4337
+ */
4338
+ event: "trader_category_pnl";
4339
+ /**
4340
+ * Format: int64
4341
+ * @description Unix timestamp in milliseconds
4342
+ */
4343
+ timestamp: number;
4344
+ data: components["schemas"]["CategoryPnlPayload"];
4345
+ };
4346
+ WsAlertTraderPositionResolvedSubscribeMessage: {
4347
+ /** @enum {string} */
4348
+ op: "subscribe";
4349
+ /** @enum {string} */
4350
+ event: "trader_position_resolved";
4351
+ } & components["schemas"]["TraderPositionResolvedFilters"] & {
4352
+ /**
4353
+ * @description discriminator enum property added by openapi-typescript
4354
+ * @enum {string}
4355
+ */
4356
+ event: "trader_position_resolved";
4357
+ };
4358
+ WsAlertTraderPositionResolvedUnsubscribeMessage: {
4359
+ /** @enum {string} */
4360
+ op: "unsubscribe";
4361
+ /** @enum {string} */
4362
+ event: "trader_position_resolved";
4363
+ } & components["schemas"]["TraderPositionResolvedFilters"] & {
4364
+ /**
4365
+ * @description discriminator enum property added by openapi-typescript
4366
+ * @enum {string}
4367
+ */
4368
+ event: "trader_position_resolved";
4369
+ };
4370
+ /**
4371
+ * @description Pushed `trader_position_resolved` alert. The `data` payload matches the corresponding HTTP webhook payload schema.
4372
+ * @example {
4373
+ * "event": "trader_position_resolved",
4374
+ * "timestamp": 1743500000000,
4375
+ * "data": {
4376
+ * "trader": "0x0000000000000000000000000000000000000000",
4377
+ * "position_id": "0x0000000000000000000000000000000000000000000000000000000000000000",
4378
+ * "condition_id": "0x0000000000000000000000000000000000000000000000000000000000000000",
4379
+ * "event_slug": "test-event-0000000000",
4380
+ * "category": "politics",
4381
+ * "outcome": "Yes",
4382
+ * "outcome_index": 0,
4383
+ * "total_buys": 4,
4384
+ * "total_sells": 2,
4385
+ * "total_merges": 0,
4386
+ * "total_splits": 0,
4387
+ * "winning_outcome_index": 0,
4388
+ * "total_shares_bought": 500,
4389
+ * "total_shares_sold": 200,
4390
+ * "buy_usd": 300,
4391
+ * "sell_usd": 150,
4392
+ * "avg_entry_price": 0.6,
4393
+ * "total_fees": 2.5,
4394
+ * "realized_pnl_usd": 100,
4395
+ * "total_pnl_usd": 100,
4396
+ * "unrealized_pnl_usd": 0,
4397
+ * "redemption_usd": 50,
4398
+ * "open": false,
4399
+ * "won": true,
4400
+ * "first_trade_at": 1700000000,
4401
+ * "last_trade_at": 1700000000,
4402
+ * "dirty_kinds": [
4403
+ * "position_resolved"
4404
+ * ],
4405
+ * "realized_pnl_pct": 0,
4406
+ * "total_pnl_pct": 0,
4407
+ * "converted_count": 0,
4408
+ * "converted_shares_gained": 0,
4409
+ * "converted_shares_lost": 0,
4410
+ * "total_buy_usd": 0,
4411
+ * "total_sell_usd": 0,
4412
+ * "merge_usd": 0
4413
+ * }
4414
+ * }
4415
+ */
4416
+ WsAlertTraderPositionResolvedEvent: {
4417
+ /**
4418
+ * @description discriminator enum property added by openapi-typescript
4419
+ * @enum {string}
4420
+ */
4421
+ event: "trader_position_resolved";
4422
+ /**
4423
+ * Format: int64
4424
+ * @description Unix timestamp in milliseconds
4425
+ */
4426
+ timestamp: number;
4427
+ data: components["schemas"]["PositionResolvedPayload"];
4428
+ };
4429
+ WsAlertTraderPnlExitsSubscribeMessage: {
4430
+ /** @enum {string} */
4431
+ op: "subscribe";
4432
+ /** @enum {string} */
4433
+ event: "trader_pnl_exits";
4434
+ } & components["schemas"]["TraderExitMarkersFilters"] & {
4435
+ /**
4436
+ * @description discriminator enum property added by openapi-typescript
4437
+ * @enum {string}
4438
+ */
4439
+ event: "trader_pnl_exits";
4440
+ };
4441
+ WsAlertTraderPnlExitsUnsubscribeMessage: {
4442
+ /** @enum {string} */
4443
+ op: "unsubscribe";
4444
+ /** @enum {string} */
4445
+ event: "trader_pnl_exits";
4446
+ } & components["schemas"]["TraderExitMarkersFilters"] & {
4447
+ /**
4448
+ * @description discriminator enum property added by openapi-typescript
4449
+ * @enum {string}
4450
+ */
4451
+ event: "trader_pnl_exits";
4452
+ };
4453
+ /**
4454
+ * @description Pushed `trader_pnl_exits` alert. The `data` payload matches the corresponding HTTP webhook payload schema.
4455
+ * @example {
4456
+ * "event": "trader_pnl_exits",
4457
+ * "timestamp": 1743500000000,
4458
+ * "data": {
4459
+ * "trader": "0x0000000000000000000000000000000000000000",
4460
+ * "position_id": "0x0000000000000000000000000000000000000000000000000000000000000000",
4461
+ * "condition_id": "0x0000000000000000000000000000000000000000000000000000000000000000",
4462
+ * "event_slug": "test-event-0000000000",
4463
+ * "market_slug": "test-market",
4464
+ * "title": "Test Market",
4465
+ * "question": "Will this test market resolve YES?",
4466
+ * "image_url": "",
4467
+ * "outcome": "Yes",
4468
+ * "outcome_index": 0,
4469
+ * "pnl_usd": 100,
4470
+ * "pnl_pct": 33.3,
4471
+ * "cost_basis_usd": 300,
4472
+ * "reason": "resolved_win",
4473
+ * "block": 1,
4474
+ * "ts": 1700000000
4475
+ * }
4476
+ * }
4477
+ */
4478
+ WsAlertTraderPnlExitsEvent: {
4479
+ /**
4480
+ * @description discriminator enum property added by openapi-typescript
4481
+ * @enum {string}
4482
+ */
4483
+ event: "trader_pnl_exits";
4484
+ /**
4485
+ * Format: int64
4486
+ * @description Unix timestamp in milliseconds
4487
+ */
4488
+ timestamp: number;
4489
+ data: components["schemas"]["ExitMarkersPayload"];
4490
+ };
4491
+ WsAlertPositionHolderMetricsSubscribeMessage: ({
4492
+ /** @enum {string} */
4493
+ op: "subscribe";
4494
+ /** @enum {string} */
4495
+ event: "position_holder_metrics";
4496
+ } & components["schemas"]["PositionHolderMetricsFilters"] & {
4497
+ /**
4498
+ * @description discriminator enum property added by openapi-typescript
4499
+ * @enum {string}
4500
+ */
4501
+ event: "position_holder_metrics";
4502
+ }) | unknown;
4503
+ WsAlertPositionHolderMetricsUnsubscribeMessage: ({
4504
+ /** @enum {string} */
4505
+ op: "unsubscribe";
4506
+ /** @enum {string} */
4507
+ event: "position_holder_metrics";
4508
+ } & components["schemas"]["PositionHolderMetricsFilters"] & {
4509
+ /**
4510
+ * @description discriminator enum property added by openapi-typescript
4511
+ * @enum {string}
4512
+ */
4513
+ event: "position_holder_metrics";
4514
+ }) | unknown;
4515
+ /**
4516
+ * @description Pushed `position_holder_metrics` alert. The `data` payload matches the corresponding HTTP webhook payload schema.
4517
+ * @example {
4518
+ * "event": "position_holder_metrics",
4519
+ * "timestamp": 1743500000000,
4520
+ * "data": {
4521
+ * "ts": 1700000000,
4522
+ * "block": 1,
4523
+ * "position_id": "0x0000000000000000000000000000000000000000000000000000000000000000",
4524
+ * "holder_count": 10,
4525
+ * "total_balance": 1000,
4526
+ * "total_cost_basis": 500,
4527
+ * "condition_holder_count": 15,
4528
+ * "event_holder_count": 25
4529
+ * }
4530
+ * }
4531
+ */
4532
+ WsAlertPositionHolderMetricsEvent: {
4533
+ /**
4534
+ * @description discriminator enum property added by openapi-typescript
4535
+ * @enum {string}
4536
+ */
4537
+ event: "position_holder_metrics";
4538
+ /**
4539
+ * Format: int64
4540
+ * @description Unix timestamp in milliseconds
4541
+ */
4542
+ timestamp: number;
4543
+ data: components["schemas"]["PositionHolderMetricsPayload"];
4544
+ };
4545
+ WsAlertConditionHolderMetricsSubscribeMessage: ({
4546
+ /** @enum {string} */
4547
+ op: "subscribe";
4548
+ /** @enum {string} */
4549
+ event: "condition_holder_metrics";
4550
+ } & components["schemas"]["ConditionHolderMetricsFilters"] & {
4551
+ /**
4552
+ * @description discriminator enum property added by openapi-typescript
4553
+ * @enum {string}
4554
+ */
4555
+ event: "condition_holder_metrics";
4556
+ }) | unknown;
4557
+ WsAlertConditionHolderMetricsUnsubscribeMessage: ({
4558
+ /** @enum {string} */
4559
+ op: "unsubscribe";
4560
+ /** @enum {string} */
4561
+ event: "condition_holder_metrics";
4562
+ } & components["schemas"]["ConditionHolderMetricsFilters"] & {
4563
+ /**
4564
+ * @description discriminator enum property added by openapi-typescript
4565
+ * @enum {string}
4566
+ */
4567
+ event: "condition_holder_metrics";
4568
+ }) | unknown;
4569
+ /**
4570
+ * @description Pushed `condition_holder_metrics` alert. The `data` payload matches the corresponding HTTP webhook payload schema.
4571
+ * @example {
4572
+ * "event": "condition_holder_metrics",
4573
+ * "timestamp": 1743500000000,
4574
+ * "data": {
4575
+ * "ts": 1700000000,
4576
+ * "block": 1,
4577
+ * "condition_id": "0x0000000000000000000000000000000000000000000000000000000000000000",
4578
+ * "holder_count": 15
4579
+ * }
4580
+ * }
4581
+ */
4582
+ WsAlertConditionHolderMetricsEvent: {
4583
+ /**
4584
+ * @description discriminator enum property added by openapi-typescript
4585
+ * @enum {string}
4586
+ */
4587
+ event: "condition_holder_metrics";
4588
+ /**
4589
+ * Format: int64
4590
+ * @description Unix timestamp in milliseconds
4591
+ */
4592
+ timestamp: number;
4593
+ data: components["schemas"]["ConditionHolderMetricsPayload"];
4594
+ };
4595
+ WsAlertEventHolderMetricsSubscribeMessage: ({
4596
+ /** @enum {string} */
4597
+ op: "subscribe";
4598
+ /** @enum {string} */
4599
+ event: "event_holder_metrics";
4600
+ } & components["schemas"]["EventHolderMetricsFilters"] & {
4601
+ /**
4602
+ * @description discriminator enum property added by openapi-typescript
4603
+ * @enum {string}
4604
+ */
4605
+ event: "event_holder_metrics";
4606
+ }) | unknown;
4607
+ WsAlertEventHolderMetricsUnsubscribeMessage: ({
4608
+ /** @enum {string} */
4609
+ op: "unsubscribe";
4610
+ /** @enum {string} */
4611
+ event: "event_holder_metrics";
4612
+ } & components["schemas"]["EventHolderMetricsFilters"] & {
4613
+ /**
4614
+ * @description discriminator enum property added by openapi-typescript
4615
+ * @enum {string}
4616
+ */
4617
+ event: "event_holder_metrics";
4618
+ }) | unknown;
4619
+ /**
4620
+ * @description Pushed `event_holder_metrics` alert. The `data` payload matches the corresponding HTTP webhook payload schema.
4621
+ * @example {
4622
+ * "event": "event_holder_metrics",
4623
+ * "timestamp": 1743500000000,
4624
+ * "data": {
4625
+ * "ts": 1700000000,
4626
+ * "block": 1,
4627
+ * "event_slug": "test-event-0000000000",
4628
+ * "holder_count": 25
4629
+ * }
4630
+ * }
4631
+ */
4632
+ WsAlertEventHolderMetricsEvent: {
3968
4633
  /**
3969
4634
  * @description discriminator enum property added by openapi-typescript
3970
4635
  * @enum {string}
3971
4636
  */
3972
- event: "trader_event_pnl";
4637
+ event: "event_holder_metrics";
3973
4638
  /**
3974
4639
  * Format: int64
3975
4640
  * @description Unix timestamp in milliseconds
3976
4641
  */
3977
4642
  timestamp: number;
3978
- data: components["schemas"]["EventPnlPayload"];
4643
+ data: components["schemas"]["EventHolderMetricsPayload"];
3979
4644
  };
3980
4645
  WsAlertConditionMetricsSubscribeMessage: {
3981
4646
  /** @enum {string} */
@@ -4997,11 +5662,11 @@ export interface components {
4997
5662
  data: components["schemas"]["AssetPriceWindowUpdatePayload"];
4998
5663
  };
4999
5664
  /** @description Typed subscribe request for the alerts WebSocket. The request shape depends on `event`; filters follow the schema associated with that event type. */
5000
- WsAlertSubscribeMessage: components["schemas"]["WsAlertTraderFirstTradeSubscribeMessage"] | components["schemas"]["WsAlertTraderNewMarketSubscribeMessage"] | components["schemas"]["WsAlertTraderWhaleTradeSubscribeMessage"] | components["schemas"]["WsAlertTraderNewTradeSubscribeMessage"] | components["schemas"]["WsAlertTraderTradeEventSubscribeMessage"] | components["schemas"]["WsAlertTraderGlobalPnlSubscribeMessage"] | components["schemas"]["WsAlertTraderMarketPnlSubscribeMessage"] | components["schemas"]["WsAlertTraderEventPnlSubscribeMessage"] | components["schemas"]["WsAlertConditionMetricsSubscribeMessage"] | components["schemas"]["WsAlertEventMetricsSubscribeMessage"] | components["schemas"]["WsAlertTagMetricsSubscribeMessage"] | components["schemas"]["WsAlertPositionMetricsSubscribeMessage"] | components["schemas"]["WsAlertMarketVolumeMilestoneSubscribeMessage"] | components["schemas"]["WsAlertEventVolumeMilestoneSubscribeMessage"] | components["schemas"]["WsAlertPositionVolumeMilestoneSubscribeMessage"] | components["schemas"]["WsAlertProbabilitySpikeSubscribeMessage"] | components["schemas"]["WsAlertPriceSpikeSubscribeMessage"] | components["schemas"]["WsAlertMarketVolumeSpikeSubscribeMessage"] | components["schemas"]["WsAlertEventVolumeSpikeSubscribeMessage"] | components["schemas"]["WsAlertPositionVolumeSpikeSubscribeMessage"] | components["schemas"]["WsAlertCloseToBondSubscribeMessage"] | components["schemas"]["WsAlertMarketCreatedSubscribeMessage"] | components["schemas"]["WsAlertOracleEventsSubscribeMessage"] | components["schemas"]["WsAlertAssetPriceTickSubscribeMessage"] | components["schemas"]["WsAlertAssetPriceWindowUpdateSubscribeMessage"];
5665
+ WsAlertSubscribeMessage: components["schemas"]["WsAlertTraderFirstTradeSubscribeMessage"] | components["schemas"]["WsAlertTraderNewMarketSubscribeMessage"] | components["schemas"]["WsAlertTraderWhaleTradeSubscribeMessage"] | components["schemas"]["WsAlertTraderNewTradeSubscribeMessage"] | components["schemas"]["WsAlertTraderTradeEventSubscribeMessage"] | components["schemas"]["WsAlertTraderGlobalPnlSubscribeMessage"] | components["schemas"]["WsAlertTraderMarketPnlSubscribeMessage"] | components["schemas"]["WsAlertTraderCategoryPnlSubscribeMessage"] | components["schemas"]["WsAlertTraderPositionResolvedSubscribeMessage"] | components["schemas"]["WsAlertTraderPnlExitsSubscribeMessage"] | components["schemas"]["WsAlertPositionHolderMetricsSubscribeMessage"] | components["schemas"]["WsAlertConditionHolderMetricsSubscribeMessage"] | components["schemas"]["WsAlertEventHolderMetricsSubscribeMessage"] | components["schemas"]["WsAlertConditionMetricsSubscribeMessage"] | components["schemas"]["WsAlertEventMetricsSubscribeMessage"] | components["schemas"]["WsAlertTagMetricsSubscribeMessage"] | components["schemas"]["WsAlertPositionMetricsSubscribeMessage"] | components["schemas"]["WsAlertMarketVolumeMilestoneSubscribeMessage"] | components["schemas"]["WsAlertEventVolumeMilestoneSubscribeMessage"] | components["schemas"]["WsAlertPositionVolumeMilestoneSubscribeMessage"] | components["schemas"]["WsAlertProbabilitySpikeSubscribeMessage"] | components["schemas"]["WsAlertPriceSpikeSubscribeMessage"] | components["schemas"]["WsAlertMarketVolumeSpikeSubscribeMessage"] | components["schemas"]["WsAlertEventVolumeSpikeSubscribeMessage"] | components["schemas"]["WsAlertPositionVolumeSpikeSubscribeMessage"] | components["schemas"]["WsAlertCloseToBondSubscribeMessage"] | components["schemas"]["WsAlertMarketCreatedSubscribeMessage"] | components["schemas"]["WsAlertOracleEventsSubscribeMessage"] | components["schemas"]["WsAlertAssetPriceTickSubscribeMessage"] | components["schemas"]["WsAlertAssetPriceWindowUpdateSubscribeMessage"];
5001
5666
  /** @description Typed unsubscribe request for the alerts WebSocket. The request shape depends on `event` and must match the original subscription filters. */
5002
- WsAlertUnsubscribeMessage: components["schemas"]["WsAlertTraderFirstTradeUnsubscribeMessage"] | components["schemas"]["WsAlertTraderNewMarketUnsubscribeMessage"] | components["schemas"]["WsAlertTraderWhaleTradeUnsubscribeMessage"] | components["schemas"]["WsAlertTraderNewTradeUnsubscribeMessage"] | components["schemas"]["WsAlertTraderTradeEventUnsubscribeMessage"] | components["schemas"]["WsAlertTraderGlobalPnlUnsubscribeMessage"] | components["schemas"]["WsAlertTraderMarketPnlUnsubscribeMessage"] | components["schemas"]["WsAlertTraderEventPnlUnsubscribeMessage"] | components["schemas"]["WsAlertConditionMetricsUnsubscribeMessage"] | components["schemas"]["WsAlertEventMetricsUnsubscribeMessage"] | components["schemas"]["WsAlertTagMetricsUnsubscribeMessage"] | components["schemas"]["WsAlertPositionMetricsUnsubscribeMessage"] | components["schemas"]["WsAlertMarketVolumeMilestoneUnsubscribeMessage"] | components["schemas"]["WsAlertEventVolumeMilestoneUnsubscribeMessage"] | components["schemas"]["WsAlertPositionVolumeMilestoneUnsubscribeMessage"] | components["schemas"]["WsAlertProbabilitySpikeUnsubscribeMessage"] | components["schemas"]["WsAlertPriceSpikeUnsubscribeMessage"] | components["schemas"]["WsAlertMarketVolumeSpikeUnsubscribeMessage"] | components["schemas"]["WsAlertEventVolumeSpikeUnsubscribeMessage"] | components["schemas"]["WsAlertPositionVolumeSpikeUnsubscribeMessage"] | components["schemas"]["WsAlertCloseToBondUnsubscribeMessage"] | components["schemas"]["WsAlertMarketCreatedUnsubscribeMessage"] | components["schemas"]["WsAlertOracleEventsUnsubscribeMessage"] | components["schemas"]["WsAlertAssetPriceTickUnsubscribeMessage"] | components["schemas"]["WsAlertAssetPriceWindowUpdateUnsubscribeMessage"];
5667
+ WsAlertUnsubscribeMessage: components["schemas"]["WsAlertTraderFirstTradeUnsubscribeMessage"] | components["schemas"]["WsAlertTraderNewMarketUnsubscribeMessage"] | components["schemas"]["WsAlertTraderWhaleTradeUnsubscribeMessage"] | components["schemas"]["WsAlertTraderNewTradeUnsubscribeMessage"] | components["schemas"]["WsAlertTraderTradeEventUnsubscribeMessage"] | components["schemas"]["WsAlertTraderGlobalPnlUnsubscribeMessage"] | components["schemas"]["WsAlertTraderMarketPnlUnsubscribeMessage"] | components["schemas"]["WsAlertTraderCategoryPnlUnsubscribeMessage"] | components["schemas"]["WsAlertTraderPositionResolvedUnsubscribeMessage"] | components["schemas"]["WsAlertTraderPnlExitsUnsubscribeMessage"] | components["schemas"]["WsAlertPositionHolderMetricsUnsubscribeMessage"] | components["schemas"]["WsAlertConditionHolderMetricsUnsubscribeMessage"] | components["schemas"]["WsAlertEventHolderMetricsUnsubscribeMessage"] | components["schemas"]["WsAlertConditionMetricsUnsubscribeMessage"] | components["schemas"]["WsAlertEventMetricsUnsubscribeMessage"] | components["schemas"]["WsAlertTagMetricsUnsubscribeMessage"] | components["schemas"]["WsAlertPositionMetricsUnsubscribeMessage"] | components["schemas"]["WsAlertMarketVolumeMilestoneUnsubscribeMessage"] | components["schemas"]["WsAlertEventVolumeMilestoneUnsubscribeMessage"] | components["schemas"]["WsAlertPositionVolumeMilestoneUnsubscribeMessage"] | components["schemas"]["WsAlertProbabilitySpikeUnsubscribeMessage"] | components["schemas"]["WsAlertPriceSpikeUnsubscribeMessage"] | components["schemas"]["WsAlertMarketVolumeSpikeUnsubscribeMessage"] | components["schemas"]["WsAlertEventVolumeSpikeUnsubscribeMessage"] | components["schemas"]["WsAlertPositionVolumeSpikeUnsubscribeMessage"] | components["schemas"]["WsAlertCloseToBondUnsubscribeMessage"] | components["schemas"]["WsAlertMarketCreatedUnsubscribeMessage"] | components["schemas"]["WsAlertOracleEventsUnsubscribeMessage"] | components["schemas"]["WsAlertAssetPriceTickUnsubscribeMessage"] | components["schemas"]["WsAlertAssetPriceWindowUpdateUnsubscribeMessage"];
5003
5668
  /** @description Typed pushed-event envelope for the alerts WebSocket. The `data` payload depends on `event` and matches the corresponding HTTP webhook payload schema. */
5004
- WsAlertEventPayload: components["schemas"]["WsAlertTraderFirstTradeEvent"] | components["schemas"]["WsAlertTraderNewMarketEvent"] | components["schemas"]["WsAlertTraderWhaleTradeEvent"] | components["schemas"]["WsAlertTraderNewTradeEvent"] | components["schemas"]["WsAlertTraderTradeEventEvent"] | components["schemas"]["WsAlertTraderGlobalPnlEvent"] | components["schemas"]["WsAlertTraderMarketPnlEvent"] | components["schemas"]["WsAlertTraderEventPnlEvent"] | components["schemas"]["WsAlertConditionMetricsEvent"] | components["schemas"]["WsAlertEventMetricsEvent"] | components["schemas"]["WsAlertTagMetricsEvent"] | components["schemas"]["WsAlertPositionMetricsEvent"] | components["schemas"]["WsAlertMarketVolumeMilestoneEvent"] | components["schemas"]["WsAlertEventVolumeMilestoneEvent"] | components["schemas"]["WsAlertPositionVolumeMilestoneEvent"] | components["schemas"]["WsAlertProbabilitySpikeEvent"] | components["schemas"]["WsAlertPriceSpikeEvent"] | components["schemas"]["WsAlertMarketVolumeSpikeEvent"] | components["schemas"]["WsAlertEventVolumeSpikeEvent"] | components["schemas"]["WsAlertPositionVolumeSpikeEvent"] | components["schemas"]["WsAlertCloseToBondEvent"] | components["schemas"]["WsAlertMarketCreatedEvent"] | components["schemas"]["WsAlertOracleEventsEvent"] | components["schemas"]["WsAlertAssetPriceTickEvent"] | components["schemas"]["WsAlertAssetPriceWindowUpdateEvent"];
5669
+ WsAlertEventPayload: components["schemas"]["WsAlertTraderFirstTradeEvent"] | components["schemas"]["WsAlertTraderNewMarketEvent"] | components["schemas"]["WsAlertTraderWhaleTradeEvent"] | components["schemas"]["WsAlertTraderNewTradeEvent"] | components["schemas"]["WsAlertTraderTradeEventEvent"] | components["schemas"]["WsAlertTraderGlobalPnlEvent"] | components["schemas"]["WsAlertTraderMarketPnlEvent"] | components["schemas"]["WsAlertTraderCategoryPnlEvent"] | components["schemas"]["WsAlertTraderPositionResolvedEvent"] | components["schemas"]["WsAlertTraderPnlExitsEvent"] | components["schemas"]["WsAlertPositionHolderMetricsEvent"] | components["schemas"]["WsAlertConditionHolderMetricsEvent"] | components["schemas"]["WsAlertEventHolderMetricsEvent"] | components["schemas"]["WsAlertConditionMetricsEvent"] | components["schemas"]["WsAlertEventMetricsEvent"] | components["schemas"]["WsAlertTagMetricsEvent"] | components["schemas"]["WsAlertPositionMetricsEvent"] | components["schemas"]["WsAlertMarketVolumeMilestoneEvent"] | components["schemas"]["WsAlertEventVolumeMilestoneEvent"] | components["schemas"]["WsAlertPositionVolumeMilestoneEvent"] | components["schemas"]["WsAlertProbabilitySpikeEvent"] | components["schemas"]["WsAlertPriceSpikeEvent"] | components["schemas"]["WsAlertMarketVolumeSpikeEvent"] | components["schemas"]["WsAlertEventVolumeSpikeEvent"] | components["schemas"]["WsAlertPositionVolumeSpikeEvent"] | components["schemas"]["WsAlertCloseToBondEvent"] | components["schemas"]["WsAlertMarketCreatedEvent"] | components["schemas"]["WsAlertOracleEventsEvent"] | components["schemas"]["WsAlertAssetPriceTickEvent"] | components["schemas"]["WsAlertAssetPriceWindowUpdateEvent"];
5005
5670
  };
5006
5671
  responses: never;
5007
5672
  parameters: never;
@@ -5019,7 +5684,12 @@ export interface WsAlertSubscribeMap {
5019
5684
  trader_trade_event: components["schemas"]["WsAlertTraderTradeEventSubscribeMessage"];
5020
5685
  trader_global_pnl: components["schemas"]["WsAlertTraderGlobalPnlSubscribeMessage"];
5021
5686
  trader_market_pnl: components["schemas"]["WsAlertTraderMarketPnlSubscribeMessage"];
5022
- trader_event_pnl: components["schemas"]["WsAlertTraderEventPnlSubscribeMessage"];
5687
+ trader_category_pnl: components["schemas"]["WsAlertTraderCategoryPnlSubscribeMessage"];
5688
+ trader_position_resolved: components["schemas"]["WsAlertTraderPositionResolvedSubscribeMessage"];
5689
+ trader_pnl_exits: components["schemas"]["WsAlertTraderPnlExitsSubscribeMessage"];
5690
+ position_holder_metrics: components["schemas"]["WsAlertPositionHolderMetricsSubscribeMessage"];
5691
+ condition_holder_metrics: components["schemas"]["WsAlertConditionHolderMetricsSubscribeMessage"];
5692
+ event_holder_metrics: components["schemas"]["WsAlertEventHolderMetricsSubscribeMessage"];
5023
5693
  condition_metrics: components["schemas"]["WsAlertConditionMetricsSubscribeMessage"];
5024
5694
  event_metrics: components["schemas"]["WsAlertEventMetricsSubscribeMessage"];
5025
5695
  tag_metrics: components["schemas"]["WsAlertTagMetricsSubscribeMessage"];
@@ -5046,7 +5716,12 @@ export interface WsAlertEventDataMap {
5046
5716
  trader_trade_event: components["schemas"]["WebhookTraderTradeEventPayload"];
5047
5717
  trader_global_pnl: components["schemas"]["GlobalPnlPayload"];
5048
5718
  trader_market_pnl: components["schemas"]["MarketPnlPayload"];
5049
- trader_event_pnl: components["schemas"]["EventPnlPayload"];
5719
+ trader_category_pnl: components["schemas"]["CategoryPnlPayload"];
5720
+ trader_position_resolved: components["schemas"]["PositionResolvedPayload"];
5721
+ trader_pnl_exits: components["schemas"]["ExitMarkersPayload"];
5722
+ position_holder_metrics: components["schemas"]["PositionHolderMetricsPayload"];
5723
+ condition_holder_metrics: components["schemas"]["ConditionHolderMetricsPayload"];
5724
+ event_holder_metrics: components["schemas"]["EventHolderMetricsPayload"];
5050
5725
  condition_metrics: components["schemas"]["ConditionMetricsPayload"];
5051
5726
  event_metrics: components["schemas"]["EventMetricsPayload"];
5052
5727
  tag_metrics: components["schemas"]["TagMetricsPayload"];