@structbuild/sdk 0.1.2

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.
@@ -0,0 +1,492 @@
1
+ export type { components, operations, paths } from "../generated/polymarket.js";
2
+ export type { Schemas, OperationQuery, OperationPath, OperationResponse } from "./helpers.js";
3
+ import type { Schemas, OperationQuery } from "./helpers.js";
4
+ export type BondMarket = Schemas["BondMarket"];
5
+ export type BondOutcome = Schemas["BondOutcome"];
6
+ export type CandlestickResolution = Schemas["CandlestickResolution"];
7
+ export type ClobReward = Schemas["ClobReward"];
8
+ export type ConditionMetricsResponse = Schemas["ConditionMetricsResponse"];
9
+ export type EventHolder = Schemas["EventHolder"];
10
+ export type EventHolderPnl = Schemas["EventHolderPnl"];
11
+ export type EventHoldersResponse = Schemas["EventHoldersResponse"];
12
+ export type EventMarket = Schemas["EventMarket"];
13
+ export type EventMarketOutcome = Schemas["EventMarketOutcome"];
14
+ export type EventMetricsResponse = Schemas["EventMetricsResponse"];
15
+ export type EventPnlSortBy = Schemas["EventPnlSortBy"];
16
+ export type EventSortBy = Schemas["EventSortBy"];
17
+ export type GlobalPnlSortBy = Schemas["GlobalPnlSortBy"];
18
+ export type GlobalPnlTrader = Schemas["GlobalPnlTrader"];
19
+ export type Holder = Schemas["Holder"];
20
+ export type HolderHistoryCandle = Schemas["HolderHistoryCandle"];
21
+ export type MarketHolderPnl = Schemas["MarketHolderPnl"];
22
+ export type MarketHoldersResponse = Schemas["MarketHoldersResponse"];
23
+ export type MarketMetadata = Schemas["MarketMetadata"];
24
+ export type MarketMetadataOutcome = Schemas["MarketMetadataOutcome"];
25
+ export type MarketOutcome = Schemas["MarketOutcome"];
26
+ export type MarketPnlSortBy = Schemas["MarketPnlSortBy"];
27
+ export type MarketVolumeChartResponse = Schemas["MarketVolumeChartResponse"];
28
+ export type MarketVolumeDataPoint = Schemas["MarketVolumeDataPoint"];
29
+ export type MetricsTimeframe = Schemas["MetricsTimeframe"];
30
+ export type OutcomeHolders = Schemas["OutcomeHolders"];
31
+ export type OutcomeTimeframeMetrics = Schemas["OutcomeTimeframeMetrics"];
32
+ export type PnlCandleResolution = Schemas["PnlCandleResolution"];
33
+ export type PnlTimeframe = Schemas["PnlTimeframe"];
34
+ export type Event = Schemas["PolymarketEvent"];
35
+ export type PolymarketSeries = Schemas["PolymarketSeries"];
36
+ export type Tag = Schemas["PolymarketTag"];
37
+ export type UserProfile = Schemas["PolymarketUserProfile"];
38
+ export type PositionHolderPnl = Schemas["PositionHolderPnl"];
39
+ export type PositionHoldersResponse = Schemas["PositionHoldersResponse"];
40
+ export type PositionMetricsResponse = Schemas["PositionMetricsResponse"];
41
+ export type PositionPnlSortBy = Schemas["PositionPnlSortBy"];
42
+ export type PositionStatus = Schemas["PositionStatus"];
43
+ export type PositionVolumeChartResponse = Schemas["PositionVolumeChartResponse"];
44
+ export type PositionVolumeDataPoint = Schemas["PositionVolumeDataPoint"];
45
+ export type PredictionCandlestickBar = Schemas["PredictionCandlestickBar"];
46
+ export type PredictionCandlestickResponseData = Schemas["PredictionCandlestickResponseData"];
47
+ export type PredictionTradeResponse = Schemas["PredictionTradeResponse"];
48
+ export type SearchResponse = Schemas["SearchResponse"];
49
+ export type SeriesFullResponse = Schemas["SeriesFullResponse"];
50
+ export type SimpleTimeframeMetrics = Schemas["SimpleTimeframeMetrics"];
51
+ export type SortDirection = Schemas["SortDirection"];
52
+ export type TokenOutcome = Schemas["TokenOutcome"];
53
+ export type Trader = Schemas["Trader"];
54
+ export type TraderInfo = Schemas["TraderInfo"];
55
+ export type TraderVolumeChartResponse = Schemas["TraderVolumeChartResponse"];
56
+ export type TraderVolumeDataPoint = Schemas["TraderVolumeDataPoint"];
57
+ export type Series = Schemas["PolymarketSeries"];
58
+ export type SeriesDetail = Schemas["SeriesFullResponse"];
59
+ export type Trade = Schemas["PredictionTradeResponse"];
60
+ export type Candlestick = Schemas["PredictionCandlestickBar"];
61
+ export type CandlestickResponse = Schemas["PredictionCandlestickResponseData"];
62
+ export type Timeframe = Schemas["MetricsTimeframe"];
63
+ export type GlobalPnlTimeframe = Schemas["PnlTimeframe"];
64
+ export type TradeSide = "Buy" | "Sell";
65
+ export type EventStatus = "active" | "resolved" | "ended" | "archived";
66
+ export type HolderSortBy = "shares_held" | "total_cost_usd" | "unrealized_pnl_usd";
67
+ export interface TraderScore {
68
+ trader: TraderInfo;
69
+ is_bot: boolean;
70
+ bot_confidence: number;
71
+ bot_reasons: string[];
72
+ smart_money_score: number;
73
+ insider_score: number;
74
+ insider_score_permanent: boolean;
75
+ market_count: number;
76
+ avg_trade_size_usd: string;
77
+ total_trades: number;
78
+ total_volume_usd: string;
79
+ first_trade_at: number | null;
80
+ last_trade_at: number;
81
+ }
82
+ export interface SmartMoneyEntry {
83
+ trader: TraderInfo;
84
+ smart_money_score: number;
85
+ total_trades: number;
86
+ total_volume_usd: string;
87
+ market_count: number;
88
+ last_trade_at: number;
89
+ }
90
+ export interface InsiderEntry {
91
+ trader: TraderInfo;
92
+ insider_score: number;
93
+ insider_score_permanent: boolean;
94
+ market_count: number;
95
+ avg_trade_size_usd: string;
96
+ total_trades: number;
97
+ first_trade_at: number | null;
98
+ last_trade_at: number;
99
+ }
100
+ export interface BotEntry {
101
+ trader: TraderInfo;
102
+ is_bot: boolean;
103
+ bot_confidence: number;
104
+ bot_reasons: string[];
105
+ total_trades: number;
106
+ total_volume_usd: string;
107
+ last_trade_at: number;
108
+ }
109
+ export type PortfolioTimeframe = "7d" | "30d" | "lifetime";
110
+ export interface PortfolioOutcome {
111
+ index: number;
112
+ name: string;
113
+ }
114
+ export interface PortfolioMarketMetadata {
115
+ question: string | null;
116
+ title: string | null;
117
+ id: string | null;
118
+ market_id: string | null;
119
+ slug: string | null;
120
+ image_url: string | null;
121
+ status: string | null;
122
+ outcomes: PortfolioOutcome[] | null;
123
+ }
124
+ export interface ResolvedMarketMetadata {
125
+ question: string | null;
126
+ title: string | null;
127
+ id: string | null;
128
+ market_id: string | null;
129
+ slug: string | null;
130
+ image_url: string | null;
131
+ winning_outcome: number | null;
132
+ outcomes: PortfolioOutcome[] | null;
133
+ }
134
+ export interface PositionMarketMetadata {
135
+ question: string | null;
136
+ title: string | null;
137
+ id: string | null;
138
+ market_id: string | null;
139
+ slug: string | null;
140
+ image_url: string | null;
141
+ status: string | null;
142
+ winning_outcome: number | null;
143
+ outcomes: PortfolioOutcome[] | null;
144
+ }
145
+ export interface OverallStats {
146
+ realized_pnl_usd: number | null;
147
+ unrealized_pnl_usd: number | null;
148
+ resolved_markets_count: number | null;
149
+ winning_markets_count: number | null;
150
+ win_rate: number | null;
151
+ total_trades: number | null;
152
+ total_volume_usd: number | null;
153
+ smart_money_score: number | null;
154
+ insider_score: number | null;
155
+ first_trade_at: number | null;
156
+ last_trade_at: number | null;
157
+ }
158
+ export interface TimeframeStats {
159
+ timeframe: string;
160
+ buy_count: number | null;
161
+ sell_count: number | null;
162
+ buy_volume_usd: number | null;
163
+ sell_volume_usd: number | null;
164
+ unique_markets: number | null;
165
+ }
166
+ export interface ActivePosition {
167
+ condition_id: string;
168
+ outcome_index: number | null;
169
+ outcome_name: string | null;
170
+ shares_held: number | null;
171
+ avg_entry_price: number | null;
172
+ total_cost_usd: number | null;
173
+ realized_pnl_usd: number | null;
174
+ entry_probability: number | null;
175
+ entry_timestamp: number | null;
176
+ created_at: number | null;
177
+ updated_at: number | null;
178
+ market: PortfolioMarketMetadata | null;
179
+ }
180
+ export interface ResolvedPosition {
181
+ condition_id: string;
182
+ outcome_index: number | null;
183
+ outcome_name: string | null;
184
+ shares_held: number | null;
185
+ avg_entry_price: number | null;
186
+ total_cost_usd: number | null;
187
+ realized_pnl_usd: number | null;
188
+ entry_probability: number | null;
189
+ entry_timestamp: number | null;
190
+ created_at: number | null;
191
+ updated_at: number | null;
192
+ is_winner: boolean | null;
193
+ market: ResolvedMarketMetadata | null;
194
+ }
195
+ export interface PnlChartPoint {
196
+ timestamp: number;
197
+ cumulative_pnl_usd: number | null;
198
+ }
199
+ export interface Portfolio {
200
+ overall_stats: OverallStats | null;
201
+ timeframe_stats: TimeframeStats | null;
202
+ active_positions: ActivePosition[];
203
+ resolved_positions: ResolvedPosition[];
204
+ pnl_chart_data: PnlChartPoint[];
205
+ }
206
+ export interface Position {
207
+ condition_id: string;
208
+ outcome_index: number | null;
209
+ outcome_name: string | null;
210
+ shares_held: number | null;
211
+ avg_entry_price: number | null;
212
+ total_cost_usd: number | null;
213
+ realized_pnl_usd: number | null;
214
+ is_resolved: boolean | null;
215
+ entry_probability: number | null;
216
+ current_price: number | null;
217
+ current_value_usd: number | null;
218
+ unrealized_pnl_usd: number | null;
219
+ entry_timestamp: number | null;
220
+ created_at: number | null;
221
+ updated_at: number | null;
222
+ market: PositionMarketMetadata | null;
223
+ }
224
+ export interface PositionsResponse {
225
+ positions: Position[];
226
+ total_count: number | null;
227
+ limit: number;
228
+ offset: number;
229
+ }
230
+ export interface TradeEntry {
231
+ id: string;
232
+ hash: string | null;
233
+ condition_id: string | null;
234
+ side: number | null;
235
+ outcome: string | null;
236
+ outcome_index: number | null;
237
+ usd_amount: number | null;
238
+ shares_amount: number | null;
239
+ price: number | null;
240
+ probability: number | null;
241
+ confirmed_at: number | null;
242
+ market: PositionMarketMetadata | null;
243
+ }
244
+ export interface TradesResponse {
245
+ trades: TradeEntry[];
246
+ total_count: number | null;
247
+ limit: number;
248
+ offset: number;
249
+ }
250
+ export interface TraderPnlSummary {
251
+ realized_pnl_usd: number | null;
252
+ events_traded: number | null;
253
+ markets_traded: number | null;
254
+ positions_traded: number | null;
255
+ total_buys: number | null;
256
+ total_sells: number | null;
257
+ total_redemptions: number | null;
258
+ total_merges: number | null;
259
+ total_volume_usd: number | null;
260
+ buy_volume_usd: number | null;
261
+ sell_volume_usd: number | null;
262
+ redemption_volume_usd: number | null;
263
+ merge_volume_usd: number | null;
264
+ winning_positions: number | null;
265
+ losing_positions: number | null;
266
+ win_rate_pct: number | null;
267
+ markets_won: number | null;
268
+ markets_lost: number | null;
269
+ market_win_rate_pct: number | null;
270
+ open_positions: number | null;
271
+ avg_pnl_per_position: number | null;
272
+ avg_pnl_per_trade: number | null;
273
+ avg_hold_time_seconds: number | null;
274
+ total_fees: number | null;
275
+ first_trade_at: number | null;
276
+ last_trade_at: number | null;
277
+ }
278
+ export interface TraderPositionPnlEntry {
279
+ condition_id: string | null;
280
+ position_id: string | null;
281
+ outcome: string | null;
282
+ outcome_index: number | null;
283
+ event_slug: string | null;
284
+ buy_count: number | null;
285
+ sell_count: number | null;
286
+ redemption_count: number | null;
287
+ merge_count: number | null;
288
+ total_shares_bought: number | null;
289
+ total_shares_sold: number | null;
290
+ total_shares_redeemed: number | null;
291
+ total_shares_merged: number | null;
292
+ net_shares: number | null;
293
+ buy_usd: number | null;
294
+ sell_usd: number | null;
295
+ redemption_usd: number | null;
296
+ merge_usd: number | null;
297
+ realized_pnl_usd: number | null;
298
+ cost_basis: number | null;
299
+ total_fees: number | null;
300
+ first_trade_at: number | null;
301
+ last_trade_at: number | null;
302
+ }
303
+ export interface TraderMarketPnlEntry {
304
+ condition_id: string | null;
305
+ event_slug: string | null;
306
+ outcomes_traded: number | null;
307
+ total_buys: number | null;
308
+ total_sells: number | null;
309
+ total_redemptions: number | null;
310
+ total_merges: number | null;
311
+ buy_usd: number | null;
312
+ sell_usd: number | null;
313
+ redemption_usd: number | null;
314
+ merge_usd: number | null;
315
+ realized_pnl_usd: number | null;
316
+ has_open_position: boolean | null;
317
+ net_yes_shares: number | null;
318
+ net_no_shares: number | null;
319
+ winning_outcomes: number | null;
320
+ losing_outcomes: number | null;
321
+ total_fees: number | null;
322
+ first_trade_at: number | null;
323
+ last_trade_at: number | null;
324
+ }
325
+ export interface TraderEventPnlEntry {
326
+ event_slug: string | null;
327
+ markets_traded: number | null;
328
+ outcomes_traded: number | null;
329
+ total_buys: number | null;
330
+ total_sells: number | null;
331
+ total_redemptions: number | null;
332
+ total_merges: number | null;
333
+ total_volume_usd: number | null;
334
+ buy_usd: number | null;
335
+ sell_usd: number | null;
336
+ redemption_usd: number | null;
337
+ merge_usd: number | null;
338
+ realized_pnl_usd: number | null;
339
+ winning_markets: number | null;
340
+ losing_markets: number | null;
341
+ total_fees: number | null;
342
+ first_trade_at: number | null;
343
+ last_trade_at: number | null;
344
+ }
345
+ export interface PnlCandleEntry {
346
+ ts: number;
347
+ pnl_usd: number;
348
+ }
349
+ export interface PnlListResponse<T> {
350
+ data: T[];
351
+ total_count: number;
352
+ }
353
+ export interface PnlCandlesResponse {
354
+ data: PnlCandleEntry[];
355
+ }
356
+ export interface GlobalPnlResponse {
357
+ traders: GlobalPnlTrader[];
358
+ total_count: number;
359
+ }
360
+ export interface TraderSearchResult {
361
+ address: string;
362
+ name?: string;
363
+ pseudonym?: string;
364
+ profile_image?: string;
365
+ x_username?: string;
366
+ verified_badge: boolean;
367
+ }
368
+ export interface GetBondsParams extends OperationQuery<"get_bonds"> {
369
+ }
370
+ export interface GetEventsParams extends OperationQuery<"get_events"> {
371
+ }
372
+ export interface GetEventMetricsParams extends OperationQuery<"get_event_metrics"> {
373
+ }
374
+ export interface GetMarketMetricsParams extends OperationQuery<"get_market_metrics"> {
375
+ }
376
+ export interface GetPositionMetricsParams extends OperationQuery<"get_position_metrics"> {
377
+ }
378
+ export interface GetEventHoldersParams extends OperationQuery<"get_event_holders"> {
379
+ eventSlug: string;
380
+ }
381
+ export interface GetEventHoldersHistoryParams {
382
+ eventSlug: string;
383
+ hours?: number;
384
+ }
385
+ export interface GetMarketHoldersParams extends OperationQuery<"get_market_holders"> {
386
+ conditionId: string;
387
+ }
388
+ export interface GetMarketHoldersHistoryParams {
389
+ conditionId: string;
390
+ hours?: number;
391
+ }
392
+ export interface GetPositionHoldersParams extends OperationQuery<"get_position_holders"> {
393
+ positionId: string;
394
+ }
395
+ export interface GetPositionHoldersHistoryParams {
396
+ positionId: string;
397
+ hours?: number;
398
+ }
399
+ export interface GetMarketsParams extends OperationQuery<"list_markets"> {
400
+ }
401
+ export interface GetMarketParams {
402
+ conditionId: string;
403
+ }
404
+ export interface GetMarketBySlugParams {
405
+ slug: string;
406
+ }
407
+ export interface GetCandlestickParams extends OperationQuery<"get_market_candlestick"> {
408
+ }
409
+ export interface GetPositionCandlestickParams extends OperationQuery<"get_position_candlestick"> {
410
+ }
411
+ export interface GetMarketVolumeChartParams extends OperationQuery<"get_market_volume_chart"> {
412
+ }
413
+ export interface GetPositionVolumeChartParams extends OperationQuery<"get_position_volume_chart"> {
414
+ }
415
+ export interface GetTradesParams extends OperationQuery<"get_market_trades"> {
416
+ }
417
+ export interface GetSearchParams extends OperationQuery<"search"> {
418
+ }
419
+ export interface GetSeriesListParams extends OperationQuery<"get_series_list"> {
420
+ }
421
+ export interface GetSeriesDetailParams extends OperationQuery<"get_series_by_id"> {
422
+ identifier: string;
423
+ }
424
+ export interface GetSeriesEventsParams extends OperationQuery<"get_series_events"> {
425
+ identifier: string;
426
+ }
427
+ export interface GetTagsParams extends OperationQuery<"get_tags"> {
428
+ }
429
+ export interface GetTagParams {
430
+ identifier: string;
431
+ }
432
+ export interface GetGlobalPnlParams extends OperationQuery<"get_global_pnl"> {
433
+ }
434
+ export interface GetTraderPnlParams {
435
+ address: string;
436
+ timeframe?: PnlTimeframe;
437
+ }
438
+ export interface GetTraderPnlBreakdownParams {
439
+ address: string;
440
+ timeframe?: PnlTimeframe;
441
+ sort_by?: string;
442
+ sort_direction?: SortDirection;
443
+ limit?: number;
444
+ pagination_key?: number;
445
+ condition_id?: string;
446
+ event_slug?: string;
447
+ }
448
+ export interface GetTraderPnlCandlesParams {
449
+ address: string;
450
+ resolution?: PnlCandleResolution;
451
+ start_ts?: number;
452
+ end_ts?: number;
453
+ limit?: number;
454
+ }
455
+ export interface GetPortfolioParams {
456
+ address: string;
457
+ timeframe?: PortfolioTimeframe;
458
+ }
459
+ export interface GetPortfolioPositionsParams extends OperationQuery<"get_portfolio_positions"> {
460
+ address: string;
461
+ }
462
+ export interface GetTraderTradesParams extends OperationQuery<"get_trader_trades"> {
463
+ address: string;
464
+ }
465
+ export interface GetTraderProfileParams {
466
+ address: string;
467
+ }
468
+ export interface GetTraderProfilesBatchParams {
469
+ addresses: string;
470
+ }
471
+ export interface GetTraderVolumeChartParams extends OperationQuery<"get_trader_volume_chart"> {
472
+ address: string;
473
+ }
474
+ export interface GetTraderScoreParams {
475
+ address: string;
476
+ }
477
+ export interface LeaderboardParams {
478
+ limit?: number;
479
+ }
480
+ export interface GetEventParams {
481
+ id: string;
482
+ include_tags?: boolean;
483
+ include_markets?: boolean;
484
+ }
485
+ export interface GetEventBySlugParams {
486
+ slug: string;
487
+ include_tags?: boolean;
488
+ include_markets?: boolean;
489
+ }
490
+ export type { RetryConfig, HttpClientConfig, RequestOptions, HttpResponse, RequestHookInfo, ResponseHookInfo, ApiResponseInfo } from "./http.js";
491
+ export type { Address, PaginationParams, SortParams, Venue } from "./common.js";
492
+ export type { ConnectionState, StructWebSocketConfig, PredictionTrade, EnrichedPredictionTrade, PredictionMarketMetadata, PredictionWalletTrackingAlert, WebSocketEventMap, WebSocketMessage, WebSocketServerMessage, } from "./ws.js";
@@ -0,0 +1,110 @@
1
+ import type { Address } from "./common.js";
2
+ import type { RetryConfig } from "./http.js";
3
+ export type ConnectionState = "disconnected" | "connecting" | "connected" | "reconnecting";
4
+ export interface StructWebSocketConfig {
5
+ apiKey: string;
6
+ baseUrl?: string;
7
+ reconnect?: RetryConfig;
8
+ }
9
+ export interface PredictionTrade {
10
+ id: string;
11
+ hash: string;
12
+ chain_id: number;
13
+ block: number;
14
+ confirmed_at: number;
15
+ log_index: number;
16
+ block_index?: number;
17
+ order_hash?: string;
18
+ trader: Address;
19
+ taker: Address;
20
+ side: number;
21
+ condition_id: string | null;
22
+ position_id: string;
23
+ outcome: string | null;
24
+ outcome_index: number | null;
25
+ question: string | null;
26
+ slug: string | null;
27
+ event_slug?: string | null;
28
+ usd_amount: string;
29
+ shares_amount: string;
30
+ price: number;
31
+ probability: number | null;
32
+ fee?: string;
33
+ exchange?: number;
34
+ trade_type?: number;
35
+ }
36
+ export interface EnrichedPredictionTrade {
37
+ id: string;
38
+ hash: string;
39
+ block: number;
40
+ confirmed_at: number;
41
+ trader: Address;
42
+ side: number;
43
+ position_id: string;
44
+ condition_id: string | null;
45
+ outcome: string | null;
46
+ outcome_index: number | null;
47
+ question: string;
48
+ slug: string;
49
+ event_slug: string;
50
+ image_url: string | null;
51
+ market_id: string | null;
52
+ title: string | null;
53
+ usd_amount: string;
54
+ shares_amount: string;
55
+ price: number;
56
+ probability: number | null;
57
+ smart_money_score: number;
58
+ insider_score: number;
59
+ categories: string[];
60
+ }
61
+ export interface PredictionMarketMetadata {
62
+ slug: string | null;
63
+ question: string | null;
64
+ outcome: string | null;
65
+ outcome_index?: number | null;
66
+ image_url?: string | null;
67
+ }
68
+ export interface PredictionWalletTrackingAlert {
69
+ is_buy: boolean;
70
+ trader: Address;
71
+ condition_id: string | null;
72
+ position_id: string;
73
+ usd_amount: string;
74
+ shares_amount: string;
75
+ price: number;
76
+ probability: number | null;
77
+ metadata: PredictionMarketMetadata | null;
78
+ confirmed_at: number;
79
+ }
80
+ export interface WebSocketEventMap {
81
+ market_trade: PredictionTrade;
82
+ whale_trade: EnrichedPredictionTrade;
83
+ smart_money_trade: EnrichedPredictionTrade;
84
+ insider_trade: EnrichedPredictionTrade;
85
+ wallet_tracking_alert: PredictionWalletTrackingAlert;
86
+ conditions_tracking_alert: PredictionTrade;
87
+ connected: void;
88
+ disconnected: {
89
+ code: number;
90
+ reason: string;
91
+ };
92
+ reconnecting: {
93
+ attempt: number;
94
+ };
95
+ error: Error;
96
+ }
97
+ export interface WebSocketMessage {
98
+ type: string;
99
+ room_id?: string;
100
+ action?: string;
101
+ message?: Record<string, unknown>;
102
+ wallet_addresses?: string[];
103
+ condition_ids?: string[];
104
+ }
105
+ export interface WebSocketServerMessage {
106
+ type: string;
107
+ data?: unknown;
108
+ room_id?: string;
109
+ message?: string;
110
+ }
@@ -0,0 +1,35 @@
1
+ import type { ConnectionState, WebSocketMessage } from "./types/ws.js";
2
+ import type { RetryConfig } from "./types/http.js";
3
+ export interface WebSocketTransportCallbacks {
4
+ onOpen: () => void;
5
+ onClose: (code: number, reason: string) => void;
6
+ onError: (error: Error) => void;
7
+ onMessage: (data: unknown) => void;
8
+ onReconnecting: (attempt: number) => void;
9
+ }
10
+ export declare class WebSocketTransport {
11
+ private ws;
12
+ private _state;
13
+ private reconnectTimer;
14
+ private reconnectAttempt;
15
+ private intentionalClose;
16
+ private readonly pendingMessages;
17
+ private readonly replayMessages;
18
+ private readonly url;
19
+ private readonly retry;
20
+ private readonly callbacks;
21
+ constructor(url: string, retry: RetryConfig, callbacks: WebSocketTransportCallbacks);
22
+ get state(): ConnectionState;
23
+ connect(): void;
24
+ disconnect(): void;
25
+ send(message: WebSocketMessage): void;
26
+ addReplayMessage(message: WebSocketMessage): void;
27
+ removeReplayMessages(predicate: (msg: WebSocketMessage) => boolean): void;
28
+ clearReplayMessages(): void;
29
+ private createSocket;
30
+ private replaySubscriptions;
31
+ private flushPendingMessages;
32
+ private scheduleReconnect;
33
+ private clearReconnectTimer;
34
+ private setState;
35
+ }
package/dist/ws.d.ts ADDED
@@ -0,0 +1,46 @@
1
+ import type { ConnectionState, StructWebSocketConfig, WebSocketEventMap } from "./types/ws.js";
2
+ import type { Address } from "./types/common.js";
3
+ type Listener<T> = (payload: T) => void;
4
+ export declare class StructWebSocket {
5
+ private readonly transport;
6
+ private readonly listeners;
7
+ private readonly activeMarkets;
8
+ private readonly activeMarketPositions;
9
+ private readonly activeWallets;
10
+ private readonly activeConditions;
11
+ private readonly activeSpecialRooms;
12
+ constructor(config: StructWebSocketConfig);
13
+ get state(): ConnectionState;
14
+ connect(): void;
15
+ disconnect(): void;
16
+ on<K extends keyof WebSocketEventMap>(event: K, listener: Listener<WebSocketEventMap[K]>): this;
17
+ off<K extends keyof WebSocketEventMap>(event: K, listener: Listener<WebSocketEventMap[K]>): this;
18
+ once<K extends keyof WebSocketEventMap>(event: K, listener: Listener<WebSocketEventMap[K]>): this;
19
+ subscribeMarket(conditionId: string): void;
20
+ unsubscribeMarket(conditionId: string): void;
21
+ subscribeMarketByPosition(positionId: string): void;
22
+ unsubscribeMarketByPosition(positionId: string): void;
23
+ trackWallets(addresses: Address[]): void;
24
+ untrackWallets(addresses: Address[]): void;
25
+ subscribeWhaleTrades(): void;
26
+ unsubscribeWhaleTrades(): void;
27
+ subscribeSmartMoneyTrades(): void;
28
+ unsubscribeSmartMoneyTrades(): void;
29
+ subscribeInsiderTrades(): void;
30
+ unsubscribeInsiderTrades(): void;
31
+ trackConditions(conditionIds: string[]): void;
32
+ untrackConditions(conditionIds: string[]): void;
33
+ private handleOpen;
34
+ private handleClose;
35
+ private handleMessage;
36
+ private emit;
37
+ private marketSubscribeMessage;
38
+ private marketPositionSubscribeMessage;
39
+ private walletTrackMessage;
40
+ private conditionsTrackMessage;
41
+ private subscribeSpecialRoom;
42
+ private unsubscribeSpecialRoom;
43
+ private rebuildWalletReplay;
44
+ private rebuildConditionsReplay;
45
+ }
46
+ export {};