topstepx-api 1.0.3 → 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;
@@ -576,8 +1089,8 @@ var MarketHub = class extends TypedEventEmitter {
576
1089
  }
577
1090
  };
578
1091
 
579
- // src/realtime/user/user-hub.ts
580
- var UserHub = class extends TypedEventEmitter {
1092
+ // src/realtime/user/realtime.user.event.hub.ts
1093
+ var RealtimeUserEventHub = class extends TypedEventEmitter {
581
1094
  constructor(connectionManager) {
582
1095
  super();
583
1096
  this.connectionManager = connectionManager;
@@ -588,18 +1101,30 @@ var UserHub = class extends TypedEventEmitter {
588
1101
  subscribedTrades = /* @__PURE__ */ new Set();
589
1102
  setupEventHandlers() {
590
1103
  this.connectionManager.onUserConnection((connection) => {
591
- connection.on("GatewayUserAccount", (data) => {
592
- this.emit("account", data);
593
- });
594
- connection.on("GatewayUserOrder", (data) => {
595
- this.emit("order", data);
596
- });
597
- connection.on("GatewayUserPosition", (data) => {
598
- this.emit("position", data);
599
- });
600
- connection.on("GatewayUserTrade", (data) => {
601
- this.emit("trade", data);
602
- });
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
+ );
603
1128
  });
604
1129
  }
605
1130
  async subscribe(accountId) {
@@ -654,7 +1179,7 @@ var UserHub = class extends TypedEventEmitter {
654
1179
  }
655
1180
  };
656
1181
 
657
- // src/client.ts
1182
+ // src/topstep.x.client.ts
658
1183
  var TopstepXClient = class extends TypedEventEmitter {
659
1184
  auth;
660
1185
  connectionManager;
@@ -700,8 +1225,8 @@ var TopstepXClient = class extends TypedEventEmitter {
700
1225
  userHubUrl: config.userHubUrl ?? "https://rtc.topstepx.com/hubs/user",
701
1226
  auth: this.auth
702
1227
  });
703
- this.marketHub = new MarketHub(this.connectionManager);
704
- this.userHub = new UserHub(this.connectionManager);
1228
+ this.marketHub = new RealtimeMarketEventHub(this.connectionManager);
1229
+ this.userHub = new RealtimeUserEventHub(this.connectionManager);
705
1230
  }
706
1231
  /**
707
1232
  * Connect to the TopstepX API.
@@ -734,70 +1259,52 @@ var TopstepXClient = class extends TypedEventEmitter {
734
1259
  }
735
1260
  };
736
1261
 
737
- // src/types/enums.ts
738
- var OrderType = /* @__PURE__ */ ((OrderType2) => {
739
- OrderType2[OrderType2["Limit"] = 1] = "Limit";
740
- OrderType2[OrderType2["Market"] = 2] = "Market";
741
- OrderType2[OrderType2["Stop"] = 3] = "Stop";
742
- OrderType2[OrderType2["StopLimit"] = 4] = "StopLimit";
743
- return OrderType2;
744
- })(OrderType || {});
745
- var OrderSide = /* @__PURE__ */ ((OrderSide2) => {
746
- OrderSide2[OrderSide2["Buy"] = 0] = "Buy";
747
- OrderSide2[OrderSide2["Sell"] = 1] = "Sell";
748
- return OrderSide2;
749
- })(OrderSide || {});
750
- var OrderStatus = /* @__PURE__ */ ((OrderStatus2) => {
751
- OrderStatus2[OrderStatus2["Pending"] = 0] = "Pending";
752
- OrderStatus2[OrderStatus2["Working"] = 1] = "Working";
753
- OrderStatus2[OrderStatus2["Filled"] = 2] = "Filled";
754
- OrderStatus2[OrderStatus2["Cancelled"] = 3] = "Cancelled";
755
- OrderStatus2[OrderStatus2["Rejected"] = 4] = "Rejected";
756
- OrderStatus2[OrderStatus2["PartiallyFilled"] = 5] = "PartiallyFilled";
757
- return OrderStatus2;
758
- })(OrderStatus || {});
759
- var BarUnit = /* @__PURE__ */ ((BarUnit2) => {
760
- BarUnit2[BarUnit2["Second"] = 1] = "Second";
761
- BarUnit2[BarUnit2["Minute"] = 2] = "Minute";
762
- BarUnit2[BarUnit2["Hour"] = 3] = "Hour";
763
- BarUnit2[BarUnit2["Day"] = 4] = "Day";
764
- BarUnit2[BarUnit2["Week"] = 5] = "Week";
765
- BarUnit2[BarUnit2["Month"] = 6] = "Month";
766
- return BarUnit2;
767
- })(BarUnit || {});
768
- var PositionType = /* @__PURE__ */ ((PositionType2) => {
769
- PositionType2[PositionType2["Long"] = 0] = "Long";
770
- PositionType2[PositionType2["Short"] = 1] = "Short";
771
- return PositionType2;
772
- })(PositionType || {});
773
- var TradeType = /* @__PURE__ */ ((TradeType2) => {
774
- TradeType2[TradeType2["Bid"] = 0] = "Bid";
775
- TradeType2[TradeType2["Ask"] = 1] = "Ask";
776
- return TradeType2;
777
- })(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 || {});
778
1286
 
779
1287
  exports.AccountApi = AccountApi;
780
1288
  exports.ApiError = ApiError;
781
1289
  exports.AuthService = AuthService;
782
1290
  exports.AuthenticationError = AuthenticationError;
783
- exports.BarUnit = BarUnit;
1291
+ exports.CME_CONTRACTS = CME_CONTRACTS;
1292
+ exports.CmeContractStore = CmeContractStore;
784
1293
  exports.ConnectionError = ConnectionError;
785
1294
  exports.ConnectionManager = ConnectionManager;
786
1295
  exports.ContractApi = ContractApi;
787
1296
  exports.HistoryApi = HistoryApi;
788
1297
  exports.HttpClient = HttpClient;
789
- exports.MarketHub = MarketHub;
790
1298
  exports.OrderApi = OrderApi;
791
- exports.OrderSide = OrderSide;
792
- exports.OrderStatus = OrderStatus;
793
- exports.OrderType = OrderType;
1299
+ exports.OrderStatusEnum = OrderStatusEnum;
794
1300
  exports.PositionApi = PositionApi;
795
- exports.PositionType = PositionType;
1301
+ exports.PositionTypeEnum = PositionTypeEnum;
1302
+ exports.RealtimeMarketEventHub = RealtimeMarketEventHub;
1303
+ exports.RealtimeUserEventHub = RealtimeUserEventHub;
796
1304
  exports.TopstepXClient = TopstepXClient;
797
1305
  exports.TopstepXError = TopstepXError;
798
1306
  exports.TradeApi = TradeApi;
799
- exports.TradeType = TradeType;
1307
+ exports.TradeTypeEnum = TradeTypeEnum;
800
1308
  exports.TypedEventEmitter = TypedEventEmitter;
801
- exports.UserHub = UserHub;
802
1309
  //# sourceMappingURL=index.cjs.map
803
1310
  //# sourceMappingURL=index.cjs.map