topstepx-api 1.0.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  var signalr = require('@microsoft/signalr');
4
4
 
5
- // src/errors/base-error.ts
5
+ // src/errors/base.error.ts
6
6
  var TopstepXError = class extends Error {
7
7
  constructor(message, code) {
8
8
  super(message);
@@ -22,14 +22,14 @@ var TopstepXError = class extends Error {
22
22
  }
23
23
  };
24
24
 
25
- // src/errors/auth-error.ts
25
+ // src/errors/auth.error.ts
26
26
  var AuthenticationError = class extends TopstepXError {
27
27
  constructor(message, code) {
28
28
  super(message, code);
29
29
  }
30
30
  };
31
31
 
32
- // src/errors/api-error.ts
32
+ // src/errors/api.error.ts
33
33
  var ApiError = class extends TopstepXError {
34
34
  constructor(message, code, endpoint) {
35
35
  super(message, code);
@@ -43,7 +43,7 @@ var ApiError = class extends TopstepXError {
43
43
  }
44
44
  };
45
45
 
46
- // src/errors/connection-error.ts
46
+ // src/errors/connection.error.ts
47
47
  var ConnectionError = class extends TopstepXError {
48
48
  constructor(message) {
49
49
  super(message);
@@ -134,9 +134,7 @@ var AuthService = class {
134
134
  }
135
135
  setTokenExpiration() {
136
136
  const expiration = /* @__PURE__ */ new Date();
137
- expiration.setHours(
138
- expiration.getHours() + this.config.tokenValidityHours
139
- );
137
+ expiration.setHours(expiration.getHours() + this.config.tokenValidityHours);
140
138
  this.tokenExpiration = expiration;
141
139
  }
142
140
  isTokenExpired() {
@@ -293,10 +291,7 @@ var OrderApi = class {
293
291
  * ```
294
292
  */
295
293
  async place(request) {
296
- return this.http.post(
297
- "/api/Order/place",
298
- request
299
- );
294
+ return this.http.post("/api/Order/place", request);
300
295
  }
301
296
  /**
302
297
  * Cancel an existing order.
@@ -304,10 +299,7 @@ var OrderApi = class {
304
299
  * @returns Response indicating success or failure
305
300
  */
306
301
  async cancel(request) {
307
- return this.http.post(
308
- "/api/Order/cancel",
309
- request
310
- );
302
+ return this.http.post("/api/Order/cancel", request);
311
303
  }
312
304
  /**
313
305
  * Modify an existing order's size or price.
@@ -315,10 +307,7 @@ var OrderApi = class {
315
307
  * @returns Response indicating success or failure
316
308
  */
317
309
  async modify(request) {
318
- return this.http.post(
319
- "/api/Order/modify",
320
- request
321
- );
310
+ return this.http.post("/api/Order/modify", request);
322
311
  }
323
312
  };
324
313
 
@@ -332,10 +321,7 @@ var PositionApi = class {
332
321
  return response;
333
322
  }
334
323
  async close(request) {
335
- return this.http.post(
336
- "/api/Position/closeContract",
337
- request
338
- );
324
+ return this.http.post("/api/Position/closeContract", request);
339
325
  }
340
326
  async partialClose(request) {
341
327
  return this.http.post("/api/Position/partialCloseContract", request);
@@ -368,6 +354,533 @@ var ContractApi = class {
368
354
  }
369
355
  };
370
356
 
357
+ // src/rest/contract/cme/cme.contract.constants.ts
358
+ var CME_CONTRACTS = (
359
+ // Grouped by contract market sector
360
+ [
361
+ // Per the CME Group futures contracts which Topstep
362
+ // allows its traders to buy/sell positions on
363
+ // https://help.topstep.com/en/articles/8284206-when-and-what-products-can-i-trade#h_fc99007dde
364
+ // Equity
365
+ {
366
+ symbol: "ES" /* E_MINI_SP_500 */,
367
+ name: "E-mini S&P 500",
368
+ sector: "Equity" /* EQUITY */,
369
+ exchange: 0 /* CME */,
370
+ tickSize: 0.25,
371
+ tickValue: 12.5,
372
+ roundTripFees: 2.8
373
+ },
374
+ {
375
+ symbol: "MES" /* MICRO_E_MINI_SP_500 */,
376
+ name: "Micro E-mini S&P 500",
377
+ sector: "Equity" /* EQUITY */,
378
+ exchange: 0 /* CME */,
379
+ tickSize: 0.25,
380
+ tickValue: 1.25,
381
+ roundTripFees: 0.74
382
+ },
383
+ {
384
+ symbol: "NQ" /* E_MINI_NASDAQ */,
385
+ name: "E-mini NASDAQ 100",
386
+ sector: "Equity" /* EQUITY */,
387
+ exchange: 0 /* CME */,
388
+ tickSize: 0.25,
389
+ tickValue: 5,
390
+ roundTripFees: 2.8
391
+ },
392
+ {
393
+ symbol: "MNQ" /* MICRO_E_MINI_NASDAQ */,
394
+ name: "Micro E-mini NASDAQ 100",
395
+ sector: "Equity" /* EQUITY */,
396
+ exchange: 0 /* CME */,
397
+ tickSize: 0.25,
398
+ tickValue: 0.5,
399
+ roundTripFees: 0.74
400
+ },
401
+ {
402
+ symbol: "RTY" /* E_MINI_RUSSELL */,
403
+ name: "E-mini Russell 2000",
404
+ sector: "Equity" /* EQUITY */,
405
+ exchange: 0 /* CME */,
406
+ tickSize: 0.1,
407
+ tickValue: 5,
408
+ roundTripFees: 2.8
409
+ },
410
+ {
411
+ symbol: "M2K" /* MICRO_E_MINI_RUSSELL */,
412
+ name: "Micro E-mini Russell 2000",
413
+ sector: "Equity" /* EQUITY */,
414
+ exchange: 0 /* CME */,
415
+ tickSize: 0.1,
416
+ tickValue: 0.25,
417
+ roundTripFees: 0.74
418
+ },
419
+ {
420
+ symbol: "NKD" /* NIKKEI */,
421
+ name: "Nikkei NKD",
422
+ sector: "Equity" /* EQUITY */,
423
+ exchange: 0 /* CME */,
424
+ tickSize: 5,
425
+ tickValue: 25,
426
+ roundTripFees: 4.34
427
+ },
428
+ {
429
+ symbol: "YM" /* MINI_DOW */,
430
+ name: "Mini-DOW",
431
+ sector: "Equity" /* EQUITY */,
432
+ exchange: 1 /* CBOT */,
433
+ tickSize: 1,
434
+ tickValue: 5,
435
+ roundTripFees: 2.8
436
+ },
437
+ {
438
+ symbol: "MYM" /* MICRO_MINI_DOW */,
439
+ name: "Micro Mini-DOW",
440
+ sector: "Equity" /* EQUITY */,
441
+ exchange: 1 /* CBOT */,
442
+ tickSize: 1,
443
+ tickValue: 0.5,
444
+ roundTripFees: 0.74
445
+ },
446
+ // Foreign Exchange
447
+ {
448
+ symbol: "6A" /* AUD_USD */,
449
+ name: "Australian $",
450
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
451
+ exchange: 0 /* CME */,
452
+ tickSize: 5e-5,
453
+ tickValue: 5,
454
+ roundTripFees: 3.24
455
+ },
456
+ {
457
+ symbol: "M6A" /* MICRO_AUD_USD */,
458
+ name: "Micro AUD/USD",
459
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
460
+ exchange: 0 /* CME */,
461
+ tickSize: 5e-5,
462
+ tickValue: 0.5,
463
+ roundTripFees: 0.52
464
+ },
465
+ {
466
+ symbol: "6B" /* GBP_USD */,
467
+ name: "British Pound",
468
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
469
+ exchange: 0 /* CME */,
470
+ tickSize: 1e-4,
471
+ tickValue: 6.25,
472
+ roundTripFees: 3.24
473
+ },
474
+ {
475
+ symbol: "M6B" /* MICRO_GBP_USD */,
476
+ name: "Micro GBP/USD",
477
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
478
+ exchange: 0 /* CME */,
479
+ tickSize: 1e-4,
480
+ tickValue: 0.625,
481
+ roundTripFees: 0.52
482
+ },
483
+ {
484
+ symbol: "6C" /* CAD_USD */,
485
+ name: "Canadian $",
486
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
487
+ exchange: 0 /* CME */,
488
+ tickSize: 5e-5,
489
+ tickValue: 5,
490
+ roundTripFees: 3.24
491
+ },
492
+ {
493
+ symbol: "6E" /* EUR_USD */,
494
+ name: "Euro FX",
495
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
496
+ exchange: 0 /* CME */,
497
+ tickSize: 5e-5,
498
+ tickValue: 6.25,
499
+ roundTripFees: 3.24
500
+ },
501
+ {
502
+ symbol: "M6E" /* MICRO_EUR_USD */,
503
+ name: "Micro Euro FX",
504
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
505
+ exchange: 0 /* CME */,
506
+ tickSize: 5e-5,
507
+ tickValue: 0.625,
508
+ roundTripFees: 0.52
509
+ },
510
+ {
511
+ symbol: "E7" /* E_MINI_EUR_USD */,
512
+ name: "E-mini Euro FX",
513
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
514
+ exchange: 0 /* CME */,
515
+ tickSize: 1e-4,
516
+ tickValue: 6.25,
517
+ roundTripFees: 1.74
518
+ },
519
+ {
520
+ symbol: "6J" /* JPY_USD */,
521
+ name: "Japanese Yen",
522
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
523
+ exchange: 0 /* CME */,
524
+ tickSize: 5e-7,
525
+ tickValue: 6.25,
526
+ roundTripFees: 3.24
527
+ },
528
+ {
529
+ symbol: "6S" /* CHF_USD */,
530
+ name: "Swiss Franc",
531
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
532
+ exchange: 0 /* CME */,
533
+ tickSize: 1e-4,
534
+ tickValue: 12.5,
535
+ roundTripFees: 3.24
536
+ },
537
+ {
538
+ symbol: "6M" /* MXN_USD */,
539
+ name: "Mexican Peso",
540
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
541
+ exchange: 0 /* CME */,
542
+ tickSize: 25e-6,
543
+ tickValue: 12.5,
544
+ roundTripFees: 3.24
545
+ },
546
+ {
547
+ symbol: "6N" /* NZD_USD */,
548
+ name: "New Zealand $",
549
+ sector: "Foreign Exchange" /* FOREIGN_EXCHANGE */,
550
+ exchange: 0 /* CME */,
551
+ tickSize: 1e-4,
552
+ tickValue: 10,
553
+ roundTripFees: 3.24
554
+ },
555
+ // Live Stock
556
+ {
557
+ symbol: "HE" /* LEAN_HOGS */,
558
+ name: "Lean Hogs",
559
+ sector: "Live Stock" /* LIVE_STOCK */,
560
+ exchange: 0 /* CME */,
561
+ tickSize: 25e-5,
562
+ tickValue: 10,
563
+ roundTripFees: 4.24
564
+ },
565
+ {
566
+ symbol: "LE" /* LIVE_CATTLE */,
567
+ name: "Live Cattle",
568
+ sector: "Live Stock" /* LIVE_STOCK */,
569
+ exchange: 0 /* CME */,
570
+ tickSize: 25e-5,
571
+ tickValue: 10,
572
+ roundTripFees: 4.24
573
+ },
574
+ // Crops
575
+ {
576
+ symbol: "ZC" /* CORN */,
577
+ name: "Corn",
578
+ sector: "Crops" /* CROPS */,
579
+ exchange: 1 /* CBOT */,
580
+ tickSize: 0.25,
581
+ tickValue: 12.5,
582
+ roundTripFees: 4.3
583
+ },
584
+ {
585
+ symbol: "ZW" /* WHEAT */,
586
+ name: "Wheat",
587
+ sector: "Crops" /* CROPS */,
588
+ exchange: 1 /* CBOT */,
589
+ tickSize: 0.25,
590
+ tickValue: 12.5,
591
+ roundTripFees: 4.3
592
+ },
593
+ {
594
+ symbol: "ZS" /* SOYBEANS */,
595
+ name: "Soybeans",
596
+ sector: "Crops" /* CROPS */,
597
+ exchange: 1 /* CBOT */,
598
+ tickSize: 0.25,
599
+ tickValue: 12.5,
600
+ roundTripFees: 4.3
601
+ },
602
+ {
603
+ symbol: "ZM" /* SOYBEAN_MEAL */,
604
+ name: "Soybean Meal",
605
+ sector: "Crops" /* CROPS */,
606
+ exchange: 1 /* CBOT */,
607
+ tickSize: 0.1,
608
+ tickValue: 10,
609
+ roundTripFees: 4.3
610
+ },
611
+ {
612
+ symbol: "ZL" /* SOYBEAN_OIL */,
613
+ name: "Soybean Oil",
614
+ sector: "Crops" /* CROPS */,
615
+ exchange: 1 /* CBOT */,
616
+ tickSize: 0.01,
617
+ tickValue: 6,
618
+ roundTripFees: 4.3
619
+ },
620
+ // Gas & Oil
621
+ {
622
+ symbol: "NG" /* NATURAL_GAS */,
623
+ name: "Natural Gas",
624
+ sector: "Gas & Oil" /* GAS_AND_OIL */,
625
+ exchange: 3 /* NYMEX */,
626
+ tickSize: 1e-3,
627
+ tickValue: 10,
628
+ roundTripFees: 3.2
629
+ },
630
+ {
631
+ symbol: "MNG" /* MICRO_NATURAL_GAS */,
632
+ name: "Micro Henry Hub Natural Gas",
633
+ sector: "Gas & Oil" /* GAS_AND_OIL */,
634
+ exchange: 3 /* NYMEX */,
635
+ tickSize: 1e-3,
636
+ tickValue: 1,
637
+ roundTripFees: 1.24
638
+ },
639
+ {
640
+ symbol: "QG" /* E_MINI_NATURAL_GAS */,
641
+ name: "E-mini Natural Gas",
642
+ sector: "Gas & Oil" /* GAS_AND_OIL */,
643
+ exchange: 3 /* NYMEX */,
644
+ tickSize: 5e-3,
645
+ tickValue: 12.5,
646
+ roundTripFees: 1.04
647
+ },
648
+ {
649
+ symbol: "RB" /* RBOB_GASOLINE */,
650
+ name: "RBOB Gasoline",
651
+ sector: "Gas & Oil" /* GAS_AND_OIL */,
652
+ exchange: 3 /* NYMEX */,
653
+ tickSize: 1e-4,
654
+ tickValue: 4.2,
655
+ roundTripFees: 3.04
656
+ },
657
+ {
658
+ symbol: "CL" /* CRUDE_OIL */,
659
+ name: "Crude Oil",
660
+ sector: "Gas & Oil" /* GAS_AND_OIL */,
661
+ exchange: 3 /* NYMEX */,
662
+ tickSize: 0.01,
663
+ tickValue: 10,
664
+ roundTripFees: 3.04
665
+ },
666
+ {
667
+ symbol: "MCL" /* MICRO_CRUDE_OIL */,
668
+ name: "Micro Crude Oil",
669
+ sector: "Gas & Oil" /* GAS_AND_OIL */,
670
+ exchange: 3 /* NYMEX */,
671
+ tickSize: 0.01,
672
+ tickValue: 1,
673
+ roundTripFees: 1.04
674
+ },
675
+ {
676
+ symbol: "QM" /* E_MINI_CRUDE_OIL */,
677
+ name: "E-mini Crude Oil",
678
+ sector: "Gas & Oil" /* GAS_AND_OIL */,
679
+ exchange: 3 /* NYMEX */,
680
+ tickSize: 0.025,
681
+ tickValue: 12.5,
682
+ roundTripFees: 2.44
683
+ },
684
+ {
685
+ symbol: "HO" /* HEATING_OIL */,
686
+ name: "Heating Oil",
687
+ sector: "Gas & Oil" /* GAS_AND_OIL */,
688
+ exchange: 3 /* NYMEX */,
689
+ tickSize: 1e-4,
690
+ tickValue: 4.2,
691
+ roundTripFees: 3.04
692
+ },
693
+ // Notes & Bonds
694
+ {
695
+ symbol: "ZT" /* TWO_YEAR_NOTE */,
696
+ name: "2-Year Note",
697
+ sector: "Notes & Bonds" /* NOTES_AND_BONDS */,
698
+ exchange: 1 /* CBOT */,
699
+ tickSize: 78125e-7,
700
+ tickValue: 15.625,
701
+ roundTripFees: 1.34
702
+ },
703
+ {
704
+ symbol: "ZF" /* FIVE_YEAR_NOTE */,
705
+ name: "5-Year Note",
706
+ sector: "Notes & Bonds" /* NOTES_AND_BONDS */,
707
+ exchange: 1 /* CBOT */,
708
+ tickSize: 78125e-7,
709
+ tickValue: 15.625,
710
+ roundTripFees: 1.34
711
+ },
712
+ {
713
+ symbol: "ZN" /* TEN_YEAR_NOTE */,
714
+ name: "10-Year Note",
715
+ sector: "Notes & Bonds" /* NOTES_AND_BONDS */,
716
+ exchange: 1 /* CBOT */,
717
+ tickSize: 0.015625,
718
+ tickValue: 15.625,
719
+ roundTripFees: 1.6
720
+ },
721
+ {
722
+ symbol: "TN" /* TEN_YEAR_ULTRA_NOTE */,
723
+ name: "10-Year Ultra-Note",
724
+ sector: "Notes & Bonds" /* NOTES_AND_BONDS */,
725
+ exchange: 1 /* CBOT */,
726
+ tickSize: 0.015625,
727
+ tickValue: 15.625,
728
+ roundTripFees: 1.64
729
+ },
730
+ {
731
+ symbol: "ZB" /* THIRTY_YEAR_BOND */,
732
+ name: "30-Year Bond",
733
+ sector: "Notes & Bonds" /* NOTES_AND_BONDS */,
734
+ exchange: 1 /* CBOT */,
735
+ tickSize: 0.03125,
736
+ tickValue: 31.25,
737
+ roundTripFees: 1.78
738
+ },
739
+ {
740
+ symbol: "UB" /* ULTRA_BOND */,
741
+ name: "Ultra-Bond",
742
+ sector: "Notes & Bonds" /* NOTES_AND_BONDS */,
743
+ exchange: 1 /* CBOT */,
744
+ tickSize: 0.03125,
745
+ tickValue: 31.25,
746
+ roundTripFees: 1.94
747
+ },
748
+ // Metals
749
+ {
750
+ symbol: "GC" /* GOLD */,
751
+ name: "Gold",
752
+ sector: "Metals" /* METALS */,
753
+ exchange: 2 /* COMEX */,
754
+ tickSize: 0.1,
755
+ tickValue: 10,
756
+ roundTripFees: 3.24
757
+ },
758
+ {
759
+ symbol: "MGC" /* MICRO_GOLD */,
760
+ name: "Micro Gold",
761
+ sector: "Metals" /* METALS */,
762
+ exchange: 2 /* COMEX */,
763
+ tickSize: 0.1,
764
+ tickValue: 1,
765
+ roundTripFees: 1.24
766
+ },
767
+ {
768
+ symbol: "SI" /* SILVER */,
769
+ name: "Silver",
770
+ sector: "Metals" /* METALS */,
771
+ exchange: 2 /* COMEX */,
772
+ tickSize: 5e-3,
773
+ tickValue: 25,
774
+ roundTripFees: 3.24
775
+ },
776
+ {
777
+ symbol: "SIL" /* MICRO_SILVER */,
778
+ name: "Micro Silver",
779
+ sector: "Metals" /* METALS */,
780
+ exchange: 2 /* COMEX */,
781
+ tickSize: 5e-3,
782
+ tickValue: 2.5,
783
+ roundTripFees: 2.04
784
+ },
785
+ {
786
+ symbol: "HG" /* COPPER */,
787
+ name: "Copper",
788
+ sector: "Metals" /* METALS */,
789
+ exchange: 2 /* COMEX */,
790
+ tickSize: 5e-4,
791
+ tickValue: 12.5,
792
+ roundTripFees: 3.24
793
+ },
794
+ {
795
+ symbol: "MHG" /* MICRO_COPPER */,
796
+ name: "Micro Copper",
797
+ sector: "Metals" /* METALS */,
798
+ exchange: 2 /* COMEX */,
799
+ tickSize: 5e-4,
800
+ tickValue: 1.25,
801
+ roundTripFees: 1.24
802
+ },
803
+ {
804
+ symbol: "PL" /* PLATINUM */,
805
+ name: "Platinum",
806
+ sector: "Metals" /* METALS */,
807
+ exchange: 3 /* NYMEX */,
808
+ tickSize: 0.1,
809
+ tickValue: 5,
810
+ roundTripFees: 3.24
811
+ },
812
+ // Crypto
813
+ {
814
+ symbol: "MBT" /* MICRO_BITCOIN */,
815
+ name: "Micro Bitcoin",
816
+ sector: "Crypto" /* CRYPTO */,
817
+ exchange: 0 /* CME */,
818
+ tickSize: 5,
819
+ tickValue: 0.5,
820
+ roundTripFees: 2.34
821
+ },
822
+ {
823
+ symbol: "MET" /* MICRO_ETHER */,
824
+ name: "Micro Ether",
825
+ sector: "Crypto" /* CRYPTO */,
826
+ exchange: 0 /* CME */,
827
+ tickSize: 0.25,
828
+ tickValue: 0.125,
829
+ roundTripFees: 0.24
830
+ }
831
+ ]
832
+ );
833
+
834
+ // src/rest/contract/cme/cme.contract.store.ts
835
+ var CmeContractStore = class {
836
+ static getContracts() {
837
+ return CME_CONTRACTS;
838
+ }
839
+ static getContractsBySector() {
840
+ const sectors = [...new Set(CME_CONTRACTS.map((c) => c.sector))];
841
+ return sectors.map((sector) => ({
842
+ sector,
843
+ contracts: CME_CONTRACTS.filter((c) => c.sector === sector)
844
+ }));
845
+ }
846
+ static getContractBySymbol(symbol) {
847
+ return CME_CONTRACTS.find((c) => c.symbol === symbol);
848
+ }
849
+ static getSectors() {
850
+ return [...new Set(CME_CONTRACTS.map((c) => c.sector))];
851
+ }
852
+ static matchTradeNameToContract(trade) {
853
+ const contractSymbol = trade.contractId.substring(0, 3).toUpperCase();
854
+ const contract = CME_CONTRACTS.find((c) => c.symbol === contractSymbol);
855
+ if (!contract) {
856
+ const twoCharCode = contractSymbol.substring(0, 2);
857
+ return CME_CONTRACTS.find((c) => c.symbol === twoCharCode);
858
+ }
859
+ return contract;
860
+ }
861
+ static groupTradesBySector(trades = []) {
862
+ const sectorMap = /* @__PURE__ */ new Map();
863
+ this.getSectors().forEach((sector) => {
864
+ sectorMap.set(sector, []);
865
+ });
866
+ trades.forEach((trade) => {
867
+ const contract = this.matchTradeNameToContract(trade);
868
+ if (contract) {
869
+ const sectorTrades = sectorMap.get(contract.sector) || [];
870
+ sectorTrades.push(trade);
871
+ sectorMap.set(contract.sector, sectorTrades);
872
+ }
873
+ });
874
+ return this.getSectors().map((sector) => ({
875
+ sector,
876
+ trades: sectorMap.get(sector) || []
877
+ }));
878
+ }
879
+ static matchContractNameToGlobexCode(contractName) {
880
+ return CME_CONTRACTS.find((c) => contractName.startsWith(c.symbol));
881
+ }
882
+ };
883
+
371
884
  // src/rest/history/history.api.ts
372
885
  var HistoryApi = class {
373
886
  constructor(http) {
@@ -445,7 +958,7 @@ var ConnectionManager = class {
445
958
  }
446
959
  };
447
960
 
448
- // src/utils/event-emitter.ts
961
+ // src/utils/typed.event.emitter.ts
449
962
  var TypedEventEmitter = class {
450
963
  listeners = /* @__PURE__ */ new Map();
451
964
  on(event, callback) {
@@ -492,8 +1005,8 @@ var TypedEventEmitter = class {
492
1005
  }
493
1006
  };
494
1007
 
495
- // src/realtime/market/market-hub.ts
496
- var MarketHub = class extends TypedEventEmitter {
1008
+ // src/realtime/market/realtime.market.event.hub.ts
1009
+ var RealtimeMarketEventHub = class extends TypedEventEmitter {
497
1010
  constructor(connectionManager) {
498
1011
  super();
499
1012
  this.connectionManager = connectionManager;
@@ -504,9 +1017,12 @@ var MarketHub = class extends TypedEventEmitter {
504
1017
  subscribedDepth = /* @__PURE__ */ new Set();
505
1018
  setupEventHandlers() {
506
1019
  this.connectionManager.onMarketConnection((connection) => {
507
- connection.on("GatewayQuote", (contractId, data) => {
508
- this.emit("quote", { contractId, data });
509
- });
1020
+ connection.on(
1021
+ "GatewayQuote",
1022
+ (contractId, data) => {
1023
+ this.emit("quote", { contractId, data });
1024
+ }
1025
+ );
510
1026
  connection.on(
511
1027
  "GatewayTrade",
512
1028
  (contractId, data) => {
@@ -573,8 +1089,8 @@ var MarketHub = class extends TypedEventEmitter {
573
1089
  }
574
1090
  };
575
1091
 
576
- // src/realtime/user/user-hub.ts
577
- var UserHub = class extends TypedEventEmitter {
1092
+ // src/realtime/user/realtime.user.event.hub.ts
1093
+ var RealtimeUserEventHub = class extends TypedEventEmitter {
578
1094
  constructor(connectionManager) {
579
1095
  super();
580
1096
  this.connectionManager = connectionManager;
@@ -585,18 +1101,30 @@ var UserHub = class extends TypedEventEmitter {
585
1101
  subscribedTrades = /* @__PURE__ */ new Set();
586
1102
  setupEventHandlers() {
587
1103
  this.connectionManager.onUserConnection((connection) => {
588
- connection.on("GatewayUserAccount", (data) => {
589
- this.emit("account", data);
590
- });
591
- connection.on("GatewayUserOrder", (data) => {
592
- this.emit("order", data);
593
- });
594
- connection.on("GatewayUserPosition", (data) => {
595
- this.emit("position", data);
596
- });
597
- connection.on("GatewayUserTrade", (data) => {
598
- this.emit("trade", data);
599
- });
1104
+ connection.on(
1105
+ "GatewayUserAccount",
1106
+ (data) => {
1107
+ this.emit("account", data);
1108
+ }
1109
+ );
1110
+ connection.on(
1111
+ "GatewayUserOrder",
1112
+ (data) => {
1113
+ this.emit("order", data);
1114
+ }
1115
+ );
1116
+ connection.on(
1117
+ "GatewayUserPosition",
1118
+ (data) => {
1119
+ this.emit("position", data);
1120
+ }
1121
+ );
1122
+ connection.on(
1123
+ "GatewayUserTrade",
1124
+ (data) => {
1125
+ this.emit("trade", data);
1126
+ }
1127
+ );
600
1128
  });
601
1129
  }
602
1130
  async subscribe(accountId) {
@@ -651,7 +1179,7 @@ var UserHub = class extends TypedEventEmitter {
651
1179
  }
652
1180
  };
653
1181
 
654
- // src/client.ts
1182
+ // src/topstep.x.client.ts
655
1183
  var TopstepXClient = class extends TypedEventEmitter {
656
1184
  auth;
657
1185
  connectionManager;
@@ -697,8 +1225,8 @@ var TopstepXClient = class extends TypedEventEmitter {
697
1225
  userHubUrl: config.userHubUrl ?? "https://rtc.topstepx.com/hubs/user",
698
1226
  auth: this.auth
699
1227
  });
700
- this.marketHub = new MarketHub(this.connectionManager);
701
- this.userHub = new UserHub(this.connectionManager);
1228
+ this.marketHub = new RealtimeMarketEventHub(this.connectionManager);
1229
+ this.userHub = new RealtimeUserEventHub(this.connectionManager);
702
1230
  }
703
1231
  /**
704
1232
  * Connect to the TopstepX API.
@@ -731,70 +1259,52 @@ var TopstepXClient = class extends TypedEventEmitter {
731
1259
  }
732
1260
  };
733
1261
 
734
- // src/types/enums.ts
735
- var OrderType = /* @__PURE__ */ ((OrderType2) => {
736
- OrderType2[OrderType2["Limit"] = 1] = "Limit";
737
- OrderType2[OrderType2["Market"] = 2] = "Market";
738
- OrderType2[OrderType2["Stop"] = 3] = "Stop";
739
- OrderType2[OrderType2["StopLimit"] = 4] = "StopLimit";
740
- return OrderType2;
741
- })(OrderType || {});
742
- var OrderSide = /* @__PURE__ */ ((OrderSide2) => {
743
- OrderSide2[OrderSide2["Buy"] = 0] = "Buy";
744
- OrderSide2[OrderSide2["Sell"] = 1] = "Sell";
745
- return OrderSide2;
746
- })(OrderSide || {});
747
- var OrderStatus = /* @__PURE__ */ ((OrderStatus2) => {
748
- OrderStatus2[OrderStatus2["Pending"] = 0] = "Pending";
749
- OrderStatus2[OrderStatus2["Working"] = 1] = "Working";
750
- OrderStatus2[OrderStatus2["Filled"] = 2] = "Filled";
751
- OrderStatus2[OrderStatus2["Cancelled"] = 3] = "Cancelled";
752
- OrderStatus2[OrderStatus2["Rejected"] = 4] = "Rejected";
753
- OrderStatus2[OrderStatus2["PartiallyFilled"] = 5] = "PartiallyFilled";
754
- return OrderStatus2;
755
- })(OrderStatus || {});
756
- var BarUnit = /* @__PURE__ */ ((BarUnit2) => {
757
- BarUnit2[BarUnit2["Second"] = 1] = "Second";
758
- BarUnit2[BarUnit2["Minute"] = 2] = "Minute";
759
- BarUnit2[BarUnit2["Hour"] = 3] = "Hour";
760
- BarUnit2[BarUnit2["Day"] = 4] = "Day";
761
- BarUnit2[BarUnit2["Week"] = 5] = "Week";
762
- BarUnit2[BarUnit2["Month"] = 6] = "Month";
763
- return BarUnit2;
764
- })(BarUnit || {});
765
- var PositionType = /* @__PURE__ */ ((PositionType2) => {
766
- PositionType2[PositionType2["Long"] = 0] = "Long";
767
- PositionType2[PositionType2["Short"] = 1] = "Short";
768
- return PositionType2;
769
- })(PositionType || {});
770
- var TradeType = /* @__PURE__ */ ((TradeType2) => {
771
- TradeType2[TradeType2["Bid"] = 0] = "Bid";
772
- TradeType2[TradeType2["Ask"] = 1] = "Ask";
773
- return TradeType2;
774
- })(TradeType || {});
1262
+ // src/shared/order.status.enum.ts
1263
+ var OrderStatusEnum = /* @__PURE__ */ ((OrderStatusEnum2) => {
1264
+ OrderStatusEnum2[OrderStatusEnum2["Pending"] = 0] = "Pending";
1265
+ OrderStatusEnum2[OrderStatusEnum2["Working"] = 1] = "Working";
1266
+ OrderStatusEnum2[OrderStatusEnum2["Filled"] = 2] = "Filled";
1267
+ OrderStatusEnum2[OrderStatusEnum2["Cancelled"] = 3] = "Cancelled";
1268
+ OrderStatusEnum2[OrderStatusEnum2["Rejected"] = 4] = "Rejected";
1269
+ OrderStatusEnum2[OrderStatusEnum2["PartiallyFilled"] = 5] = "PartiallyFilled";
1270
+ return OrderStatusEnum2;
1271
+ })(OrderStatusEnum || {});
1272
+
1273
+ // src/shared/position.type.enum.ts
1274
+ var PositionTypeEnum = /* @__PURE__ */ ((PositionTypeEnum2) => {
1275
+ PositionTypeEnum2[PositionTypeEnum2["Long"] = 0] = "Long";
1276
+ PositionTypeEnum2[PositionTypeEnum2["Short"] = 1] = "Short";
1277
+ return PositionTypeEnum2;
1278
+ })(PositionTypeEnum || {});
1279
+
1280
+ // src/shared/trade.type.enum.ts
1281
+ var TradeTypeEnum = /* @__PURE__ */ ((TradeTypeEnum2) => {
1282
+ TradeTypeEnum2[TradeTypeEnum2["Bid"] = 0] = "Bid";
1283
+ TradeTypeEnum2[TradeTypeEnum2["Ask"] = 1] = "Ask";
1284
+ return TradeTypeEnum2;
1285
+ })(TradeTypeEnum || {});
775
1286
 
776
1287
  exports.AccountApi = AccountApi;
777
1288
  exports.ApiError = ApiError;
778
1289
  exports.AuthService = AuthService;
779
1290
  exports.AuthenticationError = AuthenticationError;
780
- exports.BarUnit = BarUnit;
1291
+ exports.CME_CONTRACTS = CME_CONTRACTS;
1292
+ exports.CmeContractStore = CmeContractStore;
781
1293
  exports.ConnectionError = ConnectionError;
782
1294
  exports.ConnectionManager = ConnectionManager;
783
1295
  exports.ContractApi = ContractApi;
784
1296
  exports.HistoryApi = HistoryApi;
785
1297
  exports.HttpClient = HttpClient;
786
- exports.MarketHub = MarketHub;
787
1298
  exports.OrderApi = OrderApi;
788
- exports.OrderSide = OrderSide;
789
- exports.OrderStatus = OrderStatus;
790
- exports.OrderType = OrderType;
1299
+ exports.OrderStatusEnum = OrderStatusEnum;
791
1300
  exports.PositionApi = PositionApi;
792
- exports.PositionType = PositionType;
1301
+ exports.PositionTypeEnum = PositionTypeEnum;
1302
+ exports.RealtimeMarketEventHub = RealtimeMarketEventHub;
1303
+ exports.RealtimeUserEventHub = RealtimeUserEventHub;
793
1304
  exports.TopstepXClient = TopstepXClient;
794
1305
  exports.TopstepXError = TopstepXError;
795
1306
  exports.TradeApi = TradeApi;
796
- exports.TradeType = TradeType;
1307
+ exports.TradeTypeEnum = TradeTypeEnum;
797
1308
  exports.TypedEventEmitter = TypedEventEmitter;
798
- exports.UserHub = UserHub;
799
1309
  //# sourceMappingURL=index.cjs.map
800
1310
  //# sourceMappingURL=index.cjs.map