@adaptic/utils 0.0.382 → 0.0.900

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 (225) hide show
  1. package/README.md +153 -61
  2. package/dist/index.cjs +60090 -5244
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.mjs +59829 -5244
  5. package/dist/index.mjs.map +1 -1
  6. package/dist/test.js +733 -383
  7. package/dist/test.js.map +1 -1
  8. package/dist/types/__tests__/alpaca-functions.test.d.ts +2 -0
  9. package/dist/types/__tests__/alpaca-functions.test.d.ts.map +1 -0
  10. package/dist/types/__tests__/api-endpoints.test.d.ts +2 -0
  11. package/dist/types/__tests__/api-endpoints.test.d.ts.map +1 -0
  12. package/dist/types/__tests__/asset-allocation.test.d.ts +2 -0
  13. package/dist/types/__tests__/asset-allocation.test.d.ts.map +1 -0
  14. package/dist/types/__tests__/auth-validator.test.d.ts +2 -0
  15. package/dist/types/__tests__/auth-validator.test.d.ts.map +1 -0
  16. package/dist/types/__tests__/cache.test.d.ts +2 -0
  17. package/dist/types/__tests__/cache.test.d.ts.map +1 -0
  18. package/dist/types/__tests__/errors.test.d.ts +2 -0
  19. package/dist/types/__tests__/errors.test.d.ts.map +1 -0
  20. package/dist/types/__tests__/financial-regression.test.d.ts +2 -0
  21. package/dist/types/__tests__/financial-regression.test.d.ts.map +1 -0
  22. package/dist/types/__tests__/format-tools.test.d.ts +2 -0
  23. package/dist/types/__tests__/format-tools.test.d.ts.map +1 -0
  24. package/dist/types/__tests__/http-keep-alive.test.d.ts +2 -0
  25. package/dist/types/__tests__/http-keep-alive.test.d.ts.map +1 -0
  26. package/dist/types/__tests__/http-timeout.test.d.ts +2 -0
  27. package/dist/types/__tests__/http-timeout.test.d.ts.map +1 -0
  28. package/dist/types/__tests__/logger.test.d.ts +2 -0
  29. package/dist/types/__tests__/logger.test.d.ts.map +1 -0
  30. package/dist/types/__tests__/market-time.test.d.ts +2 -0
  31. package/dist/types/__tests__/market-time.test.d.ts.map +1 -0
  32. package/dist/types/__tests__/misc-utils.test.d.ts +2 -0
  33. package/dist/types/__tests__/misc-utils.test.d.ts.map +1 -0
  34. package/dist/types/__tests__/paginator.test.d.ts +2 -0
  35. package/dist/types/__tests__/paginator.test.d.ts.map +1 -0
  36. package/dist/types/__tests__/performance-metrics.test.d.ts +2 -0
  37. package/dist/types/__tests__/performance-metrics.test.d.ts.map +1 -0
  38. package/dist/types/__tests__/polygon.test.d.ts +2 -0
  39. package/dist/types/__tests__/polygon.test.d.ts.map +1 -0
  40. package/dist/types/__tests__/price-utils.test.d.ts +2 -0
  41. package/dist/types/__tests__/price-utils.test.d.ts.map +1 -0
  42. package/dist/types/__tests__/property-based-financial.test.d.ts +2 -0
  43. package/dist/types/__tests__/property-based-financial.test.d.ts.map +1 -0
  44. package/dist/types/__tests__/rate-limiter.test.d.ts +2 -0
  45. package/dist/types/__tests__/rate-limiter.test.d.ts.map +1 -0
  46. package/dist/types/__tests__/schema-validation.test.d.ts +2 -0
  47. package/dist/types/__tests__/schema-validation.test.d.ts.map +1 -0
  48. package/dist/types/__tests__/technical-analysis.test.d.ts +2 -0
  49. package/dist/types/__tests__/technical-analysis.test.d.ts.map +1 -0
  50. package/dist/types/__tests__/time-utils.test.d.ts +2 -0
  51. package/dist/types/__tests__/time-utils.test.d.ts.map +1 -0
  52. package/dist/types/adaptic.d.ts +2 -2
  53. package/dist/types/adaptic.d.ts.map +1 -1
  54. package/dist/types/alpaca/client.d.ts +95 -0
  55. package/dist/types/alpaca/client.d.ts.map +1 -0
  56. package/dist/types/alpaca/crypto/data.d.ts +281 -0
  57. package/dist/types/alpaca/crypto/data.d.ts.map +1 -0
  58. package/dist/types/alpaca/crypto/index.d.ts +75 -0
  59. package/dist/types/alpaca/crypto/index.d.ts.map +1 -0
  60. package/dist/types/alpaca/crypto/orders.d.ts +221 -0
  61. package/dist/types/alpaca/crypto/orders.d.ts.map +1 -0
  62. package/dist/types/alpaca/index.d.ts +205 -0
  63. package/dist/types/alpaca/index.d.ts.map +1 -0
  64. package/dist/types/alpaca/legacy/account.d.ts +34 -0
  65. package/dist/types/alpaca/legacy/account.d.ts.map +1 -0
  66. package/dist/types/alpaca/legacy/assets.d.ts +13 -0
  67. package/dist/types/alpaca/legacy/assets.d.ts.map +1 -0
  68. package/dist/types/alpaca/legacy/auth.d.ts +18 -0
  69. package/dist/types/alpaca/legacy/auth.d.ts.map +1 -0
  70. package/dist/types/alpaca/legacy/index.d.ts +15 -0
  71. package/dist/types/alpaca/legacy/index.d.ts.map +1 -0
  72. package/dist/types/alpaca/legacy/market-data.d.ts +32 -0
  73. package/dist/types/alpaca/legacy/market-data.d.ts.map +1 -0
  74. package/dist/types/alpaca/legacy/orders.d.ts +84 -0
  75. package/dist/types/alpaca/legacy/orders.d.ts.map +1 -0
  76. package/dist/types/alpaca/legacy/positions.d.ts +66 -0
  77. package/dist/types/alpaca/legacy/positions.d.ts.map +1 -0
  78. package/dist/types/alpaca/legacy/utils.d.ts +18 -0
  79. package/dist/types/alpaca/legacy/utils.d.ts.map +1 -0
  80. package/dist/types/alpaca/market-data/bars.d.ts +142 -0
  81. package/dist/types/alpaca/market-data/bars.d.ts.map +1 -0
  82. package/dist/types/alpaca/market-data/index.d.ts +13 -0
  83. package/dist/types/alpaca/market-data/index.d.ts.map +1 -0
  84. package/dist/types/alpaca/market-data/news.d.ts +87 -0
  85. package/dist/types/alpaca/market-data/news.d.ts.map +1 -0
  86. package/dist/types/alpaca/market-data/quotes.d.ts +85 -0
  87. package/dist/types/alpaca/market-data/quotes.d.ts.map +1 -0
  88. package/dist/types/alpaca/market-data/trades.d.ts +98 -0
  89. package/dist/types/alpaca/market-data/trades.d.ts.map +1 -0
  90. package/dist/types/alpaca/options/contracts.d.ts +279 -0
  91. package/dist/types/alpaca/options/contracts.d.ts.map +1 -0
  92. package/dist/types/alpaca/options/data.d.ts +126 -0
  93. package/dist/types/alpaca/options/data.d.ts.map +1 -0
  94. package/dist/types/alpaca/options/index.d.ts +17 -0
  95. package/dist/types/alpaca/options/index.d.ts.map +1 -0
  96. package/dist/types/alpaca/options/orders.d.ts +366 -0
  97. package/dist/types/alpaca/options/orders.d.ts.map +1 -0
  98. package/dist/types/alpaca/options/strategies.d.ts +224 -0
  99. package/dist/types/alpaca/options/strategies.d.ts.map +1 -0
  100. package/dist/types/alpaca/streams/base-stream.d.ts +143 -0
  101. package/dist/types/alpaca/streams/base-stream.d.ts.map +1 -0
  102. package/dist/types/alpaca/streams/crypto-stream.d.ts +173 -0
  103. package/dist/types/alpaca/streams/crypto-stream.d.ts.map +1 -0
  104. package/dist/types/alpaca/streams/index.d.ts +54 -0
  105. package/dist/types/alpaca/streams/index.d.ts.map +1 -0
  106. package/dist/types/alpaca/streams/option-stream.d.ts +167 -0
  107. package/dist/types/alpaca/streams/option-stream.d.ts.map +1 -0
  108. package/dist/types/alpaca/streams/stock-stream.d.ts +176 -0
  109. package/dist/types/alpaca/streams/stock-stream.d.ts.map +1 -0
  110. package/dist/types/alpaca/streams/stream-manager.d.ts +277 -0
  111. package/dist/types/alpaca/streams/stream-manager.d.ts.map +1 -0
  112. package/dist/types/alpaca/streams/trading-stream.d.ts +186 -0
  113. package/dist/types/alpaca/streams/trading-stream.d.ts.map +1 -0
  114. package/dist/types/alpaca/streams.d.ts +88 -0
  115. package/dist/types/alpaca/streams.d.ts.map +1 -0
  116. package/dist/types/alpaca/test-imports.d.ts +7 -0
  117. package/dist/types/alpaca/test-imports.d.ts.map +1 -0
  118. package/dist/types/alpaca/trading/account.d.ts +198 -0
  119. package/dist/types/alpaca/trading/account.d.ts.map +1 -0
  120. package/dist/types/alpaca/trading/bracket-orders.d.ts +162 -0
  121. package/dist/types/alpaca/trading/bracket-orders.d.ts.map +1 -0
  122. package/dist/types/alpaca/trading/clock.d.ts +99 -0
  123. package/dist/types/alpaca/trading/clock.d.ts.map +1 -0
  124. package/dist/types/alpaca/trading/index.d.ts +15 -0
  125. package/dist/types/alpaca/trading/index.d.ts.map +1 -0
  126. package/dist/types/alpaca/trading/oco-orders.d.ts +203 -0
  127. package/dist/types/alpaca/trading/oco-orders.d.ts.map +1 -0
  128. package/dist/types/alpaca/trading/order-utils.d.ts +404 -0
  129. package/dist/types/alpaca/trading/order-utils.d.ts.map +1 -0
  130. package/dist/types/alpaca/trading/orders.d.ts +199 -0
  131. package/dist/types/alpaca/trading/orders.d.ts.map +1 -0
  132. package/dist/types/alpaca/trading/oto-orders.d.ts +282 -0
  133. package/dist/types/alpaca/trading/oto-orders.d.ts.map +1 -0
  134. package/dist/types/alpaca/trading/positions.d.ts +389 -0
  135. package/dist/types/alpaca/trading/positions.d.ts.map +1 -0
  136. package/dist/types/alpaca/trading/smart-orders.d.ts +301 -0
  137. package/dist/types/alpaca/trading/smart-orders.d.ts.map +1 -0
  138. package/dist/types/alpaca/trading/trailing-stops.d.ts +240 -0
  139. package/dist/types/alpaca/trading/trailing-stops.d.ts.map +1 -0
  140. package/dist/types/alpaca-market-data-api.d.ts +12 -10
  141. package/dist/types/alpaca-market-data-api.d.ts.map +1 -1
  142. package/dist/types/alpaca-trading-api.d.ts +12 -12
  143. package/dist/types/alpaca-trading-api.d.ts.map +1 -1
  144. package/dist/types/alphavantage.d.ts +1 -1
  145. package/dist/types/alphavantage.d.ts.map +1 -1
  146. package/dist/types/asset-allocation-algorithm.d.ts +7 -1
  147. package/dist/types/asset-allocation-algorithm.d.ts.map +1 -1
  148. package/dist/types/cache/stampede-protected-cache.d.ts.map +1 -1
  149. package/dist/types/config/api-endpoints.d.ts +94 -0
  150. package/dist/types/config/api-endpoints.d.ts.map +1 -0
  151. package/dist/types/crypto.d.ts +2 -2
  152. package/dist/types/crypto.d.ts.map +1 -1
  153. package/dist/types/display-manager.d.ts +1 -1
  154. package/dist/types/display-manager.d.ts.map +1 -1
  155. package/dist/types/errors/index.d.ts +130 -0
  156. package/dist/types/errors/index.d.ts.map +1 -0
  157. package/dist/types/examples/asset-allocation-example.d.ts +7 -6
  158. package/dist/types/examples/asset-allocation-example.d.ts.map +1 -1
  159. package/dist/types/examples/rate-limiter-example.d.ts +7 -0
  160. package/dist/types/examples/rate-limiter-example.d.ts.map +1 -0
  161. package/dist/types/format-tools.d.ts.map +1 -1
  162. package/dist/types/http-timeout.d.ts +37 -0
  163. package/dist/types/http-timeout.d.ts.map +1 -0
  164. package/dist/types/index.d.ts +393 -55
  165. package/dist/types/index.d.ts.map +1 -1
  166. package/dist/types/logger.d.ts +56 -0
  167. package/dist/types/logger.d.ts.map +1 -0
  168. package/dist/types/logging.d.ts +1 -1
  169. package/dist/types/logging.d.ts.map +1 -1
  170. package/dist/types/market-hours.d.ts.map +1 -1
  171. package/dist/types/market-time.d.ts +75 -13
  172. package/dist/types/market-time.d.ts.map +1 -1
  173. package/dist/types/metrics-calcs.d.ts.map +1 -1
  174. package/dist/types/misc-utils.d.ts +4 -1
  175. package/dist/types/misc-utils.d.ts.map +1 -1
  176. package/dist/types/performance-metrics.d.ts +4 -4
  177. package/dist/types/performance-metrics.d.ts.map +1 -1
  178. package/dist/types/polygon-indices.d.ts +3 -3
  179. package/dist/types/polygon-indices.d.ts.map +1 -1
  180. package/dist/types/polygon.d.ts +1 -1
  181. package/dist/types/polygon.d.ts.map +1 -1
  182. package/dist/types/price-utils.d.ts.map +1 -1
  183. package/dist/types/rate-limiter.d.ts +171 -0
  184. package/dist/types/rate-limiter.d.ts.map +1 -0
  185. package/dist/types/schemas/alpaca-schemas.d.ts +779 -0
  186. package/dist/types/schemas/alpaca-schemas.d.ts.map +1 -0
  187. package/dist/types/schemas/alphavantage-schemas.d.ts +255 -0
  188. package/dist/types/schemas/alphavantage-schemas.d.ts.map +1 -0
  189. package/dist/types/schemas/index.d.ts +21 -0
  190. package/dist/types/schemas/index.d.ts.map +1 -0
  191. package/dist/types/schemas/polygon-schemas.d.ts +551 -0
  192. package/dist/types/schemas/polygon-schemas.d.ts.map +1 -0
  193. package/dist/types/schemas/validate-response.d.ts +88 -0
  194. package/dist/types/schemas/validate-response.d.ts.map +1 -0
  195. package/dist/types/technical-analysis.d.ts +9 -9
  196. package/dist/types/technical-analysis.d.ts.map +1 -1
  197. package/dist/types/time-utils.d.ts.map +1 -1
  198. package/dist/types/types/adaptic-types.d.ts +1 -1
  199. package/dist/types/types/adaptic-types.d.ts.map +1 -1
  200. package/dist/types/types/alpaca-types.d.ts +172 -98
  201. package/dist/types/types/alpaca-types.d.ts.map +1 -1
  202. package/dist/types/types/alphavantage-types.d.ts +2 -2
  203. package/dist/types/types/asset-allocation-types.d.ts +11 -11
  204. package/dist/types/types/index.d.ts +8 -8
  205. package/dist/types/types/index.d.ts.map +1 -1
  206. package/dist/types/types/logging-types.d.ts +2 -2
  207. package/dist/types/types/logging-types.d.ts.map +1 -1
  208. package/dist/types/types/market-time-types.d.ts +4 -4
  209. package/dist/types/types/market-time-types.d.ts.map +1 -1
  210. package/dist/types/types/metrics-types.d.ts +3 -3
  211. package/dist/types/types/metrics-types.d.ts.map +1 -1
  212. package/dist/types/types/polygon-indices-types.d.ts +6 -6
  213. package/dist/types/types/polygon-types.d.ts +3 -3
  214. package/dist/types/types/ta-types.d.ts +3 -3
  215. package/dist/types/utils/auth-validator.d.ts +32 -0
  216. package/dist/types/utils/auth-validator.d.ts.map +1 -0
  217. package/dist/types/utils/http-keep-alive.d.ts +110 -0
  218. package/dist/types/utils/http-keep-alive.d.ts.map +1 -0
  219. package/dist/types/utils/paginator.d.ts +154 -0
  220. package/dist/types/utils/paginator.d.ts.map +1 -0
  221. package/dist/types/utils/retry.d.ts +78 -0
  222. package/dist/types/utils/retry.d.ts.map +1 -0
  223. package/package.json +25 -5
  224. package/dist/types/alpaca-functions.d.ts +0 -233
  225. package/dist/types/alpaca-functions.d.ts.map +0 -1
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Stock Data Stream Module
3
+ * Real-time stock quotes, trades, and bars via Alpaca WebSocket
4
+ *
5
+ * Uses the official Alpaca SDK data_stream_v2 for reliable real-time data.
6
+ * Provides automatic reconnection, subscription management, and type-safe events.
7
+ */
8
+ import { EventEmitter } from "events";
9
+ import { AlpacaClient } from "../client";
10
+ import { AlpacaTradeStream, AlpacaQuoteStream, AlpacaBarStream, AlpacaDailyBarStream, AlpacaUpdatedBarStream, AlpacaTradingStatusStream, AlpacaLULDStream, AlpacaTradeCorrectionStream, AlpacaTradeCancelStream, AlpacaOrderImbalanceStream, AlpacaStockStreamMessage } from "../../types/alpaca-types";
11
+ import { StreamConfig, StreamState, SubscriptionRequest } from "./base-stream";
12
+ /**
13
+ * Stock stream data feed type
14
+ */
15
+ export type StockDataFeed = "sip" | "iex" | "test";
16
+ /**
17
+ * Stock stream configuration
18
+ */
19
+ export interface StockStreamConfig extends StreamConfig {
20
+ /** Data feed to use */
21
+ feed: StockDataFeed;
22
+ }
23
+ /**
24
+ * Default stock stream configuration
25
+ */
26
+ export declare const DEFAULT_STOCK_STREAM_CONFIG: Partial<StockStreamConfig>;
27
+ /**
28
+ * Stock stream event map for type-safe event handling
29
+ */
30
+ export interface StockStreamEventMap {
31
+ trade: AlpacaTradeStream;
32
+ quote: AlpacaQuoteStream;
33
+ bar: AlpacaBarStream;
34
+ dailyBar: AlpacaDailyBarStream;
35
+ updatedBar: AlpacaUpdatedBarStream;
36
+ tradingStatus: AlpacaTradingStatusStream;
37
+ luld: AlpacaLULDStream;
38
+ tradeCorrection: AlpacaTradeCorrectionStream;
39
+ tradeCancel: AlpacaTradeCancelStream;
40
+ orderImbalance: AlpacaOrderImbalanceStream;
41
+ data: AlpacaStockStreamMessage;
42
+ subscription: {
43
+ trades: string[];
44
+ quotes: string[];
45
+ bars: string[];
46
+ };
47
+ authenticated: void;
48
+ connected: void;
49
+ disconnected: {
50
+ code: number;
51
+ reason: string;
52
+ };
53
+ stateChange: StreamState;
54
+ error: Error;
55
+ }
56
+ /**
57
+ * Stock Data Stream class for receiving real-time stock market data
58
+ * Uses the official Alpaca SDK data_stream_v2 for WebSocket management.
59
+ */
60
+ export declare class StockDataStream extends EventEmitter {
61
+ private client;
62
+ private socket;
63
+ private state;
64
+ private feed;
65
+ private config;
66
+ private subscriptions;
67
+ private pendingSubscriptions;
68
+ constructor(client: AlpacaClient, config?: Partial<StockStreamConfig>);
69
+ /**
70
+ * Log helper
71
+ */
72
+ private log;
73
+ /**
74
+ * Get the current stream state
75
+ */
76
+ getState(): StreamState;
77
+ /**
78
+ * Check if stream is connected and authenticated
79
+ */
80
+ isStreamConnected(): boolean;
81
+ /**
82
+ * Get current subscriptions
83
+ */
84
+ getSubscriptions(): SubscriptionRequest;
85
+ /**
86
+ * Set the data feed
87
+ */
88
+ setFeed(feed: StockDataFeed): void;
89
+ /**
90
+ * Get the current data feed
91
+ */
92
+ getFeed(): StockDataFeed;
93
+ /**
94
+ * Connect to the stock data stream using SDK
95
+ */
96
+ connect(): Promise<void>;
97
+ /**
98
+ * Set up all data event handlers for SDK
99
+ */
100
+ private setupDataHandlers;
101
+ /**
102
+ * Disconnect from the stock data stream
103
+ */
104
+ disconnect(): void;
105
+ /**
106
+ * Subscribe to market data
107
+ */
108
+ subscribe(request: SubscriptionRequest): void;
109
+ /**
110
+ * Unsubscribe from market data
111
+ */
112
+ unsubscribe(request: SubscriptionRequest): void;
113
+ /**
114
+ * Subscribe to stock trades
115
+ */
116
+ subscribeTrades(symbols: string[]): void;
117
+ /**
118
+ * Subscribe to stock quotes
119
+ */
120
+ subscribeQuotes(symbols: string[]): void;
121
+ /**
122
+ * Subscribe to stock bars
123
+ */
124
+ subscribeBars(symbols: string[]): void;
125
+ /**
126
+ * Subscribe to all data types for symbols
127
+ */
128
+ subscribeAll(symbols: string[]): void;
129
+ /**
130
+ * Unsubscribe from stock trades
131
+ */
132
+ unsubscribeTrades(symbols: string[]): void;
133
+ /**
134
+ * Unsubscribe from stock quotes
135
+ */
136
+ unsubscribeQuotes(symbols: string[]): void;
137
+ /**
138
+ * Unsubscribe from stock bars
139
+ */
140
+ unsubscribeBars(symbols: string[]): void;
141
+ /**
142
+ * Unsubscribe from all data types for symbols
143
+ */
144
+ unsubscribeAll(symbols: string[]): void;
145
+ /**
146
+ * Send subscription request using SDK methods
147
+ */
148
+ private sendSubscription;
149
+ /**
150
+ * Send unsubscription request using SDK methods
151
+ */
152
+ private sendUnsubscription;
153
+ private convertTrade;
154
+ private convertQuote;
155
+ private convertBar;
156
+ private convertDailyBar;
157
+ private convertUpdatedBar;
158
+ private convertStatus;
159
+ private convertLuld;
160
+ private convertCancelError;
161
+ private convertCorrection;
162
+ /**
163
+ * Type-safe event listener registration
164
+ */
165
+ on<K extends keyof StockStreamEventMap>(event: K, listener: (data: StockStreamEventMap[K]) => void): this;
166
+ /**
167
+ * Type-safe event emitter
168
+ */
169
+ emit<K extends keyof StockStreamEventMap>(event: K, data?: StockStreamEventMap[K]): boolean;
170
+ }
171
+ /**
172
+ * Create a stock data stream for a client
173
+ */
174
+ export declare function createStockDataStream(client: AlpacaClient, config?: Partial<StockStreamConfig>): StockDataStream;
175
+ export default StockDataStream;
176
+ //# sourceMappingURL=stock-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stock-stream.d.ts","sourceRoot":"","sources":["../../../../src/alpaca/streams/stock-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Stream Manager Module
3
+ * Unified management of all Alpaca WebSocket streams with connection pooling and coordination.
4
+ *
5
+ * Features:
6
+ * - Centralized stream lifecycle management
7
+ * - Connection pooling and reuse
8
+ * - Automatic reconnection handling
9
+ * - Coordinated subscriptions across streams
10
+ * - Health monitoring and status reporting
11
+ * - Graceful shutdown
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const client = createAlpacaClient(config);
16
+ * const manager = createStreamManager(client);
17
+ *
18
+ * // Connect to specific streams
19
+ * await manager.connectTrading();
20
+ * await manager.connectStockData();
21
+ *
22
+ * // Or connect to all streams at once
23
+ * await manager.connectAll();
24
+ *
25
+ * // Get status
26
+ * const status = manager.getStatus();
27
+ * console.log(status); // { trading: true, stock: true, option: false, crypto: false }
28
+ *
29
+ * // Use individual streams
30
+ * const tradingStream = manager.getTradingStream();
31
+ * tradingStream?.on('fill', (update) => console.log('Order filled!'));
32
+ *
33
+ * // Graceful shutdown
34
+ * await manager.disconnectAll();
35
+ * ```
36
+ */
37
+ import { AlpacaClient } from "../client";
38
+ import { EventEmitter } from "events";
39
+ import { TradingStream } from "./trading-stream";
40
+ import { StockDataStream, StockStreamConfig } from "./stock-stream";
41
+ import { OptionDataStream, OptionStreamConfig } from "./option-stream";
42
+ import { CryptoDataStream, CryptoStreamConfig } from "./crypto-stream";
43
+ import { StreamConfig, StreamState, SubscriptionRequest } from "./base-stream";
44
+ /**
45
+ * Stream connection status for all managed streams
46
+ */
47
+ export interface StreamStatus {
48
+ /** Trading stream connected status */
49
+ trading: boolean;
50
+ /** Stock data stream connected status */
51
+ stock: boolean;
52
+ /** Option data stream connected status */
53
+ option: boolean;
54
+ /** Crypto data stream connected status */
55
+ crypto: boolean;
56
+ }
57
+ /**
58
+ * Detailed stream status with state information
59
+ */
60
+ export interface DetailedStreamStatus {
61
+ trading: {
62
+ connected: boolean;
63
+ state: StreamState;
64
+ };
65
+ stock: {
66
+ connected: boolean;
67
+ state: StreamState;
68
+ };
69
+ option: {
70
+ connected: boolean;
71
+ state: StreamState;
72
+ };
73
+ crypto: {
74
+ connected: boolean;
75
+ state: StreamState;
76
+ };
77
+ }
78
+ /**
79
+ * Stream manager configuration
80
+ */
81
+ export interface StreamManagerConfig {
82
+ /** Base stream configuration */
83
+ baseConfig: Partial<StreamConfig>;
84
+ /** Stock stream specific configuration */
85
+ stockConfig: Partial<StockStreamConfig>;
86
+ /** Option stream specific configuration */
87
+ optionConfig: Partial<OptionStreamConfig>;
88
+ /** Crypto stream specific configuration */
89
+ cryptoConfig: Partial<CryptoStreamConfig>;
90
+ /** Auto-connect streams on creation */
91
+ autoConnect: boolean;
92
+ /** Enable health monitoring */
93
+ healthMonitoring: boolean;
94
+ /** Health check interval in milliseconds */
95
+ healthCheckInterval: number;
96
+ }
97
+ /**
98
+ * Default stream manager configuration
99
+ */
100
+ export declare const DEFAULT_STREAM_MANAGER_CONFIG: StreamManagerConfig;
101
+ /**
102
+ * Stream manager event map
103
+ */
104
+ export interface StreamManagerEventMap {
105
+ "stream:connected": {
106
+ stream: "trading" | "stock" | "option" | "crypto";
107
+ };
108
+ "stream:disconnected": {
109
+ stream: "trading" | "stock" | "option" | "crypto";
110
+ code: number;
111
+ reason: string;
112
+ };
113
+ "stream:error": {
114
+ stream: "trading" | "stock" | "option" | "crypto";
115
+ error: Error;
116
+ };
117
+ "all:connected": void;
118
+ "all:disconnected": void;
119
+ "health:check": StreamStatus;
120
+ }
121
+ /**
122
+ * Unified Stream Manager
123
+ * Manages all WebSocket connections for a client with connection pooling and coordination.
124
+ */
125
+ export declare class StreamManager extends EventEmitter {
126
+ private client;
127
+ private config;
128
+ private tradingStream;
129
+ private stockStream;
130
+ private optionStream;
131
+ private cryptoStream;
132
+ private healthCheckTimer;
133
+ private isShuttingDown;
134
+ constructor(client: AlpacaClient, config?: Partial<StreamManagerConfig>);
135
+ /**
136
+ * Connect to the trading stream
137
+ * @returns The connected trading stream
138
+ */
139
+ connectTrading(): Promise<TradingStream>;
140
+ /**
141
+ * Connect to the stock data stream
142
+ * @returns The connected stock data stream
143
+ */
144
+ connectStockData(): Promise<StockDataStream>;
145
+ /**
146
+ * Connect to the options data stream
147
+ * @returns The connected option data stream
148
+ */
149
+ connectOptionData(): Promise<OptionDataStream>;
150
+ /**
151
+ * Connect to the crypto data stream
152
+ * @returns The connected crypto data stream
153
+ */
154
+ connectCryptoData(): Promise<CryptoDataStream>;
155
+ /**
156
+ * Connect all streams concurrently
157
+ */
158
+ connectAll(): Promise<void>;
159
+ /**
160
+ * Connect only market data streams (stock, option, crypto)
161
+ */
162
+ connectMarketData(): Promise<void>;
163
+ /**
164
+ * Disconnect from the trading stream
165
+ */
166
+ disconnectTrading(): void;
167
+ /**
168
+ * Disconnect from the stock data stream
169
+ */
170
+ disconnectStockData(): void;
171
+ /**
172
+ * Disconnect from the option data stream
173
+ */
174
+ disconnectOptionData(): void;
175
+ /**
176
+ * Disconnect from the crypto data stream
177
+ */
178
+ disconnectCryptoData(): void;
179
+ /**
180
+ * Disconnect all streams
181
+ */
182
+ disconnectAll(): void;
183
+ /**
184
+ * Graceful shutdown - disconnect all streams and cleanup
185
+ */
186
+ shutdown(): Promise<void>;
187
+ /**
188
+ * Get simple connection status
189
+ */
190
+ getStatus(): StreamStatus;
191
+ /**
192
+ * Get detailed connection status with state information
193
+ */
194
+ getDetailedStatus(): DetailedStreamStatus;
195
+ /**
196
+ * Check if any stream is connected
197
+ */
198
+ isAnyConnected(): boolean;
199
+ /**
200
+ * Check if all streams are connected
201
+ */
202
+ isAllConnected(): boolean;
203
+ /**
204
+ * Get the trading stream (may be null if not connected)
205
+ */
206
+ getTradingStream(): TradingStream | null;
207
+ /**
208
+ * Get the stock data stream (may be null if not connected)
209
+ */
210
+ getStockStream(): StockDataStream | null;
211
+ /**
212
+ * Get the option data stream (may be null if not connected)
213
+ */
214
+ getOptionStream(): OptionDataStream | null;
215
+ /**
216
+ * Get the crypto data stream (may be null if not connected)
217
+ */
218
+ getCryptoStream(): CryptoDataStream | null;
219
+ /**
220
+ * Subscribe to stock market data
221
+ */
222
+ subscribeStocks(request: SubscriptionRequest): void;
223
+ /**
224
+ * Subscribe to option market data
225
+ */
226
+ subscribeOptions(request: SubscriptionRequest): void;
227
+ /**
228
+ * Subscribe to crypto market data
229
+ */
230
+ subscribeCrypto(request: SubscriptionRequest): void;
231
+ /**
232
+ * Unsubscribe from stock market data
233
+ */
234
+ unsubscribeStocks(request: SubscriptionRequest): void;
235
+ /**
236
+ * Unsubscribe from option market data
237
+ */
238
+ unsubscribeOptions(request: SubscriptionRequest): void;
239
+ /**
240
+ * Unsubscribe from crypto market data
241
+ */
242
+ unsubscribeCrypto(request: SubscriptionRequest): void;
243
+ /**
244
+ * Get all current subscriptions
245
+ */
246
+ getAllSubscriptions(): {
247
+ stock: SubscriptionRequest;
248
+ option: SubscriptionRequest;
249
+ crypto: SubscriptionRequest;
250
+ };
251
+ /**
252
+ * Setup event handlers for a stream
253
+ */
254
+ private setupStreamEventHandlers;
255
+ /**
256
+ * Start health monitoring
257
+ */
258
+ private startHealthMonitoring;
259
+ /**
260
+ * Stop health monitoring
261
+ */
262
+ private stopHealthMonitoring;
263
+ /**
264
+ * Type-safe event listener registration
265
+ */
266
+ on<K extends keyof StreamManagerEventMap>(event: K, listener: (data: StreamManagerEventMap[K]) => void): this;
267
+ /**
268
+ * Type-safe event emitter
269
+ */
270
+ emit<K extends keyof StreamManagerEventMap>(event: K, data?: StreamManagerEventMap[K]): boolean;
271
+ }
272
+ /**
273
+ * Create a stream manager for a client
274
+ */
275
+ export declare function createStreamManager(client: AlpacaClient, config?: Partial<StreamManagerConfig>): StreamManager;
276
+ export default StreamManager;
277
+ //# sourceMappingURL=stream-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-manager.d.ts","sourceRoot":"","sources":["../../../../src/alpaca/streams/stream-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Trading Stream Module
3
+ * WebSocket stream for real-time trading updates (order fills, cancellations, etc.)
4
+ *
5
+ * Features:
6
+ * - Real-time order status updates
7
+ * - Automatic reconnection with exponential backoff
8
+ * - Type-safe event handling
9
+ * - Comprehensive logging
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const client = createAlpacaClient(config);
14
+ * const stream = createTradingStream(client);
15
+ *
16
+ * stream.on('fill', (update) => {
17
+ * console.log(`Order filled: ${update.order.symbol} @ ${update.price}`);
18
+ * });
19
+ *
20
+ * stream.on('trade_update', (update) => {
21
+ * console.log(`Trade update: ${update.event}`);
22
+ * });
23
+ *
24
+ * await stream.connect();
25
+ * ```
26
+ */
27
+ import { AlpacaClient } from "../client";
28
+ import { BaseStream, StreamConfig } from "./base-stream";
29
+ import { TradeUpdate } from "../../types/alpaca-types";
30
+ /**
31
+ * Trading stream event names representing all possible order status changes.
32
+ * These events are emitted when order state changes occur.
33
+ */
34
+ export type TradingStreamEvent = "new" | "fill" | "partial_fill" | "canceled" | "expired" | "done_for_day" | "replaced" | "rejected" | "pending_new" | "pending_cancel" | "pending_replace" | "calculated" | "suspended" | "order_cancel_rejected" | "order_replace_rejected" | "stopped" | "accepted" | "accepted_for_bidding";
35
+ /**
36
+ * Trading stream event map for type-safe event handling.
37
+ * Maps event names to their payload types.
38
+ */
39
+ export interface TradingStreamEventMap {
40
+ /** Generic trade update event - emitted for all order changes */
41
+ trade_update: TradeUpdate;
42
+ /** Emitted when stream is authenticated */
43
+ authenticated: void;
44
+ /** Emitted when stream is connected */
45
+ connected: void;
46
+ /** Emitted when stream is disconnected */
47
+ disconnected: {
48
+ code: number;
49
+ reason: string;
50
+ };
51
+ /** Emitted on stream errors */
52
+ error: Error;
53
+ /** Emitted when max reconnection attempts reached */
54
+ max_reconnects: void;
55
+ new: TradeUpdate;
56
+ fill: TradeUpdate;
57
+ partial_fill: TradeUpdate;
58
+ canceled: TradeUpdate;
59
+ expired: TradeUpdate;
60
+ done_for_day: TradeUpdate;
61
+ replaced: TradeUpdate;
62
+ rejected: TradeUpdate;
63
+ pending_new: TradeUpdate;
64
+ pending_cancel: TradeUpdate;
65
+ pending_replace: TradeUpdate;
66
+ calculated: TradeUpdate;
67
+ suspended: TradeUpdate;
68
+ order_cancel_rejected: TradeUpdate;
69
+ order_replace_rejected: TradeUpdate;
70
+ stopped: TradeUpdate;
71
+ accepted: TradeUpdate;
72
+ accepted_for_bidding: TradeUpdate;
73
+ }
74
+ /**
75
+ * Trading Stream class for receiving real-time order updates.
76
+ *
77
+ * Connects to Alpaca's trading WebSocket and provides real-time
78
+ * updates on order status changes including fills, cancellations,
79
+ * rejections, and more.
80
+ *
81
+ * @extends BaseStream
82
+ */
83
+ export declare class TradingStream extends BaseStream {
84
+ protected readonly streamName = "TradingStream";
85
+ private tradeUpdateCallback;
86
+ private orderCallbacks;
87
+ constructor(client: AlpacaClient, config?: Partial<StreamConfig>);
88
+ /**
89
+ * Get the WebSocket URL for trading stream
90
+ */
91
+ protected getStreamUrl(): string;
92
+ /**
93
+ * Override authenticate to use trading stream format
94
+ */
95
+ protected authenticate(): Promise<void>;
96
+ /**
97
+ * Subscribe to trade updates after authentication
98
+ */
99
+ private subscribeToTradeUpdates;
100
+ /**
101
+ * Process incoming messages
102
+ */
103
+ protected processMessage(message: Record<string, unknown>): void;
104
+ /**
105
+ * Handle listening confirmation message
106
+ */
107
+ private handleListeningMessage;
108
+ /**
109
+ * Handle trade update message
110
+ */
111
+ private handleTradeUpdate;
112
+ /**
113
+ * Check if an event represents a terminal order state
114
+ */
115
+ private isTerminalState;
116
+ /**
117
+ * Register a callback for trade updates
118
+ * @param callback Function to call when trade updates are received
119
+ */
120
+ onTradeUpdate(callback: (update: TradeUpdate) => void): void;
121
+ /**
122
+ * Remove the trade update callback
123
+ */
124
+ removeTradeUpdateCallback(): void;
125
+ /**
126
+ * Register a callback for a specific order's updates.
127
+ * The callback is automatically removed when the order reaches a terminal state.
128
+ *
129
+ * @param orderId The order ID to watch
130
+ * @param callback Function to call when updates for this order are received
131
+ */
132
+ watchOrder(orderId: string, callback: (update: TradeUpdate) => void): void;
133
+ /**
134
+ * Stop watching a specific order
135
+ *
136
+ * @param orderId The order ID to stop watching
137
+ */
138
+ unwatchOrder(orderId: string): void;
139
+ /**
140
+ * Get all currently watched order IDs
141
+ */
142
+ getWatchedOrders(): string[];
143
+ /**
144
+ * Wait for an order to reach a terminal state.
145
+ * Returns a promise that resolves with the final trade update.
146
+ *
147
+ * @param orderId The order ID to wait for
148
+ * @param timeoutMs Optional timeout in milliseconds (default: 30000)
149
+ * @returns Promise resolving to the final TradeUpdate
150
+ * @throws Error if timeout is reached
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * const finalUpdate = await stream.waitForOrderCompletion(order.id, 60000);
155
+ * console.log(`Order ${finalUpdate.event}: ${finalUpdate.order.filled_qty} filled`);
156
+ * ```
157
+ */
158
+ waitForOrderCompletion(orderId: string, timeoutMs?: number): Promise<TradeUpdate>;
159
+ /**
160
+ * Schedule a reconnection attempt with exponential backoff.
161
+ * Emits 'max_reconnects' event when maximum attempts are reached.
162
+ */
163
+ protected scheduleReconnect(): void;
164
+ /**
165
+ * Type-safe event listener registration
166
+ */
167
+ on<K extends keyof TradingStreamEventMap>(event: K, listener: (data: TradingStreamEventMap[K]) => void): this;
168
+ /**
169
+ * Type-safe once event listener registration
170
+ */
171
+ once<K extends keyof TradingStreamEventMap>(event: K, listener: (data: TradingStreamEventMap[K]) => void): this;
172
+ /**
173
+ * Type-safe event emitter
174
+ */
175
+ emit<K extends keyof TradingStreamEventMap>(event: K, data?: TradingStreamEventMap[K]): boolean;
176
+ /**
177
+ * Type-safe remove listener
178
+ */
179
+ off<K extends keyof TradingStreamEventMap>(event: K, listener: (data: TradingStreamEventMap[K]) => void): this;
180
+ }
181
+ /**
182
+ * Create a trading stream for a client
183
+ */
184
+ export declare function createTradingStream(client: AlpacaClient, config?: Partial<StreamConfig>): TradingStream;
185
+ export default TradingStream;
186
+ //# sourceMappingURL=trading-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trading-stream.d.ts","sourceRoot":"","sources":["../../../../src/alpaca/streams/trading-stream.ts"],"names":[],"mappings":"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"}